Communitygithub.com

数字人视频制作管线(本机已全链验证 ✅)

Eine vollständig lokal validierte Pipeline zur Erstellung von KI-gestützten digitalen Menschen-Videos: vom Skript über Sprachklon und Mundsync bis hin zur finalen Compositing-Auslieferung.

Was ist 数字人视频制作管线(本机已全链验证 ✅)?

Diese Pipeline ist ein vollständig integrierter Workflow zur Erstellung von digitalen Menschen-Videos, der speziell für den lokalen Betrieb optimiert und auf dem Entwicklungsrechner des Autors vollständig getestet wurde. Sie umfasst sechs Prozessschritte: [1] Master-Audio-Aufnahme, [2] ASR Transkription und Segmentierung, [3] MiniMax Sprachklon (B2-Rezeptur), [4] HeyGen Foto-Avatar mit Lippen-Synchronisation, [5] HyperFrames transparente Overlays (ProRes 4444) und [6] ffmpeg Final-Compositing (Untertitel, Soundeffekte, Hintergrundmusik, Loudness). Ein entscheidendes, optionales „Gate“ vor Schritt [1] erzwingt die textuelle Konsistenz von Slogans und Schlussformulierungen, um unbeabsichtigte Abweichungen zu verhindern. Die Pipeline läuft auf Windows und verwendet spezifische Python-Umgebungen, lokale Tools und API-Schlüssel (MiniMax, HeyGen). Sie liefert fertige Videoclips mit optimierten Audio-Parametern (-14 LUFS), Untertiteln und einem getesteten BGM/Sound-Design-Schema. Ein detailliertes Kosten-Ledger und eine Abnahmeliste runden die Lösung ab.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add frankhzh-source/digital-human-video-pipeline

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Pipeline zur Erstellung von Digital-Human-Videos (lokal vollständig verifiziert ✅)

Am 2026-09-21/22 getestet: 74,8s Voice-Over → 15,6s Testclip (A7-Erscheinungsbild + MiniMax Sprachklon + HyperFrames Compositing) war zu 100 % erfolgreich. Alle Skripte befinden sich unter D:\workbuddy\Claw\Claw und werden mit D:/Anaconda3/envs/ai/python.exe -X utf8 ausgeführt (faster_whisper befindet sich in dieser Umgebung). Ergänzung vom 2026-09-29: [0] Textkonsistenz-Gate – Slogans/Schussformulierungen wurden zweimal ungewollt umformuliert (siehe Gate-Abschnitt); nun ein obligatorischer, vorentscheidender Schritt.

Prozessübersicht (Gate + 6 Schritte)

[0] Text-Gate (obligatorisch) → [1] Master-Audio → [2] ASR Transkription + Segmenttabelle → [3] MiniMax Sprachklon (B2-Rezeptur)
    → [4] HeyGen Foto-Avatar + Lipsync → [5] HyperFrames transparente Overlays (ProRes4444)
    → [6] ffmpeg Compositing (Untertitel/Soundeffekte/BGM/Lautstärke) → Endclip + Cover

[0] Textkonsistenz-Gate (obligatorisch, Veto, vor allen Generierungsschritten)

Hintergrund: Slogans/Schussformulierungen wurden zweimal ungewollt umformuliert (am 2026-09-28 wurden die ersten vier Fragen umformuliert + der Slogan verloren, Nacharbeit 24 Credits; am 2026-09-29 wurde „Quelle besetzen“ durch „Pflichtfach“ ersetzt). Lektion: Sich auf Erinnerung/Disziplin zu verlassen, ist unzuverlässig – Regeln stehen im Gedächtnis, Verstöße passieren mitten in der Aufgabe, wenn die Regeln nicht mehr im Kontext sind. Die Lösung ist, „Disziplin“ durch „Mechanismus“ zu ersetzen: Registry + Skript-Hard-Validierung + manuelles Gate.

Drei eiserne Regeln:

  1. Slogans/Schussformulierungen müssen Zeichen für Zeichen mit der Quelle abgeglichen werden – Quelle = ANCHOR-Abschnitt der segmentierten TTS-Skripte oder die Untertitelquelle des Endclips. Eigenformulierungen und „Voice-Over-Anpassungen“ sind verboten.
  2. Zuerst den Originaltext zitieren: Bevor ein neuer Absatz erstellt wird, muss der Originaltext mit dem Slogan dem Benutzer vorgelegt werden; erst nach Bestätigung darf die Generierung fortgesetzt werden.
  3. Vor kostenpflichtiger Generierung das Gate passieren: Vor Aktionen, die Credits kosten (TTS/HeyGen usw.), muss die Slogan-Prüfung bestanden sein.

