如果你想更精准地控制语音合成的播放节奏,需要在 API 请求体中通过 speech_rate 字段设置浮点数值(0.5–2.0,默认值为 1.0)。其中,HTTP 接口使用的是 audio 下的 speech_rate,WebSocket 接口使用 rate,SDK 则对应 SE_PARAMS_KEY_TTS_RATE_FLOAT。尤其需要注意的是,高拟真音色对语速调整更加敏感,因此通常要配合 SSML 做局部语速控制,效果才会更自然稳定。

在火山引擎语音合成场景中,如果想精准调节语速,避免合成音频过快造成字词粘连,或过慢影响整体节奏,必须直接在 API 请求体中设置 speech_rate 浮点参数,而不能依赖前端播放器的倍速功能来替代。
在 HTTP 请求 Body 中设置 speech_rate
首先需要确认,你调用的是火山引擎 TTS 标准 RESTful 接口,其 Endpoint 为 https://openspeech.bytedance.com/api/v1/tts。如果你接入的是 WebSocket 或 SDK,语速参数名称可能分别是 rate 或 speed,因此务必以当前版本的官方文档为准进行配置。
第二步:在 JSON Body 的 audio 对象中加入 "speech_rate": 1.2 字段,取值范围通常为 0.5–2.0,默认值是 1.0;【低于 0.7 容易带来发音失真,高于 1.8 则可能出现跳字、断句异常等问题】。
第三步:完整示例片段如下(仅展示关键部分):
{ "audio": { "voice_type": "xiaochen_emotion", "encoding": "mp3", "speech_rate": 1.2, "volume": 5, "pitch": 0 } }
不同接入方式下的语速参数名对照
方法一:HTTP 接口(推荐用于调试)→ 参数名为 speech_rate,并且必须放在 audio 对象下,注意大小写敏感,也不能写成字符串形式,例如 "1.2"。
方法二:WebSocket 流式接口 → 参数名为 rate,位于 request-level 的 audio 配置块中,支持按句动态控制语速,但每次连接通常只能设置一次初始值。
方法三:iOS/Android SDK → 调用 [self.engine setFloatParam:1.2 forKey:SE_PARAMS_KEY_TTS_RATE_FLOAT];需要注意,该参数设置必须在 createEngineWithDelegate: 之后、startSpeaking: 之前完成,否则不会生效。
语速与音色的协同校准技巧
高拟真音色(如 xiaochen_emotion)对 speech_rate 参数变化更敏感——设置为 1.3 时可能就接近可接受上限,而基础音色 zh_female_xiaomei 往往可以较稳定地运行到 1.5。更稳妥的做法是,先用免费音色进行语速测试,再切换到目标音色做进一步微调。
当文本中包含较多顿号、括号或英文缩写时,单纯提升 speech_rate 往往会加重吞音问题;这时建议同步启用 text_type: "ssml",并在关键片段插入
测试阶段建议务必下载返回的 MP3 文件,并使用专业音频软件查看波形,重点观察“啊”“呃”等虚词是否被压缩成杂音——这通常是语速设置过高、已经超出稳定范围的最直观信号。
