Communitygithub.com

babysor/MockingBird

将文本转换为语音,支持 Kokoro 和 Noiz 后端,包括简单模式和时间轴对齐模式。

MockingBird 是什么?

此技能允许你使用 Kokoro(本地离线)或 Noiz(云端 API)两种后端,将任意文本转换为语音。它不仅支持直接将文本转为音频的简单模式,还提供精确的时间轴对齐模式,适用于配音、字幕文件(SRT)或视频解说。用户可为每个段落单独指定语音、语速、情感参数,甚至使用参考音频进行声音克隆。通过简单的 bash 脚本,开发者可以快速集成文本转语音功能,而无需深入底层实现。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

speak

将任意文本转换为语音音频。支持两种后端(本地 Kokoro、云端 Noiz)、两种模式(简单或时间轴对齐)以及每段语音控制。

触发词

  • 文字转语音 / 朗读 / 说话 / tts
  • 语音克隆 / 配音
  • epub 转音频 / srt 转音频 / 转换为音频

简单模式 — 文本转音频

# 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 个可用的内置语音并退出。
# 从输出中选择一个,然后用 --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)。Agent 也可以手动编写 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。

相关技能