Communitygithub.com

TTS音声ナレーション — 単語レベルのタイミング付き

多言語対応の無料TTS(edge-tts)やローカル音声合成(Kokoro/Piper)、ElevenLabsを使って単語レベルのタイミングを持つナレーションを生成し、任意の音声からfaster-whisperでワードタイムスタンプを作成します。vo.mp3、単語/キャプションJSON、埋め込み可能なvo.jsを出力。動画・アニメーションのナレーションやキャプション作成に最適です。

TTS音声ナレーション — 単語レベルのタイミング付き とは?

このスキルは、AIエージェント(Claude Code/Cursor/Codexなど)が動画やアニメーション向けに単語レベルのタイミングを持つナレーション(TTS)を生成するためのものです。デフォルトでは無料で多言語対応のedge-tts(Microsoft Neural Voices)を使用し、APIキー不要。KokoroやPiperなどのローカルTTS、またはElevenLabs(有料)にも対応し、既存の音声からはfaster-whisperでワードタイムスタンプを抽出できます。出力は、音声ファイル(vo.mp3)、単語ごとの開始・終了時間を持つwords/captions JSON(キャプションは1〜3単語単位でグループ化、700ms以上のギャップで改ページ)、そしてcanvas/Webページに直接埋め込み可能なvo.js(Base64エンコードMP3+JSONデータ)。TikTokやHormoziスタイルのキャプション、シーンと同期したナレーションに最適で、TTS、ダビング、字幕生成が必要なあらゆるワークフローで利用できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ahmed-OC/motion-video-skills/tree/HEAD/skills/tts-voiceover

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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…)。

音声メニュー(おすすめ)

言語落ち着いたナレーター元気なナレーター
frfr-FR-DeniseNeuralfr-FR-HenriNeural
enen-US-AriaNeuralen-US-GuyNeural
jaja-JP-NanamiNeuralja-JP-KeitaNeural
eses-ES-ElviraNeurales-ES-AlvaroNeural
dede-DE-KatjaNeuralde-DE-ConradNeural
ptpt-BR-FranciscaNeuralpt-BR-AntonioNeural
zhzh-CN-XiaoxiaoNeuralzh-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-timestamps API が文字レベルのタイミングを返し、そのままキャプションに利用可能。
  • 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ゾーンを避けて配置。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル