Communitygithub.com

Ahmed-OC/motion-video-skills

產生具備詞層級時間戳的語音旁白:透過 edge-tts(預設)提供免費多語言 TTS、本機 Kokoro/Piper 或 ElevenLabs,並使用 faster-whisper 將任何音訊轉換為詞時間戳。輸出 vo.mp3、詞/字幕 JSON(每頁 1–3 個詞,附每個詞的時間區間),以及可供 Canvas/網頁影片流程嵌入的 vo.js。每當使用者需要旁白、語音、TTS、配音軌、任何語言的文字轉語音,或為影片/動畫製作詞同步字幕(TikTok/Hormozi 風格)時,即可使用。

motion-video-skills 是什麼?

此技能是一個強大的 TTS 語音旁白生成器,專為需要詞層級精確時間戳的影片與動畫製作而設計。它能利用 edge-tts(免 API 金鑰)、Kokoro、Piper 或 ElevenLabs 等引擎,將文字轉換為自然語音,並同時產生每個詞的開始與結束毫秒時間。輸出包含音檔 (vo.mp3)、詞與字幕的 JSON 資料(根據間隔 >700ms 自動分頁,每頁 1–3 個詞),以及一個可嵌入的 vo.js 腳本,方便在 Canvas 或網頁影片流程中直接使用。此技能特別適合製作 TikTok/Hormozi 風格的動態字幕、配音、多語言旁白,或任何需要語音與文字精確同步的專案。它也支援將現有音訊透過 faster-whisper 自動產生詞時間戳,並提供後續混音與字幕樣式的實用參考。

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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

TTS 語音旁白 — 具備詞層級時間戳

詞時間戳是讓字幕在正確的字詞上彈跳、場景在正確的音節上節奏的關鍵。務必先產生語音旁白,再根據其實際時間戳進行動畫 — 絕不要反過來。

快速入門(免費,無需 API 金鑰)

pip install edge-tts
python scripts/vo_gen.py --text "畢達哥拉斯。在一個直角三角形中…" --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 版本太舊,不支援當前的 token 機制 — 請執行 pip install -U edge-tts(如果系統安裝版本被鎖定,請使用 venv)。
  • 在原始串流中,詞偏移單位為 100 奈秒;除以 10⁴ 即為毫秒。

替代方案與升級

  • Kokoro(pip install kokoro)— 本機神經 TTS,82M 參數,支援多種語言。
  • Piper — 完全離線,速度快,按語言下載語音。
  • ElevenLabs — 付費,多語言 v2;其 with-timestamps API 回傳字元層級時間,可直接餵給字幕。
  • VOICEVOX(日文)— 本機 HTTP API,位於 localhost:50021,提供音素層級時間(非常適合日文嘴型動畫)。
  • 任何現有音訊 → 透過 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
    

混入影片(快速參考)

語音、音樂與音效使用分開的音軌,然後:音樂襯底在語音下方 -18…-22 LUFS,使用 ffmpeg 的 sidechaincompress(以語音為觸發)進行壓縮,最終使用 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.

相關技能