stt-tts 模式中语音输出的一半(talk.speak 调用这
同一路径进行合成)。采用提供商原生 realtime 的 Talk 会话会在实时提供商内部合成
语音;transcription 会话则从不合成助手的语音回复。
快速开始
1
选择提供商
OpenAI 和 ElevenLabs 是最可靠的托管选项。Microsoft 和
Local CLI 无需 API 密钥。请查看 提供商矩阵
获取完整列表。
2
设置 API 密钥
为你的提供商导出环境变量(例如
OPENAI_API_KEY、
ELEVENLABS_API_KEY)。Microsoft 和 Local CLI 不需要密钥。3
在配置中启用
将
tts.auto 设置为 "always",并设置 tts.provider:4
在聊天中试用
/tts status 会显示当前状态。/tts audio Hello from OpenClaw
会发送一次性的音频回复。默认情况下,自动 TTS 是关闭的。当
tts.provider 未设置时,
OpenClaw 会按注册表自动选择顺序选取第一个已配置的提供商。
内置的 tts 代理工具仅支持显式意图:普通聊天仍然是
文本,除非用户请求音频、使用 /tts,或启用自动 TTS/指令式
语音。支持的提供商
如果配置了多个提供商,将首先使用当前选中的那个,其余作为回退选项。自动摘要使用
summaryModel(或
agents.defaults.model.primary),因此如果你保持摘要功能开启,该提供商也必须已完成认证。
配置
TTS 配置位于~/.openclaw/openclaw.json 中的 tts 下。请选择一个
预设并调整提供方块。下面显示的 speakerVoice/speakerVoiceId
字段是规范字段;每个提供方自己的 voice/voiceId/
voiceName 字段名仍然可以作为旧别名使用。
- Azure Speech
- ElevenLabs
- Fish Audio
- Google Gemini
- Gradium
- Inworld
- 本地 CLI
- Microsoft(无需密钥)
- MiniMax
- OpenAI + ElevenLabs
- OpenRouter
- Volcengine
- xAI
- Xiaomi MiMo
mimo-v2.5-tts-voicedesign,省略 speakerVoice 并将 style 设置为
语音设计提示词。OpenClaw 会将该提示词作为 TTS 的 user 消息发送,
并且不会为 voicedesign 模型发送 audio.voice。
本地 Speech Swift 和 speech-core
Speech Swift 和 speech-core 提供跨 macOS、Linux 和 Windows 的本地语音 推理。当 Speech Swift 和 OpenClaw 运行在同一台 Mac 上时,请使用兼容 OpenAI 的 HTTP 提供程序。在任何受支持的主机上,如需直接集成可执行文件,请使用本地 CLI。 当某个通道需要 OpenClaw 将 WAV 输出转换为 Opus 或 原始 PCM 时,请安装ffmpeg。
- macOS HTTP
- macOS CLI
- Linux CLI
- Windows CLI
启动 Speech Swift 的本地服务器:将 OpenAI speech 提供程序指向其回环端点。
responseFormat
必须是 wav,因为本地端点不会输出压缩音频:tts-1 会选择 Kokoro。Speech Swift 注册表别名,例如 qwen3-tts、
cosyvoice 和 voxcpm2 会选择其他本地引擎。占位用 API 密钥是
OpenClaw 提供程序配置所必需的,但不会被回环服务器验证。每个代理的语音覆盖
当某个代理应使用不同的提供商、声音、模型、角色设定或自动 TTS 模式时,使用agents.entries.*.tts。代理块会对 tts 进行深度合并,因此提供商凭据可以保留在全局提供商配置中:
agents.entries.*.tts.persona 与提供商配置一起设置——它只会覆盖该代理的全局 tts.persona。
自动回复、/tts audio、/tts status 以及 tts 代理工具的优先级顺序为:
tts- 活跃的
agents.entries.*.tts - 当该频道支持
channels.<channel>.tts时的频道覆盖 - 当该频道传递
channels.<channel>.accounts.<id>.tts时的账号覆盖 - 此主机的本地
/tts首选项 - 在启用 模型覆盖 时的内联
[[tts:...]]指令
tts 相同的结构,并在更早的层之上进行深度合并,因此共享的提供商凭据可以保留在 tts 中,而频道或机器人账号只更改声音、模型、角色设定或自动模式:
人设
persona 是一种稳定的口语身份,可在各个提供商之间以确定性方式应用。它可以偏好某个提供商,定义与提供商无关的提示意图,并携带用于声音、模型、提示模板、seed 和语音设置的提供商特定绑定。最小 persona
完整 persona(提供商特定 shaping)
Persona 解析
活动 persona 按如下方式确定:/tts persona <id>本地偏好(如果已设置)。tts.persona(如果已设置)。- 无 persona。
- 直接覆盖(CLI、gateway、Talk、允许的 TTS 指令)。
/tts provider <id>本地偏好。- 活动 persona 的
provider。 tts.provider。- 注册表自动选择。
tts.providers.<id>tts.personas.<persona>.providers.<id>- 受信任的请求覆盖
- 允许的模型生成的 TTS 指令覆盖
自定义 persona shaping
提供商中立的personas.<id>.prompt.* 配置已弃用。Doctor 会移除这些字段,并将其指向 speech-provider 接口。将内置提供商设置放在 personas.<id>.providers.<provider> 下(例如 Google 的 personaPrompt 或 OpenAI 的 instructions)。对于自定义 shaping,请实现一个 speech provider 插件,并在 synthesize() 运行前使用 prepareSynthesis(ctx) 返回调整后的文本、提供商配置或覆盖项。这样可以将富表达力的提示构造保留在提供商代码中,因为那里已知请求语义。
回退策略
fallbackPolicy 控制当某个 persona 对尝试的提供商没有绑定时的行为:
只有当每个被尝试的提供商都被跳过或失败时,整个 TTS 请求才会失败。
Talk 会话提供商选择是会话范围内的。Talk 客户端应从
talk.catalog 中选择提供商 id、模型 id、语音 id 和语言区域,并通过 Talk 会话或 handoff 请求传递它们。打开语音会话不应修改 tts 或全局 Talk 提供商默认值。
模型驱动的指令
默认情况下,助手可以发出[[tts:...]] 指令来为单条回复覆盖声音、模型或语速,并可选地使用
[[tts:text]]...[[/tts:text]] 块来加入仅应出现在音频中的表现性提示:
tts.auto 为 "tagged" 时,需要使用指令才能触发
音频。流式块传递会在通道看到可见文本之前移除其中的指令,即使这些指令被拆分在相邻的多个块中。
除非 modelOverrides.allowProvider: true,否则 provider=... 会被忽略。
当回复声明 provider=... 时,该指令中的其他键只会由该提供商解析;不支持的键会被剥离并作为 TTS 指令警告报告。
可用的指令键:
provider(已注册的提供商 ID;需要allowProvider: true)speakerVoice/speakerVoiceId(旧别名:voice、voiceName、voice_name、google_voice、voiceId)model/google_modelstability、similarityBoost、style、speed、useSpeakerBoostvol/volume(MiniMax 音量,(0, 10])pitch(MiniMax 整数音高,−12 到 12;小数值会被截断)emotion(Volcengine 情绪标签)applyTextNormalization(auto|on|off)languageCode(ISO 639-1)seed
斜杠命令
单个命令/tts。在 Discord 上,OpenClaw 还会注册 /voice,因为 /tts 是内置的 Discord 命令——文本 /tts ... 仍然可用。
命令需要授权发送者(适用 allowlist/owner 规则),并且必须启用
commands.text 或原生命令注册。/tts on会将本地 TTS 偏好写为always;/tts off会将其写为off。/tts chat on|off|default会为当前聊天写入一个会话作用域的自动 TTS 覆盖设置。/tts persona <id>会写入本地 persona 偏好;/tts persona off会清除它。/tts latest会从当前会话记录中读取最新的助手回复,并将其作为音频发送一次。它只会在会话条目上存储该回复的哈希值,以抑制重复的语音发送。/tts audio会生成一次性的音频回复(不会切换 TTS 开关)。/tts limit <chars>接受 100–4096(4096 是 Telegram 标题/消息最大长度);超出该范围的值会被拒绝。limit和summary存储在 本地偏好 中,而不是主配置中。/tts status会包含最近一次尝试的回退诊断信息——Fallback: <primary> -> <used>、Attempts: ...,以及每次尝试的详细信息(provider:outcome(reasonCode) latency)。- 当 TTS 启用时,
/status会显示当前 TTS 模式,以及已配置的 provider、model、voice 和已清理的自定义端点元数据。
每用户偏好
Slash 命令会将本地覆盖写入 TTS 偏好路径。默认值为~/.openclaw/settings/tts.json;可使用 OPENCLAW_TTS_PREFS 进行覆盖。Doctor
会将已弃用的全局 tts.prefsPath 值迁移到共享机器状态中。
高级多代理设置在代理有意使用独立偏好存储时,仍然可以设置 agents.entries.<id>.tts.prefsPath。
这些设置会覆盖该主机上来自
tts 以及当前激活的
agents.entries.*.tts 区块的有效配置。
输出格式
TTS 语音投递由通道能力驱动。通道插件会声明 语音风格的 TTS 是否应向提供方请求原生voice-note 目标,还是
保持普通 audio-file 合成,以及通道在发送前是否会对非原生输出进行转码。
Telegram 还支持带字幕的最终 TTS。启用 tts.mode: "final" 并将
Auto-TTS 设置为 always(或符合条件的 inbound 模式)时,流式文本会一直保留
到合成完成,并作为语音笔记的字幕发送。超出 Telegram 字幕限制的文本会以普通文本消息的形式
跟随语音笔记发送。如果合成失败,或已确认的发送前投递步骤失败,OpenClaw 会改为发送可见文本。
tagged 模式保持其正常的流式行为,而 [[tts:text]] 块中的文本仍然仅作为音频发送。
合成后,OpenClaw 会将批量 TTS 输出持久化到媒体存储中的
tool-speech-synthesis 下。回复使用该稳定的媒体路径,而不是提供方的临时文件,并且常规媒体维护会清理过期输出。
本地 CLI 提供方仍可能在 OpenClaw 导入已完成的字节数据之前,将 {{OutputPath}} 用作临时空间。参见媒体播放,了解内联播放器格式和限制。
按提供方说明:
- **飞书 / WhatsApp 转码:**当语音笔记回复最终以 MP3/WebM/WAV/M4A 或其他类似音频文件形式返回时,通道插件会在发送原生语音消息前,使用
ffmpeg(libopus,64 kbps)将其转码为 48 kHz Ogg/Opus。WhatsApp 会通过 Baileys 的audio负载发送结果,并设置ptt: true和audio/ogg; codecs=opus。转码失败时:飞书会捕获错误并回退为将原始文件作为普通附件发送;WhatsApp 没有回退机制,因此发送本身会失败,而不是发布一个不兼容的 PTT 负载。 - **MiniMax:**普通音频附件使用 MP3(
speech-2.8-hd模型,32 kHz 采样率);对于通道声明的语音笔记目标,会使用ffmpeg转码为 48 kHz Opus。 - **小米 MiMo:**默认使用 MP3,或在配置时使用 WAV;对于通道声明的语音笔记目标,会使用
ffmpeg转码为 48 kHz Opus。 - **本地 CLI:**使用配置的
outputFormat。语音笔记目标会转换为 Ogg/Opus,电话系统输出会使用ffmpeg转换为原始 16 kHz 单声道 PCM。 - **Google Gemini:**返回原始 24 kHz PCM。OpenClaw 会将其包装为用于音频附件的 WAV,为语音笔记目标转码为 48 kHz Opus,并在 Talk/电话系统中直接返回 PCM。
- **Gradium:**音频附件使用 WAV,语音笔记目标使用 Opus,电话系统使用 8 kHz 的
ulaw_8000。 - **Inworld:**普通音频附件使用 MP3,语音笔记目标使用原生
OGG_OPUS,Talk/电话系统使用 22050 Hz 的原始PCM。 - **xAI:**默认使用 MP3;音频文件合成可对缓冲和流式输出使用
mp3、wav、pcm、mulaw或alaw。语音笔记目标对流式和缓冲回退都使用 MP3,因为 xAI 的pcm、mulaw和alaw输出是无头的原始音频。缓冲合成使用 xAI 的批量 REST/v1/tts端点;textToSpeechStream使用原生wss://api.x.ai/v1/tts。这不是实时语音契约。不支持原生 Opus 语音笔记格式。 - **Microsoft:**使用
microsoft.outputFormat(默认audio-24khz-48kbitrate-mono-mp3)。- 绑定的传输层接受
outputFormat,但并非所有格式都能从服务端获取。 - 输出格式值遵循 Microsoft Speech 输出格式(包括 Ogg/WebM Opus)。
- Telegram
sendVoice接受 OGG/MP3/M4A;如果你需要保证获得 Opus 语音消息,请使用 OpenAI/ElevenLabs。 - 如果配置的 Microsoft 输出格式失败,OpenClaw 会重试 MP3。
- 当没有设置显式的语音覆盖且使用默认英文语音时,如果回复文本以 CJK 为主,OpenClaw 会自动切换为中文神经语音(
zh-CN-XiaoxiaoNeural,zh-CN区域设置)。
- 绑定的传输层接受
responseFormat 会覆盖该选择;不兼容语音笔记的格式可能会作为音频文件发送,或者由支持转换的通道进行转码。
Auto-TTS 行为
当启用tts.auto 时,OpenClaw:
- 如果回复已经包含结构化媒体,则跳过 TTS。
- 跳过非常简短的回复(少于 10 个字符)。
- 启用摘要时,使用
summaryModel(或agents.defaults.model.primary)对较长的回复进行摘要。 - 将生成的音频附加到回复中。
- 在
mode: "final"下,流式文本完成后发送 TTS。没有带字幕最终消息支持的频道会收到一个仅包含音频的补充消息;Telegram 会将不超过其字幕限制的文本放入语音消息的字幕中,并将超出部分作为后续文本发送。生成的媒体会经过与普通回复附件相同的频道媒体规范化处理。
maxLength,OpenClaw 绝不会直接跳过音频:
- 开启摘要(默认)且有可用的摘要模型:将文本摘要到大约
maxLength个字符,然后合成该摘要。 - 关闭摘要、摘要失败,或摘要模型没有可用的 API key:将文本截断为
maxLength个字符,并合成截断后的文本。
字段参考
顶层 tts.*
顶层 tts.*
"off" | "always" | "inbound" | "tagged"
自动 TTS 模式。
inbound 仅在收到传入语音消息后发送音频;tagged 仅在回复包含 [[tts:...]] 指令或 [[tts:text]] 区块时发送音频。boolean
deprecated
旧版开关。
openclaw doctor --fix 会将其迁移为 auto。"final" | "all"
default:"final"
"all" 除最终回复外,还包括 tool/block 回复。string
语音提供方 id。未设置时,OpenClaw 会使用注册表自动选择顺序中的第一个已配置提供方。旧的
provider: "edge" 会被 openclaw doctor --fix 重写为 "microsoft"。string
来自
personas 的当前角色 id。会规范化为小写。string
用于自动摘要的便宜模型;默认值为
agents.defaults.model.primary。接受 provider/model 或已配置的模型别名。object
允许模型发出 TTS 指令。
enabled 默认值为 true;allowProvider 默认值为 false。object
由语音提供方 id 键控的、提供方所有的设置。旧的直接块(
tts.openai、.elevenlabs、.microsoft、.edge)会被 openclaw doctor --fix 重写;请只提交 tts.providers.<id>。number
default:"4096"
TTS 输入字符的硬性上限。超过时
/tts audio、tts.convert 和 tts.speak 会失败。number
default:"30000"
请求超时时间,单位毫秒。若设置了单次调用的
timeoutMs(agent tool、gateway),则以它为准;否则,显式配置的 tts.timeoutMs 会优先于任何插件作者提供的默认值。apiKey 字段可以是原始字符串或 SecretRef。在冷启动的 Gateway
启动过程中,若某个不可用的 TTS SecretRef 命中内置 TTS 能力,
则该能力会被标记为配置不可用,而不会停止 Gateway。此时 tts.speak
会返回 UNAVAILABLE,原因是 SECRET_SURFACE_UNAVAILABLE,并且不会发送任何
提供方请求。状态和 doctor 会列出降级的 TTS 所有者及其配置路径。显式
引用会保留在运行时快照中,因此环境变量或配置文件中的凭据不会在无提示的情况下
选择其他账户。重载和配置写入预检会应用基于所有者的降级策略:
未改变且仍符合条件的 TTS 所有者可以保留其最后已知可用凭据作为过期状态,
而新的或已更改的失败会变为冷态,但不会阻塞健康的所有者。结构无效的引用
和已解析值仍然会导致启动失败或拒绝更新。Azure Speech
Azure Speech
string
环境变量:
AZURE_SPEECH_KEY、AZURE_SPEECH_API_KEY 或 SPEECH_KEY。string
Azure Speech 区域(例如
eastus)。环境变量:AZURE_SPEECH_REGION 或 SPEECH_REGION。string
可选的 Azure Speech 端点覆盖(别名
baseUrl)。string
Azure 语音 ShortName。默认
en-US-JennyNeural。旧别名:voice。string
SSML 语言代码。默认
en-US。string
用于标准音频的 Azure
X-Microsoft-OutputFormat。默认 audio-24khz-48kbitrate-mono-mp3。string
用于语音备注输出的 Azure
X-Microsoft-OutputFormat。默认 ogg-24khz-16bit-mono-opus。ElevenLabs
ElevenLabs
string
回退到
ELEVENLABS_API_KEY 或 XI_API_KEY。string
模型 id。默认
eleven_multilingual_v2。旧 id eleven_turbo_v2_5/eleven_turbo_v2 会被规范化为匹配的 flash 模型。string
ElevenLabs 语音 id。默认
pMsXgVXv3BLzUgSXRplE。旧别名:voiceId。object
stability、similarityBoost、style(均为 0..1,默认分别为 0.5/0.75/0)、useSpeakerBoost(true|false,默认 true)、speed(0.5..2.0,默认 1.0)。"auto" | "on" | "off"
文本规范化模式。
string
2 位 ISO 639-1 代码(例如
en、de)。number
整数
0..4294967295,用于尽力而为的确定性。string
覆盖 ElevenLabs API 基础 URL。
Google Gemini
Google Gemini
string
回退到
GEMINI_API_KEY / GOOGLE_API_KEY。如果省略,在环境变量回退前,TTS 可以复用 models.providers.google.apiKey。string
Gemini TTS 模型。默认
gemini-3.1-flash-tts-preview。string
Gemini 预设语音名称。默认
Kore。旧别名:voiceName、voice。string
在口语文本前添加的自然语言风格提示。
string
当你的提示使用了命名说话人时,可选地在口语文本前添加的说话人标签。
"audio-profile-v1"
设置为
audio-profile-v1,可将当前角色提示字段包装进确定性的 Gemini TTS 提示结构中。string
追加到模板“导演备注”的 Google 专用额外角色提示文本。
string
仅接受
https://generativelanguage.googleapis.com。Gradium
Gradium
Inworld
Inworld
本地 CLI(tts-local-cli)
本地 CLI(tts-local-cli)
string
用于 CLI TTS 的本地可执行文件或命令字符串。
string[]
命令参数。支持
{{Text}}、{{OutputPath}}、{{OutputDir}}、{{OutputBase}} 占位符。"mp3" | "opus" | "wav"
预期的 CLI 输出格式。音频附件默认
mp3。number
命令超时时间,单位毫秒。默认
120000。string
可选的命令工作目录。
Record<string, string>
可选的命令环境变量覆盖。
Microsoft(无 API key)
Microsoft(无 API key)
boolean
default:"true"
允许使用 Microsoft 语音。
string
Microsoft 神经语音名称(例如
en-US-MichelleNeural)。旧别名:voice。如果默认英文语音生效且回复文本以 CJK 为主,OpenClaw 会自动切换到 zh-CN-XiaoxiaoNeural。string
语言代码(例如
en-US)。string
Microsoft 输出格式。默认
audio-24khz-48kbitrate-mono-mp3。并非所有格式都受内置的 Edge 后端传输支持。string
百分比字符串(例如
+10%、-5%)。boolean
在音频文件旁写入 JSON 字幕。
string
Microsoft 语音请求的代理 URL。
number
请求超时覆盖(毫秒)。
object
deprecated
旧别名。运行
openclaw doctor --fix 可将持久化配置重写为 providers.microsoft。MiniMax
MiniMax
string
回退到
MINIMAX_API_KEY。Token Plan 认证可通过 MINIMAX_OAUTH_TOKEN、MINIMAX_CODE_PLAN_KEY 或 MINIMAX_CODING_API_KEY。string
默认
https://api.minimax.io。环境变量:MINIMAX_API_HOST。string
默认
speech-2.8-hd。环境变量:MINIMAX_TTS_MODEL。string
默认
English_expressive_narrator。环境变量:MINIMAX_TTS_VOICE_ID。旧别名:voiceId。number
0.5..2.0。默认 1.0。number
(0, 10]。默认 1.0。number
整数
-12..12。默认 0。小数值会在请求前被截断。OpenAI
OpenAI
string
回退到
OPENAI_API_KEY。string
OpenAI TTS 模型 id。默认
gpt-4o-mini-tts。string
语音名称(例如
alloy、cedar)。默认 coral。旧别名:voice。string
显式的 OpenAI
instructions 字段。设置后,不会自动映射角色提示字段。"mp3" | "opus" | "wav"
显式响应格式。未指定时,OpenClaw 会为语音备注目标选择 Opus,否则选择 MP3。对于不对压缩音频进行编码的兼容本地端点,请使用
wav。Record<string, unknown>
在生成的 OpenAI TTS 字段之后,合并进
/audio/speech 请求体的额外 JSON 字段。可用于需要提供方特定键(如 lang)的 OpenAI 兼容端点,例如 Kokoro;不安全的原型键会被忽略。string
覆盖 OpenAI TTS 端点。解析顺序:配置 →
OPENAI_TTS_BASE_URL → https://api.openai.com/v1。非默认值会被视为 OpenAI 兼容的 TTS 端点,因此接受自定义模型名和语音名,并且 speed 将失去其 0.25..4.0 范围检查。OpenRouter
OpenRouter
Volcengine(字节跳动 Seed Speech)
Volcengine(字节跳动 Seed Speech)
string
环境变量:
VOLCENGINE_TTS_API_KEY 或 BYTEPLUS_SEED_SPEECH_API_KEY。string
默认
seed-tts-1.0。环境变量:VOLCENGINE_TTS_RESOURCE_ID。当你的项目具有 TTS 2.0 权限时使用 seed-tts-2.0。string
App key 请求头。默认
aGjiRDfUWi。环境变量:VOLCENGINE_TTS_APP_KEY。string
覆盖 Seed Speech TTS HTTP 端点。环境变量:
VOLCENGINE_TTS_BASE_URL。string
语音类型。默认
en_female_anna_mars_bigtts。环境变量:VOLCENGINE_TTS_VOICE。旧别名:voice。number
提供方原生速度比率,
0.2..3。string
提供方原生情感标签。
string
deprecated
旧版 Volcengine Speech Console 字段。环境变量:
VOLCENGINE_TTS_APPID、VOLCENGINE_TTS_TOKEN、VOLCENGINE_TTS_CLUSTER(默认 volcano_tts)。xAI
xAI
string
环境变量:
XAI_API_KEY。string
默认
https://api.x.ai/v1。环境变量:XAI_BASE_URL。string
默认
eve。启用认证后,openclaw infer tts voices --provider xai 会获取当前内置目录;未认证时会列出离线回退 ara、eve、leo、rex 和 sal。即使账户自定义语音 ID 不在内置列表中,也会继续转发。旧别名:voiceId。string
BCP-47 语言代码或
auto。默认 en。"mp3" | "wav" | "pcm" | "mulaw" | "alaw"
默认
mp3。number
提供方原生速度覆盖,
0.7..1.5。小米 MiMo
小米 MiMo
string
环境变量:
XIAOMI_API_KEY。string
默认
https://api.xiaomimimo.com/v1。环境变量:XIAOMI_BASE_URL。string
默认
mimo-v2.5-tts。环境变量:XIAOMI_TTS_MODEL。也支持 mimo-v2.5-tts-voicedesign。string
对于预设语音模型,默认
mimo_default。环境变量:XIAOMI_TTS_VOICE。旧别名:voice。对于 mimo-v2.5-tts-voicedesign 不会发送该字段。"mp3" | "wav"
默认
mp3。环境变量:XIAOMI_TTS_FORMAT。string
可选的自然语言风格指令,作为用户消息发送;不会被读出来。对于
mimo-v2.5-tts-voicedesign,这是语音设计提示;OpenClaw 在省略时会提供默认值。Agent 工具
tts 工具将文本转换为语音,并返回一个音频附件用于回复传递。在飞书、Matrix、Telegram 和 WhatsApp 上,音频会以语音消息而不是文件附件的形式发送。飞书和 WhatsApp 可以在 ffmpeg 可用时,将非 Opus 的 TTS 输出在此路径上转码。
WhatsApp 通过 Baileys 将音频作为 PTT 语音备注发送(audio 且 ptt: true),并且会单独发送可见文本,而不是与 PTT 音频一起发送,因为客户端对语音备注上的字幕渲染并不稳定。
该工具接受可选的 channel 和 timeoutMs 字段;timeoutMs 是每次调用的提供方请求超时时间,单位为毫秒。每次调用的值会覆盖 tts.timeoutMs;已配置的 TTS 超时会覆盖任何插件编写的提供方默认值。
网关 RPC
服务链接
- Azure Speech 提供商
- Azure Speech REST 文本转语音
- ElevenLabs 身份验证
- ElevenLabs 文本转语音
- Gradium
- Inworld TTS API
- Microsoft Speech 输出格式
- MiniMax T2A v2 API
- node-edge-tts
- OpenAI 音频 API 参考
- OpenAI 文本转语音指南
- speech-core
- Speech Swift
- 火山引擎 TTS HTTP API
- xAI 文本转语音
- 小米 MiMo 语音合成。