基于文本到语音(Text-to-Speech, TTS)的流式语音合成功能,单次请求支持的最大文本长度为 10000 字符,适用于低延迟、边合成边播放的实时语音生成需求。
| 参数名 | 必填 | 说明 | 示例 |
|---|---|---|---|
| Authorization | 是 | 鉴权 Token。格式:Bearer SENSEAUDIO_API_KEY | Bearer sk-123456… |
| Content-Type | 是 | 内容类型。固定为 application/json | application/json |
| 参数名 | 类型 | 必填 | 描述 | 示例值 |
|---|---|---|---|---|
| model | string | 是 | 模型名称 | senseaudio-tts-1.5-260319 |
| text | string | 是 | 待合成的文本内容。支持中英文,最大 10000 字符。<break time=500>详解见下方停顿符说明 | 你好,<break time=500>世界 |
| stream | boolean | 是 | 流式输出。固定为 true。 | true |
| voice_setting | object | 是 | 音色相关设置。详见下表。 | { "voice_id": "…" } |
| audio_setting | object | 否 | 音频格式设置。详见下表。 | { "sample_rate": 32000 } |
| dictionary | array | 否 | 多音字配置列表。详见下表(模型必须为senseaudio-tts-1.5-260319) | [{"original": "好干净","replacement": "[hao4]干净"}] |
| stream_options | object | 否 | 流式输出配置列表。详见下表 | {"exclude_aggregated_audio": true} |
<break> 用于在语音合成中插入停顿。
<break time=500>示例:
你好<break time=500>欢迎使用我们的服务| 参数名 | 类型 | 必填 | 描述 | 默认值 | 取值范围 |
|---|---|---|---|---|---|
| voice_id | string | 是 | 音色 ID。请参考 音色服务说明。 | - | - |
| speed | float | 否 | 语速调节。 | 1.0 | [0.5, 2.0] |
| vol | float | 否 | 音量调节。 | 1.0 | [0.01, 10.0] |
| pitch | int | 否 | 音调调节。 | 0 | [-12, 12] |
| latex_read | boolean | 否 | 数学公式朗读,支持 LaTeX、MathML、Unicode 数学符号等格式。(会产生额外的性能损耗) | false | - |
| 参数名 | 类型 | 必填 | 描述 | 默认值 | 选项 |
|---|---|---|---|---|---|
| format | string | 否 | 音频编码格式。 | "mp3" | mp3, wav, pcm, flac |
| sample_rate | int | 否 | 音频采样率 (Hz)。 | 32000 | 8000, 16000, 22050, 24000, 32000, 44100 |
| bitrate | int | 否 | 比特率 (仅 MP3)。 | 128000 | 32000, 64000, 128000, 256000 |
| channel | int | 否 | 声道数。 | 2 | 1 (单声道), 2 (双声道) |
| 参数名 | 类型 | 必填 | 描述 | 默认值 | 示例 |
|---|---|---|---|---|---|
| original | string | 是 | 原始文本。 | 无 | 好干净 |
| replacement | string | 是 | 多音字配置。 | 无 | [hao4]干净 |
| 参数名 | 类型 | 必填 | 描述 | 默认值 | 示例 |
|---|---|---|---|---|---|
| exclude_aggregated_audio | boolean | 否 | 是否排除聚合音频。 | false | true/false |
响应使用 SSE (Server-Sent Events) 格式,Content-Type 为 text/event-stream; charset=utf-8。
每个数据块以 data: 开头,后跟 JSON 对象。
| 参数名 | 类型 | 说明 |
|---|---|---|
| data | object | 返回的合成数据对象,可能为 null,需进行非空判断 |
| data.audio | string | 合成后的音频数据,采用 hex 编码,格式与请求中指定的输出格式一致 |
| data.status | int64 | 当前音频流状态:1 表示合成中,2 表示合成结束 |
| extra_info | object | 音频的附加信息。流式返回时只有最后一个 chunk 会返回 |
| extra_info.audio_length | int64 | 音频时长(毫秒) |
| extra_info.audio_sample_rate | int64 | 音频采样率 |
| extra_info.audio_size | int64 | 音频文件大小(字节) |
| extra_info.bitrate | int64 | 音频比特率 |
| extra_info.audio_format | string | 生成音频文件的格式。取值范围:mp3, pcm, flac, wav |
| extra_info.audio_channel | int | 生成音频声道数。1:单声道,2:双声道 |
| extra_info.word_count | int64 | 字数:按 grapheme cluster 统计合成文本内容,且排除纯空白/标点/控制符的簇 |
| extra_info.usage_characters | int64 | 字符数:按 Unicode 码点统计合成文本内容 |
| trace_id | string | 链路追踪 ID |
| base_resp | object | 本次请求的状态码和详情 |
| base_resp.status_code | int64 | 状态码(HTTP status code) |
| base_resp.status_msg | string | 状态详情 |
data: {"data":{"audio":"49443304...","status":1},"extra_info":null,"trace_id":"69c20e38c8761996a85d57881fe4d817","base_resp":{"status_code":0,"status_msg":""}}
data: {"data":{"audio":"fffb9864...","status":1},"extra_info":null,"trace_id":"69c20e38c8761996a85d57881fe4d817","base_resp":{"status_code":0,"status_msg":""}}
data: {"data":{"audio":"fffb9864...","status":2},"extra_info":{"audio_length":2306,"audio_sample_rate":32000,"audio_size":36908,"bitrate":128000,"audio_format":"mp3","audio_channel":2,"word_count":24,"usage_characters":30},"trace_id":"69c20e38c8761996a85d57881fe4d817","base_resp":{"status_code":0,"status_msg":"success"}}curl -X POST https://api.senseaudio.cn/v1/t2a_v2 \
-H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "senseaudio-tts-1.5-260319",
"text": "这是一个流式输出的例子。",
"stream": true,
"voice_setting": {
"voice_id": "male_0004_a",
"latex_read":false
},
"stream_options": {
"exclude_aggregated_audio": true
}
}'