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。