关于 voice-quality-audition
用于试听和比较 Kokoro TTS 可用语音的技能,面向需要为项目选择语音的用户。它可逐个播放语音朗读的文本,并支持剪贴板内容或内置段落;适用于 Apple Silicon Mac。
主要功能
- 01逐个试听 Kokoro 语音
- 02使用剪贴板或默认文本
- 03支持选择语音子集
- 04收集偏好并可更新默认语音
适用场景
- 01为项目比较多种语音
- 02试听自定义文本的语音效果
- 03升级 Kokoro 后重新评估语音
- 04选择新的英文或中文默认语音
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill voice-quality-audition安装后在 Claude Code 中输入/voice-quality-audition确认已加载。
附带文件references/evolution-log.mdreferences/voice-catalog.md
详细介绍
语音质量试听
比较所有可用语音的 Kokoro TTS 语音质量。运行 tts_kokoro_audition.sh,依次播放每个高排名语音的一段文字。每个语音会先报出自己的名称,再朗读这段文字。使用剪贴板文本或默认文本。
平台:macOS(Apple Silicon)
自我进化技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏移,或需要使用变通方案,请立即修复此文件,不要拖延。仅针对真实且可复现的问题进行更新。
何时使用此技能
- 试听所有可用的 Kokoro 语音,了解音质差异
- 为项目并排比较特定语音
- Kokoro 引擎升级后重新评估语音等级
- 为 TTS_VOICE_EN 或 TTS_VOICE_ZH 选择新的默认语音
- 测试某段文字在多个语音中的效果
要求
- 已安装且运行正常的 Kokoro TTS 引擎(
kokoro-install.sh --health) - 配备 Apple Silicon 且支持 MLX Metal 的 Mac
- 可用的
afplay(macOS 自带) - 插件中的试听脚本:
scripts/tts_kokoro_audition.sh - 插件中的共享库:
scripts/lib/tts-common.sh
语音目录
| 语音 ID | 名称 | 等级 | 性别 |
|---|---|---|---|
| af_heart | Heart | A | 女 |
| af_bella | Bella | A- | 女 |
| af_nicole | Nicole | B- | 女 |
| af_aoede | Aoede | C+ | 女 |
| af_kore | Kore | C+ | 女 |
| af_sarah | Sarah | C+ | 女 |
| am_adam | Adam | F+ | 男 |
| am_michael | Michael | 未评级 | 男 |
| am_echo | Echo | D | 男 |
| am_puck | Puck | 未评级 | 男 |
当前默认设置(配置于 ~/.claude/automation/claude-telegram-sync/mise.toml):
- 英语语音:
af_heart(等级 A),通过TTS_VOICE_EN设置 - 中文语音:
zf_xiaobei,通过TTS_VOICE_ZH设置 - macOS
say英语回退语音:Samantha,通过TTS_VOICE_SAY_EN设置 - macOS
say中文回退语音:Ting-Ting,通过TTS_VOICE_SAY_ZH设置
详细特征和等级标准请参阅语音目录。
工作流阶段
阶段 1:预检
验证 Kokoro 已安装且运行正常:
kokoro-install.sh --health
全部 6 项检查必须通过(venv、Python 3.14、可导入 mlx_audio、kokoro_common.py、tts_generate.py、version.json)。
阶段 2:选择文本
试听脚本会读取 macOS 剪贴板中的内容(pbpaste)。如果剪贴板为空或内容不是文本,则会改用内置的一段图书馆阅读相关文本。
如需试听自定义文本,请在运行脚本前将所需内容复制到剪贴板。
阶段 3:询问用户——完整试听还是选择性试听
使用 AskUserQuestion 确定试听范围:
- 完整试听——按顺序播放全部 10 个语音(需要几分钟)
- 选择特定语音——仅运行部分语音(例如,排名最高的 3 个女声)
如需选择性试听,请编辑脚本中的 VOICES 数组,或手动传入语音 ID。
阶段 4:执行试听
~/.local/bin/tts_kokoro_audition.sh
也可以直接从插件源代码运行:
/path/to/plugins/tts-tg-sync/scripts/tts_kokoro_audition.sh
脚本会获取 TTS 锁,间隔 1 秒依次播放每个语音,然后在退出时释放锁。
阶段 5:收集反馈
使用 AskUserQuestion 收集用户偏好:
- 哪个语音听起来最好?
- 有哪些语音应从后续候选中排除?
- 是否应更新等级分配?
阶段 6:应用配置
可选:更新 mise.toml 中的默认语音:
# ~/.claude/automation/claude-telegram-sync/mise.toml
[env]
TTS_VOICE_EN = "af_heart" # Change to preferred voice ID
TTS_VOICE_ZH = "zf_xiaobei"
更改 mise.toml 后,重启 Telegram 机器人,使新语音生效。
TodoWrite 任务模板
1. [Preflight] Verify Kokoro TTS is installed and healthy (kokoro-install.sh --health)
2. [Text] Check clipboard for passage, fall back to default if empty
3. [Select] Ask user: full audition (all 10 voices) or specific voices
4. [Audition] Run tts_kokoro_audition.sh and let user listen
5. [Feedback] Ask user which voice they prefer and collect grade feedback
6. [Apply] Optionally update TTS_VOICE_EN in mise.toml and restart bot
更改后检查清单
- 试听前已通过 Kokoro 健康检查
- 所有选定的语音均正常播放,未出现错误
- 用户已确认首选语音
- mise.toml 已更新为新的语音 ID(如有更改)
- 配置更改后已重启机器人(如适用)
- 参考文档中的语音目录等级已更新(如有重新评级)
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 没有音频播放 | 未安装 Kokoro | 运行 kokoro-install.sh --install 或使用 full-stack-bootstrap 技能 |
| 音频在句子中途截断 | TTS 锁被另一个进程抢占 | 检查是否有其他 TTS 进程:pgrep -la afplay |
| 声音听起来不对 | Kokoro 模型中的声音 ID 无效 | 确认声音 ID 存在于 VOICES 数组中;检查 Kokoro 版本 |
| 剪贴板为空 | 没有复制文本 | 脚本会自动使用默认段落;无需执行任何操作 |
| “ERROR: Local Kokoro not found” | 虚拟环境或脚本缺失 | 运行 kokoro-install.sh --health 进行诊断;运行 --install 修复 |
| 特定声音出现 FAILED | 模型中没有该声音 | 该声音可能需要不同的 Kokoro 版本;检查模型兼容性 |
| 锁未释放 | 脚本崩溃且未执行清理 | 移除过期锁:rm -f /tmp/kokoro-tts.lock |
| 所有声音听起来都一样 | Kokoro 模型未正确加载 | 重新下载模型:kokoro-install.sh --upgrade |
参考文档
执行后反思
此技能完成后,请在结束任务前进行反思:
- 确认文件位置。 — 在编辑前,找到此 SKILL.md 的规范路径(使用 Glob 搜索此技能名称)。所有修正都针对此文件及其同级的 references/ — 绝不要修改其他文档。
- 哪里失败了? — 修复导致问题的指令。如果问题可能再次发生,将其作为反模式添加。
- 哪些效果超出预期? — 将其提升为推荐做法,并记录原因。
- 哪里出现了偏差? — 如果脚本、参考资料或外部依赖与实际情况不再一致,请立即修正。
- 记录下来。 — 每项变更都要在演进日志中记录触发原因、修复内容和证据。
不要推迟。下一次调用会继承你留下的一切。