pkg/audio/tts/README.zh.md
这个目录负责 PicoClaw 的语音合成能力。
如果你是第一次配置 TTS,可以参照下面这个流程:
model_list 里添加一个支持 TTS 的模型。voice.tts_model_name 指向这个模型。.security.yml 里配置对应的 API Key。对于大多数用户,建议优先从下面两种开始:
| 提供商 | 推荐理由 |
|---|---|
| OpenAI | 这是 PicoClaw 当前最稳定、最直接的 TTS 路径。当前实现就是围绕 OpenAI 兼容的 /audio/speech 接口格式构建的,所以 OpenAI 是最稳妥的默认选择。 |
| Xiaomi MiMo | 由于响应速度和语音音色对于中国用户更友好,MiMo 是一个不错的第二选择。 |
PicoClaw 不会把 TTS 的 API Key 放在 voice 配置里。
推荐方式是:
voice.tts_model_name 用来选择 model_list 里的某个命名模型。model_list 条目提供真实的 provider、model ID、api_base 和代理配置。.security.yml 负责保存该模型条目的 API Key。这是当前推荐且受支持的配置方式。
config.json
{
"voice": {
"tts_model_name": "openai-tts"
},
"model_list": [
{
"model_name": "openai-tts",
"model": "openai/tts-1"
}
]
}
.security.yml
model_list:
openai-tts:
api_keys:
- "sk-openai-your-key"
config.json
{
"voice": {
"tts_model_name": "mimo-tts"
},
"model_list": [
{
"model_name": "mimo-tts",
"model": "mimo/mimo-v2-tts"
}
]
}
.security.yml
model_list:
mimo-tts:
api_keys:
- "your-mimo-key"
如果你使用自定义的 MiMo 接口地址,也可以显式设置 api_base。如果不设置,PicoClaw 会自动使用该 provider 的默认地址。
当前 TTS 运行时使用的是 OpenAI 兼容的语音合成请求,并带有以下默认值:
/audio/speechopusalloymodel_list 条目这意味着:
openai/tts-1 可以自然工作。alloy。DetectTTS 会按下面顺序选择 TTS:
voice.tts_model_name 在 model_list 中找到对应模型。voice.tts_model_name,或者该名字无法解析,PicoClaw 会扫描 model_list,选中第一个模型字符串里包含 tts 且带有 API Key 的条目。回退扫描只是为了兼容旧行为。新配置建议始终显式设置 voice.tts_model_name。
PicoClaw 会对 TTS 的 api_base 做规范化处理:
https://api.openai.com 或 https://api.openai.com/v1 这样的地址,会自动变成 https://api.openai.com/v1/audio/speech。/audio/speech 结尾。api_base,并且模型前缀是已知 provider,PicoClaw 会自动使用该 provider 的默认地址。voice.tts_model_name 指向了一个不存在的 model_list 名称。model_list 里定义了 TTS 模型,但忘了在 .security.yml 中配置对应 API Key。/audio/speech 请求格式的接口地址。在测试 send_tts 之前,请确认:
voice.tts_model_name 能正确匹配某个 model_list[].model_name。.security.yml 中对应条目已经配置了有效 API Key。