关于 tts
将文本转换为语音的 TTS skill,适用于朗读、配音和有声内容制作。支持 Kokoro 本地后端与 Noiz 云端后端,并可按时间轴和片段设置声音。
主要功能
- 01Kokoro 本地与 Noiz 云端后端
- 02文本转语音及文件输入
- 03SRT 时间轴音频渲染
- 04按片段配置声音
- 05参考音频克隆与情绪控制
适用场景
- 01将文章转换为朗读音频
- 02制作带章节的 EPUB 或 PDF 有声内容
- 03按字幕时间制作配音或视频旁白
- 04为不同片段配置声音或参考音频
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ noizai/ skills --skill tts安装后在 Claude Code 中输入/tts确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
ref_3rd_party.mdscripts/noiz_tts.pyrender_timeline.pytest_tts.pytext_to_srt.pytts.py详细介绍
tts
将任意文本转换为语音。支持两种后端(本地 Kokoro、云端 Noiz)、两种模式(简单模式或时间轴精准模式),并支持按片段控制语音。
触发词
- 文本转语音 / tts / 说出 / 朗读
- 语音克隆 / 配音
- epub 转音频 / srt 转音频 / 转换为音频
- 语音 / 说 / 讲 / 说话
简单模式 — 文本转音频
默认使用 speak,可以省略子命令:
# Basic usage (speak is implicit)
python3 skills/tts/scripts/tts.py -t "Hello world" # add -o path to save
python3 skills/tts/scripts/tts.py -f article.txt -o out.mp3
# Voice cloning — local file path or URL
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio ./ref.wav
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav
# Voice message format
python3 skills/tts/scripts/tts.py -t "Hello" --format opus -o voice.opus
python3 skills/tts/scripts/tts.py -t "Hello" --format ogg -o voice.ogg
第三方集成(Feishu/Telegram/Discord)的说明见 ref_3rd_party.md。
时间轴模式 — SRT 转为时间对齐的音频
用于实现精准的片段级时间控制(配音、字幕、视频旁白)。
步骤 1:获取或创建 SRT
如果用户没有 SRT,可根据文本生成:
python3 skills/tts/scripts/tts.py to-srt -i article.txt -o article.srt
python3 skills/tts/scripts/tts.py 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:
python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav
完整示例见 examples/。
步骤 3:渲染
python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json -o output.wav
python3 skills/tts/scripts/tts.py 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 后端支持这三项功能。
访客模式(无需 API 密钥)
未配置 API 密钥时,tts.py 会自动回退到访客模式——一个无需身份验证的有限 Noiz 端点。访客模式仅支持 --voice-id、--speed 和 --format;不支持语音克隆、情绪控制、时长控制和时间轴渲染。
# Guest mode (auto-detected when no API key is set)
python3 skills/tts/scripts/tts.py -t "Hello" --voice-id 883b6b7c -o hello.wav
# Explicit backend override to use kokoro instead
python3 skills/tts/scripts/tts.py -t "Hello" --backend kokoro
可用的访客语音(内置 15 种):
| voice_id | 名称 | 语言 | 性别 | 语气 |
|---|---|---|---|---|
063a4491 | 販売員(なおみ) | ja | F | 喜び |
4252b9c8 | 落ち着いた女性 | ja | F | 穏やか |
578b4be2 | 熱血漢(たける) | ja | M | 怒り |
a9249ce7 | 安らぎ(みなと) | ja | M | 穏やか |
f00e45a1 | 旅人(かいと) | ja | M | 穏やか |
b4775100 | 悦悦|社交分享 | zh | F | 愉快 |
77e15f2c | 婉青|情绪抚慰 | zh | F | 平静 |
ac09aeb4 | 阿豪|磁性主持 | zh | M | 平静 |
87cb2405 | 建国|知识科普 | zh | M | 平静 |
3b9f1e27 | 小明|科技达人 | zh | M | 愉快 |
95814add | 科学旁白 | en | M | 平静 |
883b6b7c | 导师(Alex) | en | M | 愉快 |
a845c7de | 博物学家(Silas) | en | M | 平静 |
5a68d66b | 治愈者(Serena) | en | F | 平静 |
0e4ab6ec | 导师(Maya) | en | F | 平静 |
安全与数据披露
此技能在运行时会执行以下文件和网络操作:
- 凭据存储:运行
config --set-api-key时,密钥会保存到~/.config/noiz/api_key(权限为0600)。也支持将NOIZ_API_KEY环境变量用作替代方案。 - 旧密钥迁移:如果
~/.noiz_api_key存在,而~/.config/noiz/api_key不存在,密钥会被复制(而非删除)到新位置。系统会打印一条消息;旧文件会保留,需由你手动删除。 - 网络调用(Noiz 后端):文本和可选的参考音频会上传到
https://noiz.ai/v1/进行合成。只有在调用 Noiz 命令时才会发送数据。 - 参考音频下载:当
--ref-audio是 URL 时,文件会下载到临时文件,供 API 调用使用,之后会被删除。如果未提供 voice-id 或 ref-audio,则会从storage.googleapis.com或noiz.ai下载默认参考音频。 - 临时文件:合成期间可能会创建临时音频/文本文件,并在使用后清理。
- ffmpeg:仅在时间线
render模式下调用,用于合成最终音频。
除输出路径和 ~/.config/noiz/ 外,不会修改其他文件。Kokoro 后端完全离线运行,不会访问网络。
要求
- PATH 中需有
ffmpeg(仅限时间线模式) requests包:uv pip install requests(Noiz 后端必需)- 在 Noiz Developer 获取 API 密钥,然后运行
python3 skills/tts/scripts/tts.py config --set-api-key YOUR_KEY(访客模式无需密钥即可使用,但功能有限) - Kokoro:如果已安装,传入
--backend kokoro即可使用本地后端
Noiz API 身份验证
Authorization 中仅使用经 base64 编码的 API 密钥,不要添加前缀(例如 APIKEY 或 Bearer )。添加任何前缀都会导致 401 错误。
有关后端详情和完整参数说明,请参阅 reference.md。