語音與音訊 AI
情緒語音克隆的實作筆記:別再把「強度」拉到最大
把情緒強度拉滿,情緒有了,聲音卻不像自己了。原因不是模型不夠好,而是這個參數本質上是「情緒模板 vs 你自己」的分配比例。這篇筆記給你一套 1–2 小時內能做完的調參流程。
一個核心觀念
這類模型控制情緒的方式,幾乎都是一條線性混合公式:
最終聲音的情緒特徵 = 情緒模板 × 係數 + 你原本的音色特徵 × (1 − 係數)
係數設成 1.0,後半段「你原本的音色」直接歸零——你不是在調情緒強度,是在調「用多少比例的通用情緒模板取代你自己」。所以一調情緒就「不像自己」。
之後換任何 TTS 模型,看到「情緒強度/情緒權重」,先假設它是此消彼長的分配關係,別照 demo 的滿分設定抄。
怎麼做(約 1–2 小時)
Step 1|錄一段乾淨的中性參考音
安靜環境、1–2 分鐘、正常語速,念一段內容豐富的文字(句長有變化,有問句有陳述句更好)。保持平穩,不要帶情緒——這段是給模型學「你原本的音色」,帶情緒會污染它。存成 wav。
Step 2|先跑零樣本克隆打底
把參考音與想合成的文字餵進去,先不加任何情緒,確認「音色像不像你」過關,再往下加情緒。
Step 3|先用模型內建的情緒選項
開心/難過/驚訝/平靜等內建模板,比自己錄一段「假裝很開心」的參考音穩定,因為業餘演出的情緒訊號通常不夠強,模型抓不到差異。
Step 4|係數從 1.0 開始往下掃
用同一句中性測試文字,分別用 1.0、0.75、0.65、0.5 生成,實際聽:
- 太高(接近 1.0):情緒很明顯,但「這不是我的聲音」
- 太低(接近 0):還是你的聲音,但感受不到情緒
- 中間值(通常 0.6–0.7):情緒聽得出來,音色也還在
沒有標準答案,一定要自己聽過幾版再選。我的定案值是 0.65。
Step 5|句子太慢,改用後製變速
多數模型沒有語速的原生參數,停頓長短是模型自己學出來的。看起來像「停頓時間」的參數常常只管段落之間、不管段落內部,短句整句只算一段,設定完全不生效。直接在生成後的音檔用 ffmpeg 的 atempo 濾鏡(不改音高):
ffmpeg -i in.wav -filter:a "atempo=1.15" out.wav
從 1.05 倍開始試,通常 1.1–1.3 之間會舒服。
Step 6|定案,寫成小腳本
把參考音路徑、各情緒係數、語速倍率寫進一支腳本,之後只帶「文字」和「情緒」兩個參數呼叫。
你一定會踩的坑
- 中性參考音錄得帶情緒:後面所有情緒都會怪。錄音階段保持平淡,情緒交給係數。
- 係數設 1.0 抄 demo:聲音完全不像自己。看到「像 AI 在演」,第一反應是調低係數。
- 自己演情緒效果不穩:先用內建模板,別誤以為模型不支援。
- 語速參數調錯:與其鑽牛角尖,生成完直接後製變速。
卡住時怎麼問 AI
把下面這段貼給 Claude/ChatGPT,換成你的狀況,並且貼上完整的錯誤訊息原文(不要自己摘要):
我是新手,正在自己的電腦上跑開源語音克隆模型(IndexTTS2),想做出帶情緒的克隆聲音。
我的作業系統:[Windows / Mac / Linux]
我卡在這一步:[例如安裝環境、跑生成指令]
錯誤訊息(完整貼上):[原文]
請一步一步教我:每步先解釋在做什麼,再給實際要執行的內容。
資訊不足請先問我,不要用猜的給可能不適用的指令。
一句話總結
克隆有情緒的聲音,別把「強度」當成越大越好——那是「情緒模板 vs 你自己」的分配比例,抓中間值才是答案。
這是踩坑實錄與 AI 工具實測系列的一部分。想收到後續完整 SOP,訂閱電子報。
支持這裡的內容:前往 Ko-fi 斗內