资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

流式文本在线合成

接口描述

流式文本在线合成基于websocket协议,可以将输入的文本合成为二进制格式的语音数据。与发起多次短文本语音合成相比,可以获得更高的实时性,在用户输入文本的同时就能接近同步的返回合成音频数据,达到“边合成边播放”的效果。

申请试用

本接口处于邀测阶段,该接口在正式使用之前,请先提交合作咨询,或者提交工单,提供公司名称、cloudID、应用场景,工作人员协助开通权限后方可使用。

功能说明

  • 建议文本不超过2000 GBK字节,即1000个汉字或者字母数字;
  • 输入的文本必须采用UTF-8编码;
  • 支持多音字通过标注自行定义发音。格式如:重(chong2)报集团。

接口调用主流程

交互流程

image.png

握手建立连接

连接请求

握手阶段,客户端主动发起 websocket 连接请求

请求地址

请求地址:wss://aip.baidubce.com/ws/2.0/speech/publiccloudspeech/v1/tts

请求参数

URL中放置请求参数,参数如下:

参数名 类型 参数位置 是否必填 备注
access_token string query 必填 鉴权令牌
per string query 必填 tts发音人

请求示例

curl --location 'wss://aip.baidubce.com/ws/2.0/speech/publiccloudspeech/v1/tts?access_token=xxx&per=xxx'

连接响应

如果握手成功,会返回 101状态码,表示协议握手成功;如果握手失败,则根据不同错误类型返回不同 http status,详细说明如下:
成功:状态码101 Switching Protocols
失败:错误码及描述如下

状态码 状态信息 描述 解决方案
400 Bad Request 参数错误、参数缺失 请参考官网文档,自查token和per
401 Unauthorized 鉴权失败
403 Forbidden 无访问权限,接口功能未开通
404 Not Found 输入的url错误
429 Too Many Requests 触发限流
500 Internal Server Error 服务器内部错误
502 Bad Request 后端服务连接失败
示例
429 Too Many Requests

{
    "code": 276001,
    "message": "Rate limit exceeded error"
}
参数说明
参数名 类型 是否必填 说明
code int 必填 错误码, 使用能力引擎标准的错误码
message string 必填 错误消息

初始化

握手成功后客户端和服务端会建立websocket连接,客户端通过websocket连接可以同时上传和接收数据。

客户端请求参数

  • 帧类型(Opcode):Text
  • 序列化方式:JSON
示例
{
    "type": "system.start",
    "payload": {
        "spd": 5,
        "pid": 5,
        "vol": 5,
        "aue": 3
    }
}
参数说明
参数名称 类型 是否必填 说明
type string 必填 开始帧的类型,固定值 system.start
payload object 可选 合成参数,详见下表
payload 字段说明
参数名称 类型 是否必填 说明
spd int 可选 语速,取值 0-15,默认为 5
pit int 可选 音调,取值 0-15,默认为 5
vol int 可选 音量,基础音库取值0-9,其他音库取值 0-15,默认为 5
aue int 可选 音频格式,3=mp3,4=pcm-16k,5=pcm-8k,6=wav,默认为3

服务端响应

  • 帧类型(Opcode):Text
  • 序列化方式:JSON

正常响应

  • 服务端对客户端「开始合成」的响应

    • code 等于 0:表示通道各个参数已经设置完成;
    • code 不等于 0:表示通道参数设置有误,服务端会断开所有ws连接。
示例
{
    "type": "system.started",
    "code": 0,
    "message": "success",
    "headers": {
        "session_id": "xxx"
               }
}
参数说明
参数名称 类型 是否必填 说明
type string 必填 固定值 system.started,表示开始帧的类型
code int 必填 错误码,0 表示成功
message string 必填 错误信息
headers object 必填 系统定义的请求头
+ session_id string 必填 sn 信息,格式为 [0-9a-zA-Z_-]{1,64}

异常响应

示例
{
    "type": "system.started",
    "code": 216100,
    "message": "语速参数错误, 请输入0-15的整数",
    "headers": {
        "session_id": "xxx"
               }
}
异常响应列表
type code message 说明
system.started 216100 参数错误 参数类型错误
system.started 216100 语速参数错误, 请输入0-15的整数 语速取值超限
system.started 216100 音调参数错误, 请输入0-15的整数 音调取值超限
system.started 216100 基础音库音量参数错误, 请输入0-9的整数 基础音库音量取值超限
system.started 216100 精品/臻品音库音量参数错误, 请输入0-15的整数 精品/臻品音库音量取值超限
system.started 216100 音频格式错误, 3:mp3, 4:pcm-16k, 5:pcm-8k, 6:wav 音频格式取值错误

不响应

  • 已经发送过开始合成

发送文本

客户端请求

  • 帧类型:Text
  • 序列化方式:JSON
示例
{
    "type": "text",
    "payload": {
        "text": "需要进行语音合成的文字"
    }
}
参数说明
参数名称 类型 是否必填 说明
type string 必填 数据帧的类型,固定值 text
payload array 可选 具体见下表
payload 字段说明
参数名称 类型 是否必填 说明
+ text string 必填 需要进行语音合成的文字,不超过1000字

服务端响应

正常响应

WebSocket opcode`:`binary
WebSocket消息体:音频二进制数据

异常响应

示例
{
    "type": "system.error",
    "code": 216103,
    "message": "文本过长, 请控制在1000字以内",
    "headers": {
        "session_id": "xxx"
    }
}
异常响应列表-文本限制说明
  1. 单次发送文本不超过1000汉字,若超过,下发提示帧【文本过长,请控制在1000字以内】
  2. 未处理文本长度超过10000汉字后不处理新增文本,下发提示帧【当前待处理文本过长,请稍后发送】
type code message 说明
text 216101 参数缺失 缺少必需的参数
text 216103 文本过长, 请控制在1000字以内 单次文本不能超过1000字
text 216419 当前待处理文本过长,请稍后发送 发送频率过快,待处理文本过长

不响应

  • 未发送开始合成就发送文本
  • 已经发送结束合成仍发送文本
  • 发送文本信息无内容
  • 发送文本信息无标点隔断,server等待标点或字符数变多再进行合成

结束合成

客户端请求

  • 帧类型(Opcode):Text
  • 序列化方式:JSON

正常响应

  • 表示客户端没有文本需要合成了,客户端要求服务端立即合成所有缓存的文本;
  • 注意事项:

    • 由于流式文本语音合成接口,服务端会分句合成音频,所以服务端会缓存客户端的文本,客户端需要再没有文本合成时,立刻发送此消息,否则可能丢失文本。
    • 客户端发送此消息后,服务端不在接收任何客户端后续请求。
示例
{
    "type":"system.finish",
}
参数说明
参数名称 类型 是否必填 说明
type string 必填 结束帧的类型,固定值 system.finish

服务端响应

  • 帧类型:Text
  • 序列化方式:JSON

正常响应

  • 服务端对客户端「合成结束」的响应,表示服务端已经完成所有文本的合成,且所有音频数据下发完毕。
示例
{
    "type":"system.finished",
    "code": 0,
    "message": "success",
}
参数说明
参数名称 类型 是否必填 说明
type string 必填 结束帧的类型,固定值 system.finished
code int 必填 错误码,0表示成功
message string 必填 错误信息

异常响应

暂无

不响应

  • 文本未合成完成,合成结束后会响应结束

断开连接

正常断开

服务端响应结束合成后,会主动断开连接

异常断开

客户端超过一分钟不发送消息,服务端会异常断开连接

上一篇
长文本在线合成API
下一篇
音色列表