Video zu Chinesisch-Dub
Verwenden Sie die gebündelte Python-Pipeline, um ein vollständiges chinesisch synchronisiertes Video zu erstellen. Geben Sie nicht nur einen vorgeschlagenen Workflow an, wenn der Benutzer eine URL bereitgestellt und um das fertige Artefakt gebeten hat: Führen Sie die Pipeline aus, wenn die Terminalausführung verfügbar ist und der Benutzer die erforderlichen Netzwerk-/Download-Aktionen autorisiert hat.
Erfordert Python 3.10+, FFmpeg/ffprobe, Netzwerkzugriff für URL-Downloads und ein lokales faster-whisper-Modell. Online-Übersetzung und -Sprache sind optional; verwenden Sie das lokale CosyVoice-Backend, wenn natürliches Mandarin ohne eine kostenpflichtige Sprach-API benötigt wird.
Ermitteln Sie <skill-root> als das Verzeichnis, das diese SKILL.md enthält; gehen Sie nicht davon aus, dass das aktuelle Arbeitsverzeichnis des Aufrufers das Skill-Verzeichnis ist. Bevorzugen Sie <skill-root>/.venv/bin/python unter macOS/Linux oder <skill-root>/.venv\Scripts\python.exe unter Windows, wenn diese virtuelle Umgebung existiert; verwenden Sie andernfalls den aktiven Python-Interpreter. Die folgenden Befehle gehen davon aus, dass das aktuelle Verzeichnis auf <skill-root> geändert wurde.
Schnellstart
-
Überprüfen Sie die Voraussetzungen:
python3 scripts/check_environment.py -
Installieren Sie FFmpeg und Python-Abhängigkeiten. Siehe
README.mdfür macOS-, Windows- und Linux-Befehle. -
Für eine natürliche Übersetzung ohne kostenpflichtige API verwenden Sie ein bereits installiertes Ollama-Modell mit
--translation-provider ollama --ollama-model MODELL. Die Pipeline führt es lokal in zwei Durchläufen aus und validiert jede Segment-ID; überprüfen Sie vor der Auslieferung Fachbegriffe und Timing. Wenn kein lokales Modell verfügbar ist, verwenden Sie--translation-provider googlenur mit Erlaubnis als Online-Entwurf und polieren Sie die zeitgestempelten Segmente manuell nach, oder übergeben Sie überprüftes JSON über--segments-file. Verwenden SieOPENAI_API_KEYoderDEEPSEEK_API_KEYnur, wenn dies ausdrücklich erlaubt ist; wechseln Sie niemals zu einer nicht zugelassenen API. -
Konvertieren Sie eine Video-URL (Bilibili, YouTube oder jede von yt-dlp unterstützte Seite):
python3 scripts/translate_video.py "https://www.youtube.com/watch?v=VIDEO_ID" \ --translation-provider ollama --ollama-model MODELL --output-dir ./outputBilibili-URLs können einen Teilparameter wie
?p=2enthalten; übergeben Sie die vollständige Ziel-URL. -
Oder verarbeiten Sie ein lokales Video:
python3 scripts/translate_video.py ./input.mp4 \ --translation-provider ollama --ollama-model MODELL --output-dir ./output
Standardwerte und Optionen
- Die Quellsprache ist standardmäßig Englisch (
--source-language en); verwenden Sieauto, um sie zu erkennen. - Die chinesische Stimme ist standardmäßig
zh-CN-XiaoxiaoNeural; verwenden Sie--voice zh-CN-YunxiNeuralfür eine jüngere männliche Stimme oder--voice zh-CN-YunyangNeuralfür eine männliche Erzählerstimme. - Für eine natürlich klingende, kostenfreie Sprachausgabe pro Aufruf bevorzugen Sie ein lokal installiertes
Fun-CosyVoice3-0.5Bimzero-shot-Modus, wenn eine ausdrücklich autorisierte Referenzclip und ein exaktes Transkript verfügbar sind. Verwenden Sie andernfallsCosyVoice-300M-SFTmit einem integrierten Sprecher (z. B.中文女). Klonen Sie niemals eine Stimme ohne Erlaubnis. Das Modell wird einmal für alle Segmente geladen, schreibt PCM16-WAV-Clips und speichert den Fortschritt (Checkpointing). SieheREADME.mdfür die Flags. - Wenn Edge TTS nicht erreichbar ist, setzen Sie
DASHSCOPE_API_KEYund verwenden Sie--tts-provider dashscope --voice Cherryfür Qwen3 TTS. Der übersetzte Transkripttext wird an DashScope gesendet. - Die Übersetzung ist standardmäßig auf
autoeingestellt, was nur ein explizit konfiguriertes lokalesOLLAMA_MODELverwendet und andernfalls vor der Übersetzung anhält. Wählen Sie--translation-provider openaiodergoogleexplizit aus, bevor ein Transkript an einen externen Übersetzer gesendet wird. Ollama erfordert seinen lokalen Dienst und ein installiertes Modell; die Skill lädt niemals automatisch eines herunter. Verwenden Sie--translation-context "Videothema und Schlüsselbegriffe", wenn der Dateiname nicht klar das Thema identifiziert; andernfalls wird der Titel oder Dateiname verwendet. --audio-mode replaceersetzt den Quell-Audio durch chinesische Sprache (Standard, zuverlässig).--audio-mode mixbehält die Originalspur bei niedriger Lautstärke unter der chinesischen Stimme.--audio-mode backgroundversucht, die Originalgesangsstimme mit optionalem Demucs zu trennen und mischt dann die chinesische Stimme mit dem verbleibenden Hintergrund. Wenn Demucs nicht verfügbar ist oder fehlschlägt, meldet das Skript das Problem und fällt sicher auf Audio-Ersetzung zurück.--subtitle-mode softbettet auswählbare chinesische Untertitel in die MP4 ein und schreibt auch eine externe SRT-Datei (Standard). Überprüfen Sie zuerst die Quellframes: Wenn Untertitel bereits in das Bild eingebrannt sind, behalten Siesoftbei, um sich überschneidende doppelte Texte zu vermeiden.burnbrennt Untertitel in das Bild und erfordert einen FFmpeg-Build mit demsubtitles/libass-Filter und einer verwendbaren chinesischen Schriftart.nonelässt Untertitel aus der MP4 weg, schreibt aber dennoch eine SRT-Begleitdatei zur Überprüfung.- Optimieren Sie ASR mit
--model small(ausgewogener Standard),--model mediumoder--model large-v3. Größere Modelle benötigen mehr Speicher und dauern länger. Der erste Lauf lädt das ausgewählte Modell herunter. - Verwenden Sie
--cookies-from-browser chromenur, wenn Sie angemeldet sind und die Seite Ihre eigene Browser-Sitzung erfordert. Dies liest lokale Browser-Cookies; es ist standardmäßig nicht aktiviert. - Verwenden Sie
--keep-intermediates, um heruntergeladene Quell-Audiodateien, WAV-Dateien und generierte Sprachclips zur Fehlerbehebung aufzubewahren. - Verwenden Sie
--segments-file path/to/translated.segments.json, um überprüfte Übersetzungen nach einem TTS-Fehler wiederzuverwenden, ohne Erkennung und Übersetzung zu wiederholen. - Verwenden Sie
--reuse-tts-dir path/to/tts_segmentsmit einem vorhandenen Satz generierter Clips, um das Timing anzupassen und neu zu rendern, ohne den Sprachdienst erneut aufzurufen.
Erforderliche Ausgabeprüfungen
Das Skript muss überprüfen, ob die MP4-Datei existiert, nicht leer ist, einen Video-Stream und einen Audio-Stream enthält und eine Dauer nahe der Eingabe aufweist. Es erzeugt eine SRT-Datei, ein übersetztes Segment-JSON und einen Verarbeitungsbericht neben der finalen MP4. Jede fehlgeschlagene Stufe muss die Pipeline anhalten und eine nützliche Fehlermeldung liefern, anstatt so zu tun, als wäre die Ausgabe vollständig.
Überprüfen Sie vor der Auslieferung das übersetzte JSON/SRT auf falsch transkribierte Namen und Begriffe, unnatürliche wortwörtliche Formulierungen und Segmente, die beschleunigt oder beschnitten wurden. Überprüfen Sie auch ein gerendertes Frame: Lehnen Sie Glyphenfehler-Boxen, Bildschirm-Untertitel außerhalb des Bildbereichs und doppelt eingebrannte Untertitel ab. Hören Sie bei CosyVoice vor dem Rendern eines langen Videos ein kurzes Beispiel an; überprüfen Sie die tatsächliche Aussprache von Dezimalzahlen, Codenamen und englischen Begriffen, nicht nur deren geschriebenen Text. Ein überprüftes Segment kann spoken_text hinzufügen, um eine Zahl oder einen Dateinamen natürlich auszuschreiben, während zh_text die genaue Untertitelung bleibt. Ihre Bedeutung muss übereinstimmen. Vermeiden Sie es, abgeschnittene Sprache oder auffällige Beschleunigungen auszuliefern.
Arbeitsablauf
- Unterscheidung zwischen URL und lokaler Datei. Für URLs laden Sie nur das angeforderte Video mit yt-dlp herunter (
--no-playlist). Wenn eine Bilibili-Seite 412 zurückgibt, kann das Skript die öffentliche Bilibili-API nur verwenden, wenn das Video ausdrücklich als herunterladbar markiert ist; bewahren Sie den angeforderten?p=-Teil. Umgehen Sie niemals DRM, Paywalls oder Kontobeschränkungen. - Verwenden Sie ffprobe, um Streams und die Dauer zu überprüfen. Extrahieren Sie Mono-16-kHz-PCM-Audio.
- Transkribieren Sie mit faster-whisper, wobei die Quell-Zeitstempel erhalten bleiben. Melden Sie klar einen Fehler, wenn keine Sprache erkannt wird.
- Übersetzen Sie mit Themen- und umgebendem Sprachkontext und polieren Sie dann zu einem prägnanten, idiomatischen Mandarin. Bewahren Sie IDs, Reihenfolge, Bedeutung, Zahlen, Namen und Fachbegriffe. Überprüfen Sie Quell-Erkennungsfehler anhand des Videothemas.
- Generieren Sie jedes chinesische Sprachsegment über den ausgewählten Sprachdienst. Passen Sie es konservativ an sein Zeitstempelfenster an; warnen Sie im Bericht, wenn ein Segment aggressive Beschleunigung oder Kürzung benötigt.
- Erstellen Sie eine vollständige chinesische Sprachspur. Wenden Sie den angeforderten Audiomodus an; die optionale Demucs-Trennung ist eine Verbesserung, keine harte Abhängigkeit.
- Schreiben Sie chinesische SRT- und übersetzte JSON-Dateien. Muxen oder brennen Sie Untertitel wie angefordert, exportieren Sie eine breit kompatible H.264/AAC-MP4 und überprüfen Sie das Ergebnis.
- Melden Sie genaue Ausgabepfade, ausgewählte Einstellungen, Warnungen und alle verbleibenden Überprüfungsanforderungen.
Beispiele
# YouTube-URL; API-Übersetzung; chinesische Frauenstimme; Voice-Over auf extrahierter Hintergrundmusik
OPENAI_API_KEY="$OPENAI_API_KEY" python3 scripts/translate_video.py "https://youtu.be/VIDEO_ID" \
--translation-provider openai --audio-mode background --subtitle-mode soft --output-dir ./output
# Bilibili Teil 2; verwenden Sie einen konfigurierten LLM-Schlüssel für natürliche Übersetzung
python3 scripts/translate_video.py "https://www.bilibili.com/video/BV1NAuq6uE8t/?p=2" \
--translation-provider openai --translation-context "Specification-Driven Development SDD und Agentic Programming" \
--voice zh-CN-YunyangNeural --audio-mode mix --output-dir ./output
# Chinesische Untertitel in das Bild einbrennen
python3 scripts/translate_video.py ./input.mp4 --subtitle-mode burn --output-dir ./output
# Vollständig lokale Sprachausgabe mit CosyVoice3 und einer autorisierten Referenz; keine kostenpflichtigen APIs
python3 scripts/translate_video.py ./input.mp4 --segments-file ./reviewed.segments.json \
--tts-provider cosyvoice --cosyvoice-python /pfad/zu/cosyvoice-python \
--cosyvoice-repo /pfad/zu/CosyVoice --cosyvoice-model-dir /pfad/zu/Fun-CosyVoice3-0.5B \
--cosyvoice-mode zero-shot --cosyvoice-prompt-audio ./reference.wav \
--cosyvoice-prompt-text-file ./reference.txt --subtitle-mode burn --output-dir ./output
# Lokale Transkription, Ollama-Übersetzung und CosyVoice-Erzählung
python3 scripts/translate_video.py ./input.mp4 --translation-provider ollama --ollama-model MODELL \
--tts-provider cosyvoice --cosyvoice-python /pfad/zu/cosyvoice-python \
--cosyvoice-repo /pfad/zu/CosyVoice --cosyvoice-model-dir /pfad/zu/CosyVoice-300M-SFT \
--cosyvoice-mode sft --output-dir ./output
Sicherheit und Rechte
Verarbeiten Sie nur Videos, die Sie besitzen, für die Sie eine Lizenz zur Bearbeitung haben oder deren Download und Transformation Ihnen anderweitig gestattet ist. Respektieren Sie die Bedingungen und Urheberrechte der Quellplattform. Umgehen Sie niemals DRM oder technische Zugangskontrollen. --cookies-from-browser ist optional und sollte nur die eigene authentifizierte Sitzung des Benutzers verwenden. Veröffentlichen Sie keine synchronisierte Ableitung, ohne die geltenden Rechte zu bestätigen.
Das Projekt dient dem Lernen, der Forschung und dem technischen Austausch. Verwenden Sie es nicht für rechtswidrige Aktivitäten, nicht autorisiertes Stimmenklonen, Betrug, Identitätstäuschung oder irreführende Inhalte. Siehe den Haftungsausschluss in der README.md; die Benutzer sind für ihre Nutzung und Verbreitung der generierten Inhalte im Rahmen des geltenden Rechts verantwortlich.