Communitygithub.com

tts

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

tts 是什么?

该技能允许将文本转换为语音音频,支持简单模式和基于 SRT 字幕的时间轴模式。它提供两个后端:Kokoro(完全离线运行)和 Noiz(云端 API,提供语音克隆、情绪控制和精确时长控制等高级功能)。开发者可以在没有 API 密钥的情况下以访客模式使用,但功能有限。该技能支持基于片段的语音映射(包括语音、语言和速度),并可用于配音、有声书和视频旁白。它包括语音克隆、动态参考音频切片(用于保留原始视频的节奏)以及集成到第三方平台(如飞书、Telegram、Discord)的接口。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/tts

在你喜欢的 AI 中提问

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

文档

tts 是做什么的?

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

触发条件

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

简单模式 — 文本转音频

speak 是默认子命令,可以省略:

# 基本用法(speak 可省略)
python3 skills/tts/scripts/tts.py -t "Hello world"          # 添加 -o 路径以保存
python3 skills/tts/scripts/tts.py -f article.txt -o out.mp3

# 语音克隆 — 本地文件路径或 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

# 语音消息格式
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

第三方集成(飞书/Telegram/Discord)请参见 ref_3rd_party.md。

时间轴模式 — SRT 到时间对齐音频

用于精确的逐片段定时(配音、字幕、视频旁白)。

步骤 1:获取或创建 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;语音克隆、情绪、时长和时间轴渲染不可用。

# 访客模式(未设置 API 密钥时自动检测)
python3 skills/tts/scripts/tts.py -t "Hello" --voice-id 883b6b7c -o hello.wav

# 显式切换后端为 kokoro
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喜悦
95814addScience NarrationenM平静
883b6b7cThe Mentor (Alex)enM喜悦
a845c7deThe Naturalist (Silas)enM平静
5a68d66bThe Healer (Serena)enF平静
0e4ab6ecThe Mentor (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 后端完全离线运行,无网络访问。

要求

  • ffmpeg 在 PATH 中(仅时间轴模式)
  • 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 认证

仅使用 base64 编码的 API 密钥作为 Authorization——无前缀(例如不带 APIKEY 或 Bearer )。任何前缀都会导致 401。

关于后端详情和完整参数参考,请参见 reference.md。

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

相关技能