TTS Voiceover — Erzählung mit Wort-für-Wort-Zeitsteuerung
Wortzeitsteuerungen sind das, was Untertitel auf dem richtigen Wort hervorheben und Szenen auf der richtigen Silbe takten. Erzeugen Sie das VO IMMER ZUERST und animieren Sie es mit den echten Zeitsteuerungen – niemals umgekehrt.
Schnellstart (kostenlos, kein API-Key)
pip install edge-tts
python scripts/vo_gen.py --text "Pythagore. Dans un triangle rectangle…" --voice fr-FR-DeniseNeural --rate -4%
Ausgaben (Standardpräfix vo):
vo.mp3— das Audiovo_words.json—{ words:[{text,fromMs,toMs}], captions:[{startMs,durationMs,text,tokens[]}] }wobei Untertitel in Gruppen von ≤3 Wörtern zusammengefasst sind (eine Pause >700 ms trennt eine Gruppe) mit pro-Wort-Zeitfensternvo.js—window.VO_B64(base64-codierte mp3) +window.VO_DATA(das JSON), direkt einsetzbar in einer Canvas-/Seek-Pipeline:<script src="vo.js">danndecodeAudioDatafür die Wiedergabe undVO_DATA.captionszum Zeichnen
Stimmen auflisten: python scripts/vo_gen.py --list-voices fr (auch: en, ja, es, de, pt, zh, ar…).
Sprachmenü (kurze Auswahl)
| Sprache | Ruhiger Erzähler | Energisch |
|---|---|---|
| fr | fr-FR-DeniseNeural | fr-FR-HenriNeural |
| en | en-US-AriaNeural | en-US-GuyNeural |
| ja | ja-JP-NanamiNeural | ja-JP-KeitaNeural |
| es | es-ES-ElviraNeural | es-ES-AlvaroNeural |
| de | de-DE-KatjaNeural | de-DE-ConradNeural |
| pt | pt-BR-FranciscaNeural | pt-BR-AntonioNeural |
| zh | zh-CN-XiaoxiaoNeural | zh-CN-YunjianNeural |
Geschwindigkeitssyntax: --rate -4% langsamer / +10% schneller. Kurze Sätze ergeben sauberere Wortgrenzen; regenerieren Sie pro Satz, um eine einzelne fehlerhafte Zeile zu korrigieren, ohne die gesamte Spur neu zu machen.
Fallstricke (die harte gelernt)
- edge-tts ≥ 7: Wortgrenzen sind standardmäßig AUS –
boundary="WordBoundary"ist erforderlich (vo_gen.py übergibt es bereits). Symptom des Fehlers: Audio OK,wordsleer. - HTTP 403 vom Dienst: Ihr edge-tts ist zu alt für das aktuelle Token-Schema –
pip install -U edge-tts(verwenden Sie eine venv, wenn die Systeminstallation gesperrt ist). - Wort-Offsets sind in 100-Nanosekunden-Einheiten im Rohstream; dividieren Sie durch 10⁴ für ms.
Alternativen und Upgrades
- Kokoro (
pip install kokoro) — lokales neuronales TTS, 82M Parameter, mehrere Sprachen. - Piper — vollständig offline, schnell, sprachspezifische Stimmen-Downloads.
- ElevenLabs — kostenpflichtig, mehrsprachig v2; die
with-timestamps-API gibt Zeichen-Zeiten zurück, die direkt Untertitel speisen. - VOICEVOX (Japanisch) — lokale HTTP-API unter
localhost:50021, Phonem-Zeitsteuerung (ideal für japanische Lippenbewegungsanimation). - Vorhandenes Audio → Wort-Zeitstempel via faster-whisper:
pip install faster-whisper python - <<'EOF' from faster_whisper import WhisperModel; import json m = WhisperModel("small"); segs, _ = m.transcribe("track.mp3", word_timestamps=True) json.dump([w._asdict() for s in segs for w in s.words], open("words.json","w")) EOF
Einmischen in ein Video (Kurzreferenz)
Sprache, Musik und SFX als GETRENNTE Spuren, dann: Musikbett −18…−22 LUFS unter VO, Ducking mit ffmpeg sidechaincompress (VO als Auslöser), final loudnorm=I=-14:TP=-1.5:LRA=11. Untertitel-Stil, der funktioniert: fette Großbuchstaben, 1–3 Wörter pro Einblendung, aktives Wort in Akzentfarbe mit etwa 20% Skalierung, schwarze Pillenbox oder Umriss für Kontrast, außerhalb der UI-Zonen der Plattform gehalten.