TTS音声ナレーション — 単語レベルのタイミング付き は何をしますか?
単語タイミングは、キャプションを適切な単語でポップさせ、シーンを正しい音節で進行させるために不可欠です。常に音声ナレーション(VO)を最初に生成し、その実際のタイミングに合わせてアニメーションを作成してください。決して逆にしてはいけません。
クイックスタート(無料、APIキー不要)
pip install edge-tts
python scripts/vo_gen.py --text "Pythagore. Dans un triangle rectangle…" --voice fr-FR-DeniseNeural --rate -4%
出力(デフォルトの接頭辞は vo):
vo.mp3— 音声vo_words.json—{ words:[{text,fromMs,toMs}], captions:[{startMs,durationMs,text,tokens[]}] }キャプションは ≤3 単語のページにグループ化(ギャップ >700ms で改ページ)、各単語の時間ウィンドウ付きvo.js—window.VO_B64(Base64エンコードMP3)+window.VO_DATA(JSON)。canvas/シークパイプラインにそのまま埋め込み可能:<script src="vo.js">で読み込み、decodeAudioDataで再生、VO_DATA.captionsで描画
音声一覧表示: python scripts/vo_gen.py --list-voices fr(同様に: en, ja, es, de, pt, zh, ar…)。
音声メニュー(おすすめ)
| 言語 | 落ち着いたナレーター | 元気なナレーター |
|---|---|---|
| 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 |
速度指定: --rate -4%(遅く)/ +10%(速く)。短い文章ほど単語境界がきれいになります。一文単位で再生成すれば、トラック全体をやり直さずに特定の箇所だけ修正できます。
ハマりポイント(経験から学んだこと)
- edge-tts ≥ 7: 単語境界がデフォルトでオフ —
boundary="WordBoundary"が必要(vo_gen.pyは既に指定済み)。バグの症状: 音声は正常だがwordsが空。 - サービスからのHTTP 403: edge-tts が古すぎて現在のトークンスキームに対応していない —
pip install -U edge-tts(システムインストールがロックされている場合は venv を使用)。 - ワードオフセットは生ストリームでは100ナノ秒単位。ミリ秒に変換するには10⁴で割る。
代替・アップグレード
- Kokoro (
pip install kokoro) — ローカルニューラルTTS、82Mパラメータ、複数言語対応。 - Piper — 完全オフライン、高速、言語ごとの音声ダウンロード。
- ElevenLabs — 有料、多言語v2。
with-timestampsAPI が文字レベルのタイミングを返し、そのままキャプションに利用可能。 - VOICEVOX(日本語) —
localhost:50021のローカルHTTP API、音素単位のタイミング(日本語のリップシンクアニメーションに最適)。 - 既存の音声 → 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
動画へのミキシング(クイックリファレンス)
音声、BGM、効果音は別々のステムとして扱い、BGMはVOの下で-18〜-22 LUFS、ffmpegの sidechaincompress(VOをトリガーに)でダッキング、最終ラウドネスは loudnorm=I=-14:TP=-1.5:LRA=11。効果的なキャプションスタイル: 太字大文字、1〜3単語ずつ表示、アクティブ単語はアクセントカラーで約20%スケールアップ、黒い背景またはストロークでコントラストを確保、プラットフォームのUIゾーンを避けて配置。