Communitygithub.com

babysor/MockingBird

將文字轉換為語音音頻,支援 Kokoro 或 Noiz 後端,包含簡易與時間軸對齊模式。

MockingBird 是什麼?

此技能專為將文字轉換為語音音頻而設計,整合了兩種強大的後端:本地端的 Kokoro 與雲端的 Noiz。它提供兩種主要操作模式:簡易模式可快速將純文字或文件轉換為音頻檔案;時間軸模式則能精確地將語音對齊到 SRT 字幕檔案的每一個區段,非常適合配音、字幕或影片旁白。使用者可以透過 JSON 語音映射檔,為每個區段設定不同的聲音、語言、語速,甚至情緒參數。此外,Noiz 後端還支援語音克隆,只需提供參考音頻即可複製特定聲音,並可透過 `--ref-audio-track` 參數動態從影片中擷取參考音頻。此技能適用於 Claude Code 等支援 bash 腳本的開發工具,能顯著簡化從文字生成音頻的工作流程。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/babysor/MockingBird/tree/HEAD/skills/speak

在你喜歡的 AI 中提問

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

說明文件

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。

相關技能