SuperAPI AI 工具集

speak

通用与其它

查看项目

更新于 10-15 20:06

技能介绍

用途:在关键里程碑后用文本转语音(TTS)播报计划、问题与总结,或在被阻塞、需要用户决策时出声提醒。默认路径为本地、零密钥:调用 say_tts(macOS,无需 API Key),不传 voice,让 /usr/bin/say 使用宿主配置的系统语音。

何时播报:计划或待办清单确定后;Bug 或错误解决后;冲刺或大任务总结生成后;需要用户输入、决策、方向或批准时。

何时不播报:琐碎或中间步骤;用户正在阅读的短文本;非交互、无头或 CI 运行;用户要求安静或同一里程碑已播报过;每个逻辑里程碑不超过一次。

识别播报者:每个播报必须以简短说话者标签开头,格式类似“ says: ”。标签默认取项目目录名,可用 basename "$(git rev-parse --show-toplevel 2>/dev/null || pwd)",也可在配置的 speaker 字段自定义。

选择提供方:优先复用 .claude/tts-config.json 中已保存的选择;无保存则直接用 say_tts,voice 不设置。仅在用户或保存配置选择时才用云端,偏好顺序为 google、openai、elevenlabs,最终回退 say_tts。不要探测环境变量或逐个调用云端服务来试错。云端鉴权或配置错误时回退,并在配置中标记不可用。

工作流:判断消息类型(计划/问题/总结/提问);选择提供方;把文本转成适合朗读的形式并加上说话者标签;调用所选 TTS 工具,出错时按下表回退,say_tts 是最终保证。

错误处理:出现 API key、unauthorized、authentication 等错误时标记该提供方不可用并换下一个;rate limit、quota、429 时临时换下一个;402、payment、paid_plan_required(免费层密钥使用 ElevenLabs 库语音)时改用预置语音或不设置 ELEVENLABS_VOICE_ID,或换下一个;其他错误换下一个。

文本转换:把冗长输出转为口语,如 URL 换成“see the link”或省略,代码块换成“see the code changes”或简要描述,文件路径只留文件名,长哈希/ID 省略,长数字列表说“several values”,去掉 Markdown 格式,技术术语尽量简化。目标长度约 15-30 秒(约 50-100 词)。

TTS 工具:say_tts 参数为 text(必填)、voice(可选,任何已安装 macOS 语音,见 say -v '?')、rate(整数 50-500,建议 200-250,默认 200)。google_tts 参数为 text、voice(默认 Kore)、model(默认 gemini-3.1-flash-tts-preview),含一组命名语音。openai_tts 参数为 text、voice(默认 alloy)、model(默认 gpt-4o-mini-tts-2025-12-15,也可 tts-1、tts-1-hd)、speed(0.25-4.0,默认 1.0)、instructions;voice 与 model 是强制枚举,只能用列出的值。elevenlabs_tts 只有 text,语音/模型来自服务器默认(预置 Sarah)或 ELEVENLABS_VOICE_ID / ELEVENLABS_MODEL_ID 环境变量;免费层密钥只能用预置语音,库语音会返回 HTTP 402。

语音身份(可选):希望按项目或消息类型区分语音时才启用。云端可读 references/voice-pools.json 选候选语音,检查 ~/.claude/tts-assignments.json 避免重复,按类型各选一个并写入 .claude/tts-config.json 与 ~/.claude/tts-assignments.json。macOS say 则运行 /usr/bin/say -v '?' 解析已安装语音名,优先 Premium、再 Enhanced、再稳定旧语音如 Samantha 或 Alex;没有合适候选就对该类型不设 voice,使用宿主系统语音。

限制:播报是尽力而为,不得阻塞或干扰主任务;免费层 ElevenLabs 受限;云端需要相应配置与凭据;rate 硬限制 50-500;voice 与 model 等枚举值不可自行发挥。其他平台支持、具体收费与价格、更多示例暂未提供。