Vorgehen (zwei Komponenten):

  • Registry: 文案规范_定稿.json (einzige autoritative Quelle; neu festgelegte Sätze müssen vom Benutzer bestätigt und dann eingetragen werden).
  • Prüfung: D:/Anaconda3/envs/ai/python.exe -X utf8 工具_口号校验.py <Zieldateien...>
    • Unterstützt .md/.txt/.json (direktes Einlesen), .ass (Tags entfernen, Untertiteltext extrahieren), .py (String-Literale extrahieren, deckt TTS-Konstanten ab).
    • Automatische Normalisierung von Interpunktion/Leerzeichen, dann Substring-Matching; closed_targets werden nur gemeldet, nicht blockiert.
    • exit 0 = PASS, Generierung kann fortgesetzt werden; exit 1 = FAIL, kostenpflichtige Generierung gesperrt; --self-test für Selbsttest.
  • Detaillierte Mechanismuserklärung: references/copy-slogan-gate.md (Veröffentlichungsversion).

Gate-Einbettungspunkte (jeweils nacheinander bei jeder Episode ausführen):

ZeitpunktAktion
Nach dem Entwurf, vor TTS工具_口号校验.py 工具_第XX期TTS.py → muss PASS sein
Vor HeyGen-ÜbermittlungErneute Prüfung (verhindert Drift durch Zwischenänderungen)
Nach Final-Compositing, vor Veröffentlichung工具_口号校验.py <sub.ass> <Veröffentlichungstext.md> → PASS erlaubt Veröffentlichung via Feishu/anderweitig
FehlerbehandlungZeichen für Zeichen aus der Quelle zurücksetzen; bei tatsächlich neuen Sätzen → Benutzerentscheid → Registry aktualisieren → erneut PASS

[1] Master-Anforderungen

  • Satzende vollständig (keine abgeschnittenen Versionen); Loudness -16 LUFS; 30–90s saubere Aufnahme kann auch als Klon-Registrierungsmaterial dienen.
  • Für die Klon-Registrierung 音频_口播原声_092211_句末收尾_69秒.m4a verwenden (nicht die 74,8s Halbsatz-Version).

[2] ASR Transkription + Segmenttabelle

