Skip to content

HTTP TTS

这一页说的是 custom(自定义)引擎——需要用户自己描述请求协议的那一类。内置的 Edge TTS/Google 翻译朗读/百度语音合成是三个独立的专用 provider,不经过这里的模板配置, 见引擎总览

HTTP TTS 配置可描述方法、URL、query、headers、body、content type、语音和模板变量。

请求模板

语法兼容社区“阅读/Legado”风格的 tts.json。可用变量是 speakText(朗读 文本)、speakSpeed(0–10 的整数语速)、speakVoice(音色标识)。支持的写法包括:

text
{{speakText}}                                          裸变量
{{encodeURIComponent(speakText)}}                       单层 URL 编码
{{java.encodeURI(java.encodeURI(speakText))}}           嵌套两层编码(部分接口如思必驰要求双重编码)
{{speakSpeed + 55}}                                     对 speakSpeed 做四则运算
{{(speakSpeed + 5) / 10 + 4}}                           更复杂的算式
{{String(speakText).replace(/&/g,'&').replace(...)}} 链式正则替换,常用于 SSML/XML 转义

GET 模板里裸写 (不显式调用编码函数)会自动按 URL query 语义做一次百分号 编码,兼容早期直接照抄社区模板、忘记加编码的配置;POST body 模板则不会做这层兜底编码—— body 通常是表单/JSON/XML 原文,编码方式必须由配置作者自己显式调用 encodeURI(...) 决定, 不然容易把 JSON 结构本身也编码坏。

常用 GET 模板示例:

text
https://example.com/tts?text={{encodeURIComponent(speakText)}}&voice={{speakVoice}}&speed={{speakSpeed}}

支持 GET/POST/PUT/PATCH/DELETE、JSON、表单、raw body 和大小写不敏感字段别名。

响应

解码器支持:

  • MP3、WAV、AAC、Ogg、FLAC、CAF、AMR、MP4 直接音频;
  • PCM/L16 转 WAV;
  • 常见嵌套 JSON Base64;
  • 有限 SSE Base64 分片;
  • data URI;
  • 单次远程音频 URL 跟随。

JSON/text 错误不能交给 AVAudioPlayer。输入/解码数据有 32 MiB/24 MiB 上限,网络 session 禁用 URL cache 并限制每主机连接数。

不等价能力

需要签名握手和持续双向状态机的 iFlytek/Tencent 等 WebSocket 协议,不能用静态 HTTP 配置 冒充支持,应实现独立 provider adapter。

Readori 使用与开发文档