簡報旁白 是做什麼的?
工具:來自 video-generations 的 $VIDEO_ROOT/voice/(speak.py、speak_cast.py、polish_vo.py、mix_narration.py、el_cache.py);$VIDEO_ROOT/models 中的模型(python studio/get_models.py)。
1. 像簡報者一樣寫作(腳本比聲音更重要)
-
絕對不要照螢幕唸。 螢幕上的文字陳述事實;旁白則賦予意義、情感或背後的故事。如果一句台詞完全重複螢幕上的文字,請改寫或刪除它。例外:產品名稱和最終標語。
-
每行只傳達一個想法。 簡短的句子,6–12 個字。使用口語英文,允許縮寫。
-
主角線索。 跟隨一個人物(例如 Aroon、Anita、Dr. Rao)並反覆提及他們;人們記住的是故事,而非功能。
-
終點聚焦。 將關鍵字放在句尾(「……每個團隊只擁有 一個。」);語音自然會落在該處。前置背景資訊:「在……兩點十四分,清晨,// Aroon // 倒下。」
-
三的法則 用於好處和列表,節奏均勻。
-
對比與轉折: 問題 → 「現在,想像…… 」→ 解決方案。
-
開場: 每個段落以一個錨點開頭(「首先,針對家庭。」、「現在,走進醫院。」)。
-
結尾: 陳述句以句號結束,語調下降、完整。以承諾或標語、明確的邀請,然後是「謝謝。」來收尾。
-
節奏(內部風格): 緩慢、充滿停頓的朗讀聽起來像機器人(「太多停頓,太少單詞」)。預設為流暢的簡報者節奏:
- 多數台詞使用速度 1.00,長列表/說明使用 1.02,標語和結尾使用 0.95–0.97,僅在單一情感鉤子處使用 0.93。
- 每行最多一個
...節拍停頓,且僅用在情感轉折處(「在兩點十四分,清晨 ... Aroon 倒下」、「如果 ... 只需點擊一次呢?」)。謹慎使用/;偏好單純的逗號。 - 以這種風格測量,速率約為每秒 2.6–2.8 個口語單詞(af_kore)。預算 = 單詞數 / 2.7 + 0.35 秒潤色尾部;一句台詞必須在下一視覺節拍前完成。
- 在問題鋪陳之後,以及解決方案的情感回報之後(「比第一晚更平靜。」),留下一個有意的沉默(1–1.5 秒,無台詞)。
- 密度:一部 2.5 分鐘的影片約有 230–250 個旁白單詞;每個場景至少有一句台詞,因此除了計畫中的沉默外,沒有任何場景的靜音時間超過約 3 秒。
-
誠實: 不虛構結果;虛構的名字和數字只是示範資料。
-
快速路徑(節省時間): 寫好所有台詞 → 使用上述預算估算持續時間 → 在生成前於文字中修復超時問題 → 只生成一次。在筆記型電腦上重新生成每行約需 25–40 秒,因此大部分時間都花在需要重寫的文字上。
2. 標記(旁白檔案)
LINES = [(start_s, speed, text), ...],VOICE = '...',加上帶有朗讀說明的 docstring。範例:voice/examples/narration_demo.py。
/= 呼吸停頓(0.25 秒),//= 戲劇性停頓(0.55 秒),...= 節拍停頓(0.8 秒)。- 在
voice/lexicon.py中重新拼寫引擎唸錯的名字(例如 Arun → "Aroon",Dr → "Doctor"),並先測試一行。 - 多人對話:
speak_cast.py使用LINES = [(key, voice, speed, text), ...](voice/examples/dialogue_demo.py)。
3. 語音
- 引擎:透過 kokoro-onnx 的 Kokoro,離線,50+ 種語音。好的簡報者選擇:af_kore / af_heart(冷靜、自信的女性),hm_omega / hm_psi(印度男性),am_onyx(低沉男性),bm_george(英國男性),hf_alpha / hf_beta(印度女性)。混合有效:
hm_omega:0.6,am_onyx:0.4。 - 對於新的語音選擇,為每個候選人生成 3 個代表性台詞(鉤子、解決方案、標語),並讓使用者在完整運行前挑選。
- 無法強制單詞重音;可透過措辭、標點符號、停頓和速度來創造。精確強調需要真人錄音。
- 高級雲端語音:
voice/el_cache.py(ElevenLabs;每行計費一次,然後快取)。
4. 生成 → 潤色 → 混音
python voice/speak.py <narration>.py work/vo [voice]— 可中斷恢復;每個短語會單獨朗讀,然後與標記的靜音合併。python voice/polish_vo.py work/vo work/vo_polished— 修剪、暖聲/清晰 EQ、柔和壓縮、微妙的空間感、淡出尾音。python voice/mix_narration.py <silent.mp4> <music.wav> <narration>.py work/vo_polished <out.mp4>— 放置台詞,將長台詞最多加速 1.08 倍,僅在必要時移動後續台詞,壓低音樂音量,−16 LUFS,寫入.srt。- 檢查偏移報告。 每句台詞應與其視覺內容相差約 0.5 秒內。如果偏移累積,請縮短或刪除一句台詞(優先刪除重複螢幕內容的台詞),並將開始時間移動到其視覺節拍;重新混音時無需重新生成未修改的台詞。
若要重做某些台詞,請將其舊片段移開並重新執行
speak.py;它只會補齊缺少的片段。保持片段編號與 LINES 同步。 - 交付 MP4 和 SRT。