D:/Anaconda3/envs/ai/python.exe -X utf8 工具_播客ASR转写.py <Audio> --md 转写_xxx.md
  • Ausgabe mit Wort-Zeitstempeln (.asr_cache/*.json wird gecacht; Wiederholung ist sofort); basierend auf der Transkription in ca. 5 Segmente unterteilen, S1–S5 markieren und Informationspunkte notieren.
  • Testsegment 18–30s wählen: Abschnitte mit gemischtem Chinesisch/Englisch und Pausen sind am repräsentativsten.

[3] MiniMax Sprachklon + Vertonung

Tool: 工具_MiniMax声音克隆_通用.py (Schlüssel .secrets/minimax.key + minimax_group.txt, direkte Verbindung über Inlandsserver, kein Proxy nötig).

  • --check kostenlos → --clone --yes klonen (voice_id-Regel: ≥8 alphanumerische Zeichen, beginnend mit Buchstaben, haifengv1 verwenden) → --t2a vertonen.
  • Vertonungsrezeptur finalisiert als „B2“: speech-2.8-hd + speed:0.95, keine Emotions-Tags (Benutzerabnahme: Klangfarbe okay, B2-Tonfall akzeptabel).
  • Priorität bei der Anpassung von steifem Tonfall: Skript umgangssprachlicher machen > speed 0.95 > emotion=happy > längeres Material neu klonen.
  • Kostenreferenz: HD 3,5 Yuan pro 10.000 Zeichen, ein Satz < 1 Cent.

[4] HeyGen Digital Human

Voraussetzung: Proxy muss aktiv sein (Überwachung 127.0.0.1:7890 + Konnektivitätstest mcp.heygen.com).

  • Tools: 工具_播客测试片A7_准备_2026-09-21.py (kostenlos: Kontingent/Schema/Erscheinungsbildprüfung/Audio hochladen) → 工具_播客测试片A7_提交_2026-09-21.py (--yes Gate).
  • Erscheinungsbild A7 + avatar_v Engine; Clip innerhalb von Minuten fertig, nach Download probieren und abnehmen.
  • ⚠️ Tatsächlicher Preis ~0,85 Credits/Sekunde (15,7s Clip getestet mit 13 Credits, 559→546). Vor dem Einreichen eines Langclips zuerst mit einem 30s Mittelteil die Kostenabschätzung überprüfen.

[5] HyperFrames transparente Overlays (Karten/Diagramm-Animationen)

Projekt: _cards_hf/compositions/v2_testcard.html (für Textänderungen nur Text + Zeitstempel anpassen).

  • Steuerungsmodus: gsap.timeline({paused:true}) in window.__timelines["main-video"] registrieren + Elemente data-start/data-duration.
  • Rendern (ca. 4,5–5 Minuten Rechenzeit, overlay_v2.mov 172MB bis zur Finalisierung aufbewahren, nicht zwischendurch löschen – einmal gelöscht, erneutes Rendern 5 Minuten):
export PATH="/d/ffmpeg:/c/Users/admin/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin:$PATH"
cd _cards_hf && npx hyperframes render -c compositions/v2_testcard.html -f 25 --format mov \
  -o "../_v2/overlay_v2.mov"
  • ⚠️ Vier unvermeidliche Fallstricke (alle getestet und gelöst):
    1. Wurzelelement muss data-composition-id="..." haben, sonst HF_DE_COMPOSITION_ROOT_MISSING;
    2. Bildformat mit data-width/data-height verwenden (data-composition-width wird nicht gelesen → Ausgabe Hochformat 1080×1920);
    3. Im Rendering-PATH müssen sowohl ffmpeg als auch ffprobe vorhanden sein (D:\ffmpeg hatte einmal kein ffprobe → npm i ffprobe-static --registry=https://registry.npmmirror.com löst in einer Minute; nicht das 114MB Paket von gyan.dev herunterladen – in China ~20KB/s und bricht ab);
    4. Rendering-Ausgabe 1920×1080, bei Compositing auf 1072 skalieren, um mit dem Endclip übereinzustimmen.

[6] ffmpeg Compositing Auslieferung

Tool: 工具_测试片v2合成_2026-09-22.py (für jede Episode kopieren, nur die Konstanten für SRC/OV/Untertitel/Positionen oben ändern).

  • Kette: zoompan Punch-In (bei 8,45/13,25s je 5%) → overlay ProRes4444 → ASS-Untertitel (ass= Pfad muss relativer Pfad mit Schrägstrichen sein; Backslashes werden maskiert und verschluckt) → Soundeffekte-Dreierpaket (adelay für Timing) → BGM-Bett (sidechaincompress für Sprachducking) → loudnorm -14 LUFS;
  • Untertitel: Wort-Zeitstempel-Segmentierung, Hervorhebungen {\c&H6ABEE9&}Wort{\r} (BGR Gold); Cover als Frame bei 13,8s.

BGM / Sound-Design-Schema (bereits dokumentiert: 整理_知识类视频BGM与音效范式_2026-09-22.md)

Wissens-Voice-Over = BGM-Schema B „Informationsbegleiter“: BGM ist das Licht im Klassenzimmer, nicht die Bühnenmusik.

  1. Ohne Melodie (Pluck/Zupfen, nicht „singend“); 2. C4+ mittlerer bis hoher Tonbereich (lange Töne im Bassbereich = Atmosphäre-Drone = bedrückend, Lektion aus v2.2); 3. Stakkato mit Pausen; 4. BPM 88–104 angepasst an Sprechgeschwindigkeit; 5. Frequenzbereich unter 300Hz–3,4kHz ausweichen; Lautstärke -28~-32 LUFS relativ zur Stimme + Sidechain-Ducking (threshold 0.028 / ratio 7 / attack 180ms / release 1000ms).
  • Zwei Voreinstellungen in make_bgm_pluck (Standard) / make_bgm_pad (A/B Alternative), BGM_STYLE wechselt per Wort; für andere Stile nur die Akkordtabelle ändern.

Soundeffekte-Dreierpaket (Rezeptur fest, nur Positionen ändern): whoosh Übergang (lowpass ≤2400) → tick Rückmeldung (1,2–1,6kHz, niedrigste Lautstärke) → thump Betonung (max. 2 Ausrufezeichen im gesamten Clip); Lautstärkeverhältnis Betonung 0,24 : Übergang 0,22 : Rückmeldung 0,165; in jedem 2s-Fenster maximal 1 Punkt.

Kosten-Ledger (gemessene Werte)

PostenKosten
ASR / ffmpeg / HyperFrames / BGM Compositing0
MiniMax Klon9,9 Yuan/Timbre (nur bei erster Synthese); TTS ≈0,02 Yuan/Satz
HeyGen Testclip13 Credits / 15,7s; 69s Langversion geschätzt ~59 Credits, 2:44 Version geschätzt ~140

Abnahmeliste (nach Clip-Erstellung Punkt für Punkt durchgehen)

  1. Slogan-Gate: 工具_口号校验.py <sub.ass> <Veröffentlichungstext.md> PASS (finalisierte Sätze Zeichen für Zeichen vorhanden, eiserne Regeln aus Abschnitt [0]);
  2. volumedetect: mean ≈ -17dB / max ≤ -2.5dB (kein Clipping);
  3. 3 Frames prüfen (Zeitpunkte von Diagramm-Karten / Schlüsselwort-Karten / Fazit-Karten): Gesicht und Hände nicht verdeckt (Sicherheitszone: linke Karte 56–546px, rechte Karte 1150–1860px, oberer Titel 84px, untere Untertitel 200px);
  4. Höreindruck drei Punkte: erste 3s haben Dynamik, Stimme ist präsent, Ende hat ein Gefühl des Verweilens.

ToDo (vor Finalisierung zwingend erledigen)

  • Lang-Master-Version entscheiden: 69s Satzende-Version oder 2:44 vollständigen Abschnitt neu zuschneiden (74,8s Halbsatz-Version deaktiviert);
  • Langclip-Erweiterungen: A7 Abschnittskarten ×5 Segmente, S4 Satz-für-Satz auf Bildschirm einblenden, BGM auf 4–8 Takte Schleife + Outro erweitern, 3s Aufmerksamkeitskarte.

Verwandte Skills