API Path
/aipaas/voice/v1/rttsStreamTwoWay/bistreaming
请求协议
WS
请求头部 :
| 头部标签 | 必填 | 说明 | 类型 | 数据字典 | 限制 | 头部内容 | 示例 |
|---|---|---|---|---|---|---|---|
| Content-Type | 是 | 内容类型 | application/json | application/json | |||
| X-APP-ID | 是 | 买家中心-已购能力-【X-APP-ID】 | |||||
| Device-Uuid | 是 | 设备管理-设备uuid | |||||
| Authorization | 是 | 鉴权信息 | |||||
| 建立连接时的响应内容(websocket open) : | |||||||
| 请求报文 : |
请求参数 Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| req_id | 请求全局唯⼀ ID,记录该值便于排查问题 | 是 | [string] | 0 | ||
| synth_status | 合成状态 0:开始合成 ; 1:发送文本流; 2:结束文本流; |
是 | [int] | 0 | ||
| text | 待合成的⽂本,需要为 UTF-8 编码 | 是 | [string] | 0 | ||
| format | 音频编码格式,支持 PCM 格式,默认值:PCM | 否 | [string] | 0 | ||
| sample_rate | ⾳频采样率,⽀持 24000Hz、22050Hz、16000 Hz 和 8000 Hz,默认值: 24000 | 否 | [int] | 0 | ||
| voice | 说话⼈,支持音色 huoponv、cixingnan、songchinan、surennan、cixingnan2、 zhubonan、kefunan、zhuchinan、jilunan2、surennv、xianliaonv、mansunv、 kefunv1、ruyanv、xinwennv、kefunv2、luolinv、huoponv2、qingtiannv、lucas、 joyce、guangzhounv、shanghainv、xiannv、chengdunv、zhengzhounv、 xiamennv、changshanv、dongbeinv,默认⾳⾊为 huoponv | 否 | [string] | 0 | ||
| volume | ⾳量,取值范围:[0, 100],默认值:50 | 否 | [int] | 0 | ||
| speech_rate | 语速,取值范围:[0.5, 2.0],默认值:1.0 | 否 | [float] | 0 | ||
| enable_markdown_filter | 是否开启 markdown 过滤, 默认值为 false | 否 | [boolean] | 0 | ||
| 响应报文 : |
返回结果
成功 (200)
Json
Object
| 参数名 | 说明 | 必填 | 类型 | 数据字典 | 限制 | 示例 |
|---|---|---|---|---|---|---|
| code | 状态码,⻅服务码说明 | 是 | [int] | 0 | ||
| message | 状态说明,⻅服务码说明 | 是 | [string] | 0 | ||
| sid | 会话全局唯一 id,用于记录本次会话 | 是 | [string] | 0 | ||
| result | 是 | [object] | 0 | |||
| result>>audio | 合成⾳频数据,经过 base64 编码 | 是 | [string] | 0 | ||
| result>>audio_len | 合成⾳频⻓度,单位:ms | 是 | [int] | 0 | ||
| result>>is_end | 标志位: true:最后⼀个合成⽚段 false:中间合成⽚段 | 是 | [boolean] | 0 |
详细说明 :
# 1、能力简介
* 支持输出格式:PCM 编码;
* 支持设置采样率:8000 Hz,16000 Hz, 22050Hz, 24000Hz;
* ⾳频为单声道,位深为 16 bit;
* 支持设置语速、音量;
* 支持设置多种说话人;
* ⽀持⼀次性合成 500 字符以内的文字,其中 1 个汉字、1 个英文字⺟、1 个标点或 1 个句⼦中间空格均算作 1 个字符,超过 500 个字符的内容将会截断,超过500字的文字不再进⾏合成;
* 仅支持采用 UTF-8 编码的文本输入;
# 2、修订历史
| 修订日期 | 算法版本号 | 修订内容 |
| ---- | ----- | ---- |
| 2025-12-09 | V1.0.0 | 算法首次上线 |
# 3、服务鉴权
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 接口签名认证。
# 4、请求参数说明
无
# 5、握手返回结果说明
#### 5.1 握手返回结果
| 返回码 | 说明 | 错误信息 | 解决⽅法 |
| --- | --- | ---- | ---- |
| 101 | 成功 | {"message":"success"} | 成功,开始语音合成 |
| 4001 | 授权失败 | {"message":"check sign fail"} | 联系商务,更新授权 |
| 4002 | 并发请求过多 | {"message":"Too many requests."} | 联系商务,增加并发 |
# 6、响应结果说明
## 6.1、开始合成响应示例
```json
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml"
}
```
## 6.2、接收合成数据响应示例
```json
{
"code": 10000,
"message": "Success",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": false
}
}
```
## 6.3、合成结束响应示例
```json
{
"code": 10000,
"message": "Success",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": true
}
}
```
# 7、请求示例
#### 1. 发送请求
客户端发起请求,服务端确认请求有效。其中在请求消息中进行参数设置,输入参数如下表所示:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| req_id | string | 是 | 请求全局唯一 ID,记录该值便于排查问题 |
| synth_status | int | 是 | 合成状态**0:开始合成** ;1:发送文本流;2:结束文本流; |
| format | string | 否 | 音频编码格式,支持 PCM,默认值:PCM |
| sample_rate | int | 否 | ⾳频采样率,⽀持 24000Hz、22050Hz、16000 Hz 和 8000 Hz,默认值: 24000 |
| voice | string | 否 | 说话⼈,支持音色 huoponv、cixingnan、songchinan、surennan、cixingnan2、 zhubonan、kefunan、zhuchinan、jilunan2、surennv、xianliaonv、mansunv、 kefunv1、ruyanv、xinwennv、kefunv2、luolinv、huoponv2、qingtiannv、lucas、 joyce、guangzhounv、shanghainv、xiannv、chengdunv、zhengzhounv、 xiamennv、changshanv、dongbeinv,默认⾳⾊为 huoponv |
| volume | int | 否 | 音量,取值范围:[0, 100],默认值:50 |
| speech_rate | float | 否 | 语速,取值范围:[0.5, 2.0],默认值:1.0 |
| enable_markdown_filter | bool | 否 | 是否开启 markdown 过滤, 默认值为 false |
输入参数组成的 JSON 字段示例:
```json
{
"req_id": "3a87fe9793c9-4ebd-95d4-4ce2-a80c054b",
"synth_status": 0
}
```
#### 2. 响应结果
客户端发起开始合成请求后,服务端建立会话,并进行参数解析,并返回对应的消息。
| 名称 | 类型 | 说明 |
| --- | --- | --- |
| code | int | 状态码,⻅服务码说明 |
| message | string | 状态说明,⻅服务码说明 |
| sid | string | 会话全局唯一 id,用于记录本次会话 |
输出参数示例:
```json
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml"
}
```
#### 3. 发送文本流
客户端接收到服务端发送的确认合成请求有效的响应后,开始发送文本流数据,请求 body 各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| synth_status | int | 是 | 合成状态0:开始合成;**1:发送文本流;** 2:结束文本流; |
| text | string | 是 | 文本流,需要为 `UTF-8` 编码 |
发送文本流示例:
```json
{
"synth_status": 1,
"text": "今天"
}
```
#### 4. 结束发送文本数据
客户端文本流发送完成,结束文本流,请求 body 各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| synth_status | int | 是 | 合成状态0:开始合成;1:发送文本流;**2:结束文本流;** |
| text | string | 是 | 文本流,需要为 `UTF-8` 编码 |
输出参数示例:
```json
{
"synth_status": 2,
"text": "怎么了"
}
```
# 8、状态码说明
| 状态码 | 解释 | 说明 | 解决方法 |
| --- | --- | --- | ---- |
| 10301 | Parameter error | 参数错误 | 检查请求体是否符合接口协议 |
| 10304 | Parse request body fail | 请求格式错误 | 查看请求的 URL body 格式是否正确,参考接口文档 |
| 10401 | Session not found | 会话id查询失败 | 检查客户端发送的请求,通常是因为没有发送开始合成请求 |
| 10402 | Session not begun | 尚未发送开始合成标志 | 检查是否发送开始合成标志 |
| 10403 | Session is running | 重复发送开始合成标志 | 检查是否重复发送开始合成标志,若重复,请先发送结束合成标志 |
| 10503 | Server connection time out | 服务连接超时 | 联系技术人员 |
| 10903 | Synthesis failed | 合成失败 | 联系技术人员 |
| 10000 | Success | 成功 | 执行下一步操作 |
| 修订日期 | 算法版本号 | 修订内容 |
| ---- | ----- | ---- |
| 2025-12-09 | V1.0.0 | 算法首次上线 |
服务接口调用时需要严格遵循服务鉴权规则,服务调用鉴权规则请参见:开发指南 - 接口签名认证。
无
| 返回码 | 说明 | 错误信息 | 解决⽅法 |
| --- | --- | ---- | ---- |
| 101 | 成功 | {"message":"success"} | 成功,开始语音合成 |
| 4001 | 授权失败 | {"message":"check sign fail"} | 联系商务,更新授权 |
| 4002 | 并发请求过多 | {"message":"Too many requests."} | 联系商务,增加并发 |
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml"
}
{
"code": 10000,
"message": "Success",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": false
}
}
{
"code": 10000,
"message": "Success",
"result": {
"audio": "//6YYmNiDlSUXjZlDP8yADQAQ1E2ANKJOaTqFGUgIwDQAKAA==",
"audio_len": 2500,
"is_end": true
}
}
客户端发起请求,服务端确认请求有效。其中在请求消息中进行参数设置,输入参数如下表所示:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| req_id | string | 是 | 请求全局唯一 ID,记录该值便于排查问题 |
| synth_status | int | 是 | 合成状态
0:开始合成 ;
1:发送文本流;
2:结束文本流; |
| format | string | 否 | 音频编码格式,支持 PCM,默认值:PCM |
| sample_rate | int | 否 | ⾳频采样率,⽀持 24000Hz、22050Hz、16000 Hz 和 8000 Hz,默认值: 24000 |
| voice | string | 否 | 说话⼈,支持音色 huoponv、cixingnan、songchinan、surennan、cixingnan2、 zhubonan、kefunan、zhuchinan、jilunan2、surennv、xianliaonv、mansunv、 kefunv1、ruyanv、xinwennv、kefunv2、luolinv、huoponv2、qingtiannv、lucas、 joyce、guangzhounv、shanghainv、xiannv、chengdunv、zhengzhounv、 xiamennv、changshanv、dongbeinv,默认⾳⾊为 huoponv |
| volume | int | 否 | 音量,取值范围:[0, 100],默认值:50 |
| speech_rate | float | 否 | 语速,取值范围:[0.5, 2.0],默认值:1.0 |
| enable_markdown_filter | bool | 否 | 是否开启 markdown 过滤, 默认值为 false |
输入参数组成的 JSON 字段示例:
{
"req_id": "3a87fe9793c9-4ebd-95d4-4ce2-a80c054b",
"synth_status": 0
}
客户端发起开始合成请求后,服务端建立会话,并进行参数解析,并返回对应的消息。
| 名称 | 类型 | 说明 |
| --- | --- | --- |
| code | int | 状态码,⻅服务码说明 |
| message | string | 状态说明,⻅服务码说明 |
| sid | string | 会话全局唯一 id,用于记录本次会话 |
输出参数示例:
{
"code": 10000,
"message": "Success",
"sid": "4eHgiLCBhbGdvcml"
}
客户端接收到服务端发送的确认合成请求有效的响应后,开始发送文本流数据,请求 body 各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| synth_status | int | 是 | 合成状态
0:开始合成;
1:发送文本流;
2:结束文本流; |
| text | string | 是 | 文本流,需要为 UTF-8 编码 |
发送文本流示例:
{
"synth_status": 1,
"text": "今天"
}
客户端文本流发送完成,结束文本流,请求 body 各参数含义如下:
| 名称 | 类型 | 必需 | 说明 |
| --- | --- | --- | --- |
| synth_status | int | 是 | 合成状态
0:开始合成;
1:发送文本流;
2:结束文本流; |
| text | string | 是 | 文本流,需要为 UTF-8 编码 |
输出参数示例:
{
"synth_status": 2,
"text": "怎么了"
}
| 状态码 | 解释 | 说明 | 解决方法 |
| --- | --- | --- | ---- |
| 10301 | Parameter error | 参数错误 | 检查请求体是否符合接口协议 |
| 10304 | Parse request body fail | 请求格式错误 | 查看请求的 URL body 格式是否正确,参考接口文档 |
| 10401 | Session not found | 会话id查询失败 | 检查客户端发送的请求,通常是因为没有发送开始合成请求 |
| 10402 | Session not begun | 尚未发送开始合成标志 | 检查是否发送开始合成标志 |
| 10403 | Session is running | 重复发送开始合成标志 | 检查是否重复发送开始合成标志,若重复,请先发送结束合成标志 |
| 10503 | Server connection time out | 服务连接超时 | 联系技术人员 |
| 10903 | Synthesis failed | 合成失败 | 联系技术人员 |
| 10000 | Success | 成功 | 执行下一步操作 |