mcpField
T
tts

tts

github.com/noizai创意与媒体5314.3k 次安装4 周前更新
代码仓库

关于 tts

将文本转换为语音的 TTS skill,适用于朗读、配音和有声内容制作。支持 Kokoro 本地后端与 Noiz 云端后端,并可按时间轴和片段设置声音。

主要功能

  1. 01Kokoro 本地与 Noiz 云端后端
  2. 02文本转语音及文件输入
  3. 03SRT 时间轴音频渲染
  4. 04按片段配置声音
  5. 05参考音频克隆与情绪控制

适用场景

  1. 01将文章转换为朗读音频
  2. 02制作带章节的 EPUB 或 PDF 有声内容
  3. 03按字幕时间制作配音或视频旁白
  4. 04为不同片段配置声音或参考音频

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/noizai/skills --skill tts

安装后在 Claude Code 中输入/tts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

ref_3rd_party.md
scripts/
noiz_tts.py
render_timeline.py
test_tts.py
text_to_srt.py
tts.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販売員(なおみ)jaF喜び
4252b9c8落ち着いた女性jaF穏やか
578b4be2熱血漢(たける)jaM怒り
a9249ce7安らぎ(みなと)jaM穏やか
f00e45a1旅人(かいと)jaM穏やか
b4775100悦悦|社交分享zhF愉快
77e15f2c婉青|情绪抚慰zhF平静
ac09aeb4阿豪|磁性主持zhM平静
87cb2405建国|知识科普zhM平静
3b9f1e27小明|科技达人zhM愉快
95814add科学旁白enM平静
883b6b7c导师(Alex)enM愉快
a845c7de博物学家(Silas)enM平静
5a68d66b治愈者(Serena)enF平静
0e4ab6ec导师(Maya)enF平静

安全与数据披露

此技能在运行时会执行以下文件和网络操作:

  • 凭据存储:运行 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。

评论

支持 Markdown