speak
將任何文字轉換為語音音頻。支援兩種後端(本地 Kokoro、雲端 Noiz)、兩種模式(簡易或時間軸精確)以及逐區段聲音控制。
觸發詞
- text to speech / speak / say / tts
- voice clone / dubbing
- epub to audio / srt to audio / convert to audio
簡易模式 — 文字轉音頻
# Kokoro(安裝時自動偵測)
bash skills/speak/scripts/tts.sh speak -t "Hello world" -v af_sarah -o hello.wav
bash skills/speak/scripts/tts.sh speak -f article.txt -v zf_xiaoni --lang cmn -o out.mp3 --format mp3
# Noiz(設定了 NOIZ_API_KEY 時自動偵測,或使用 --backend noiz 強制指定)
# 若省略 --voice-id,腳本將印出 5 個可用的內建聲音 ID 並結束。
# 從輸出中選取一個,然後使用 --voice-id <id> 重新執行。
bash skills/speak/scripts/tts.sh speak -f input.txt --voice-id voice_abc --auto-emotion --emo '{"Joy":0.5}' -o out.wav
# Noiz:可選的 --duration(浮點數,秒數,範圍 (0, 36]),用於控制目標音頻長度
bash skills/speak/scripts/tts.sh speak -t "Short line" --voice-id voice_abc --duration 3.5 -o out.wav
# 語音克隆(僅限 Noiz — 不需要 voice-id,使用參考音頻)
# 使用您自己的參考音頻:本地檔案路徑或 URL(僅在使用 Noiz 時可用)。
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio ./ref.wav -o clone.wav
bash skills/speak/scripts/tts.sh speak -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav
時間軸模式 — SRT 轉時間對齊音頻
用於精確控制每個區段的時間(配音、字幕、影片旁白)。
步驟 1:取得或建立 SRT 檔案
如果使用者沒有 SRT 檔案,可以從文字產生:
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt
bash skills/speak/scripts/tts.sh to-srt -i article.txt -o article.srt --cps 15 --gap 500
--cps = 每秒字元數(預設為 4,適合中文;英文約為 15)。代理程式也可以手動寫入 SRT。
步驟 2:建立語音映射檔
控制預設及逐區段語音設定的 JSON 檔案。segments 的鍵支援單一索引 "3" 或範圍 "5-8"。
Kokoro 語音映射檔:
{
"default": { "voice": "zf_xiaoni", "lang": "cmn" },
"segments": {
"1": { "voice": "zm_yunxi" },
"5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
}
}
Noiz 語音映射檔(新增了 emo、reference_audio 支援)。reference_audio 可以是本機路徑或 URL(使用者自己的音頻;僅限 Noiz):
{
"default": { "voice_id": "voice_123", "target_lang": "zh" },
"segments": {
"1": { "voice_id": "voice_host", "emo": { "Joy": 0.6 } },
"2-4": { "reference_audio": "./refs/guest.wav" }
}
}
動態參考音頻切片:
如果您正在翻譯或配音一部影片,希望每個句子自動使用原始影片中對應時間戳記的音頻作為參考,請使用 --ref-audio-track 參數,而不是在映射檔中設定 reference_audio:
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav
完整範例請參閱 examples/ 目錄。
步驟 3:渲染
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json -o output.wav
bash skills/speak/scripts/tts.sh render --srt input.srt --voice-map vm.json --backend noiz --auto-emotion -o output.wav
何時選擇哪一種
| 需求 | 建議 |
|---|---|
| 單純朗讀文字,不須繁瑣設定 | Kokoro(預設) |
| EPUB/PDF 有聲書搭配章節 | Kokoro(原生支援) |
聲音混合 ("v1:60,v2:40") | Kokoro |
| 從參考音頻進行語音克隆 | Noiz |
情緒控制 (emo 參數) | Noiz |
| 每個區段精確的伺服器端時長 | Noiz |
當使用者需要同時使用情緒控制 + 語音克隆 + 精確時長時,Noiz 是唯一支援全部三項功能的後端。
需求
ffmpeg需在 PATH 環境變數中(時間軸模式)- Noiz:請在 developers.noiz.ai 取得您的 API 金鑰,然後執行
bash skills/speak/scripts/tts.sh config --set-api-key YOUR_KEY - Kokoro:如果已安裝,請傳入
--backend kokoro使用本地後端
有關後端詳細資訊及完整的參數參考,請參閱 reference.md。