AI 口播配音 · Voice-over with edge-tts
逐句合成 → 去靜音 → 48 kHz WAV → durations.json。後續的字幕、鏡頭時長都按真實配音時長對齊,不再「聲畫對不上」。
屬於 ecommerce-video-skills 的一部分 · 腳本:
scripts/tts_edge.py(僅依賴edge-tts+ ffmpeg)
輸入 Inputs
- 口播稿(一句一行,或
storyboard.json的line欄位) - 語言 / 音色偏好(男/女、活潑/沉穩)、語速
- 環境:
pip install edge-tts,ffmpeg,能存取微軟 TTS 服務的網路
步驟 Steps
-
改寫成「好讀」的口播稿(見規則),每句 8–20 字。
-
選音色(
python scripts/tts_edge.py --list zh-CN查看全部):場景 推薦音色 活力種草(男) zh-CN-YunxiNeural親切種草(女) zh-CN-XiaoxiaoNeural/zh-CN-XiaoyiNeural激情促銷 zh-CN-YunjianNeural專業講解 zh-CN-YunyangNeural台灣 / 香港 zh-TW-HsiaoChenNeural/zh-HK-HiuMaanNeuralEnglish en-US-AndrewNeural·en-US-AvaNeural·en-US-EmmaNeural -
合成:
pip install edge-tts # 單句試聽 python scripts/tts_edge.py "夏天帶冰水出門,不到中午就變溫了?" --voice zh-CN-YunxiNeural --rate "+10%" -o out/hook.wav # 整個分鏡(每鏡一句 → build/tts/l00.wav … + durations.json) python scripts/tts_edge.py --storyboard storyboard.json --outdir build/tts -
試聽 2 句再批量:語速
+5%~+15%最像帶貨口播;超過+20%會顯得很趕。 -
交給
ffmpeg-auto-assemble(它會自動呼叫本腳本)或自己的剪輯軟體。
口播稿改寫規則 Script rules
- 數字寫成「讀法」:
2核8G→兩核八G;24h→二十四小時;型號字母之間加空格A I。字幕可以保留原寫法(sub欄位)。 - 一句只說一件事;逗號就是換氣點,句末用句號/問號讓語調落下來。
- 去掉書面詞:「此款產品具有…」→「這隻杯子…」。
- 英文品牌名若讀錯,用拼讀或諧音寫進
line,sub保留正確拼寫。
提示詞模板 Prompt template
把下面的帶貨文案改寫成適合 TTS 朗讀的口播稿:每句 8–20 字、一句一件事、口語化;
數字和字母寫成讀法;另外輸出一列「字幕版」保留原始寫法並用 **加粗** 標 1 個關鍵詞。
不要添加原文沒有的賣點或數據。原文:{…}
檢查清單 Checklist
- 先試聽 2 句確認音色/語速
- 數字、英文、品牌名讀音正確
-
durations.json已產生,總時長符合目標 - 商用前確認所在平台與地區對 AI 配音的標註要求(如需標註「AI 生成」)
常見問題與修復 Failure fixes
| 問題 | 修復 |
|---|---|
edge-tts failed / 超時 | 網路問題,腳本已重試 3 次;換網路或稍後再試;離線時用 assemble.py --tts none 先預覽畫面 |
| 讀音錯誤 | 在 line 裡寫諧音/拼讀,sub 保留原文 |
| 句子之間停頓太長 | 已自動去首尾靜音;調 storyboard 的 pad(預設 0.25s) |
| 聲音太平 | 換 YunjianNeural/XiaoyiNeural;--pitch "+5Hz";句尾用問號/驚嘆號 |
| 需要真人感 | edge-tts 是合成音;高要求場景改用真人錄音,流水線照樣可用(把錄音放進 build/tts/lXX.wav) |
edge-tts 由社群維護(rany2/edge-tts,LGPL-3.0),呼叫的是微軟線上服務;本倉庫只把它當依賴安裝,不包含其程式碼。