说明
目前该能力只对企业客户开放,如需测试或接入须先进行企业认证。
使用账号申请部分申请到的 appid&access_token 进行调用
文本一次性送入,后端边合成边返回音频数据
接口地址为 wss://openspeech.bytedance.com/api/v1/tts/ws_binary
认证方式使用 Bearer Token,在请求的 header 中加上"Authorization": "Bearer; {token}"
,并在请求的 json 中填入对应的 appid。
注意
Bearer 和 token 使用分号 ; 分隔,替换时请勿保留{}
AppID/Token/Cluster 等信息可参考 控制台使用FAQ-Q1
所有字段以 Big Endian(大端序) 的方式存储。
字段描述
字段 Field (大小, 单位 bit) | 描述 Description | 值 Values |
---|---|---|
协议版本(Protocol version) (4) | 可能会在将来使用不同的协议版本,所以这个字段是为了让客户端和服务器在版本上保持一致。 |
|
报头大小(Header size) (4) | header 实际大小是 |
|
消息类型(Message type) (4) | 定义消息类型。 |
|
Message type specific flags (4) | flags 含义取决于消息类型。 | |
序列化方法(Message serialization method) (4) | 定义序列化 payload 的方法。 |
|
压缩方法(Message Compression) (4) | 定义 payload 的压缩方法。 |
|
保留字段(Reserved) (8) | 保留字段,同时作为边界 (使整个报头大小为 4 个字节). |
|
目前所有 TTS websocket 请求都使用 full client request 格式,无论"query"还是"submit"。
b0001
(即 4B,没有 header extension)。b0001
.b0000
.b0001
JSON。字段参考上方表格。b0001
.b1011
.b0000
- 没有 sequence number.b0001
- sequence number > 0.b0010
orb0011
- sequence number < 0,表示来自服务器的最后一条消息,此时客户端应合并所有音频片段(如果有多条)。b0000
(raw bytes).使用账号申请部分申请到的 appid&access_token 进行调用
文本全部合成完毕之后,一次性返回全部的音频数据
接口地址为 https://openspeech.bytedance.com/api/v1/tts
认证方式采用 Bearer Token.
1)需要在请求的 Header 中填入"Authorization":"Bearer;${token}"
注意
Bearer 和 token 使用分号 ; 分隔,替换时请勿保留${}
AppID/Token/Cluster 等信息可参考 控制台使用FAQ-Q1
Websocket 与 Http 调用参数相同
字段 | 含义 | 层级 | 格式 | 必需 | 备注 |
---|---|---|---|---|---|
app | 应用相关配置 | 1 | dict | ✓ | |
appid | 应用标识 | 2 | string | ✓ | 需要申请 |
token | 应用令牌 | 2 | string | ✓ | 可传任意非空字符串 |
cluster | 业务集群 | 2 | string | ✓ | volcano_tts |
user | 用户相关配置 | 1 | dict | ✓ | |
uid | 用户标识 | 2 | string | ✓ | 可传任意非空字符串,传入值可以通过服务端日志追溯 |
audio | 音频相关配置 | 1 | dict | ✓ | |
voice_type | 音色类型 | 2 | string | ✓ | |
encoding | 音频编码格式 | 2 | string | wav / pcm / ogg_opus / mp3,默认为 pcm | |
speed_ratio | 语速 | 2 | float | [0.8,2],默认为 1,通常保留一位小数即可 | |
request | 请求相关配置 | 1 | dict | ✓ | |
reqid | 请求标识 | 2 | string | ✓ | 需要保证每次调用传入值唯一,建议使用 UUID |
text | 文本 | 2 | string | ✓ | 合成语音的文本,长度限制 1024 字节(UTF-8 编码) |
text_type | 文本类型 | 2 | string | 使用 ssml 时需要指定,值为"ssml" | |
operation | 操作 | 2 | string | ✓ | query(非流式,http 只能 query) / submit(流式) |
备注:
请求示例:
{ "app": { "appid": "appid123", "token": "access_token", "cluster": "volcano_tts", }, "user": { "uid": "uid123" }, "audio": { "voice_type": "zh_male_M392_conversation_wvae_bigtts", "encoding": "mp3", "speed_ratio": 1.0, }, "request": { "reqid": "uuid", "text": "字节跳动语音合成", "operation": "query", } }
字段 | 含义 | 层级 | 格式 | 备注 |
---|---|---|---|---|
reqid | 请求 ID | 1 | string | 请求 ID,与传入的参数中 reqid 一致 |
code | 请求状态码 | 1 | int | 错误码,参考下方说明 |
message | 请求状态信息 | 1 | string | 错误信息 |
sequence | 音频段序号 | 1 | int | 负数表示合成完毕 |
data | 合成音频 | 1 | string | 返回的音频数据,base64 编码 |
addition | 额外信息 | 1 | string | 额外信息父节点 |
duration | 音频时长 | 2 | string | 返回音频的长度,单位 ms |
响应示例
{ "reqid": "reqid", "code": 3000, "operation": "query", "message": "Success", "sequence": -1, "data": "base64 encoded binary data", "addition": { "duration": "1960", } }
错误码 | 错误描述 | 举例 | 建议行为 |
---|---|---|---|
3000 | 请求正确 | 正常合成 | 正常处理 |
3001 | 无效的请求 | 一些参数的值非法,比如 operation 配置错误 | 检查参数 |
3003 | 并发超限 | 超过在线设置的并发阈值 | 重试;使用 sdk 的情况下切换离线 |
3005 | 后端服务忙 | 后端服务器负载高 | 重试;使用 sdk 的情况下切换离线 |
3006 | 服务中断 | 请求已完成/失败之后,相同 reqid 再次请求 | 检查参数 |
3010 | 文本长度超限 | 单次请求超过设置的文本长度阈值 | 检查参数 |
3011 | 无效文本 | 参数有误或者文本为空、文本与语种不匹配、文本只含标点 | 检查参数 |
3030 | 处理超时 | 单次请求超过服务最长时间限制 | 重试或检查文本 |
3031 | 处理错误 | 后端出现异常 | 重试;使用 sdk 的情况下切换离线 |
3032 | 等待获取音频超时 | 后端网络异常 | 重试;使用 sdk 的情况下切换离线 |
3040 | 后端链路连接错误 | 后端网络异常 | 重试 |
3050 | 音色不存在 | 检查使用的 voice_type 代号 | 检查参数 |