语音合成

优质
小牛编辑
187浏览
2023-12-01

1.1. TTS(语音合成) WebSocket接口文档

1.1.1. 概述

本文档目的是描述Rokid云TTS(语音合成)WebSocket接口协议,面向想要了解TTS细节,并具有一定开发能力的开发者或用户。

1.1.2. 服务地址

环境地址用途
线上wss://mapi.open.rokid.com/ws/tts对外提供的正式稳定环境

1.1.3. 协议详解

  • 请求认证:在建立websocket连接时,通过http header authorization 进行请求认证
  • TTS语音合成

WebSocket API 接入参考Demo

1.1.4. 协议地址

1.1.5. 协议概述

此协议遵循 websocket 协议。协议采用先认证,再使用的方式,步骤如下:

  • 建立 wss 连接,注意是 websocket + ssl,在此基础上进行请求认证
  • service 设置为 tts,此连接后续可进行一次或多次语音合成,直至连接断开

语音合成

流程
  1. 一次完整的语音合成的数据包以 id 来标识,称为一个 session
  2. 在websocket请求和响应中,都是遵循protobuf 2.0协议的;
  3. websocket请求Request通过protobuf组装好后需要转化成BinaryWebSocketFrame,目前不支持TextWebSocketFrame
Request如下
参数类型描述默认值
textstring需要转换的text文本
declaimerstring发音人,目前支持 中文成人 "zh" 与 中文儿童 "c1" 两种
codecstring语音流的编码,目前支持PCM、OPU、OPU2、mp3。
content_typestringraw: 返回是二进制语音数据 url: 返回是对应语音数据CDN的urlraw
idint32唯一标识,用于跟踪一个完整的请求,处理及响应事件。0
midibytes用于歌曲合成使用,二进制midi文件
scorestring歌词信息,用于歌曲合成使用
optionsstring可选json字段,配合各种需求使用详见下表
  1. websocket响应以流式数据返回,每个BinaryWebSocketFrame对应的是一个Response的字节流,Response如下:
    Response如下
参数类型描述
textstringvoice语音中包含的文字,如果request的content_type=url,则返回的是保存了文字的url
voicebytes合成的voice语音,如果request的content_type=url,则返回的是语音数据CDN的url
finishbool是否是此次合成请求的最后一个语音包
resultstring结果信息 SUCCESS/ERROR等
idint32唯一标识,用于跟踪一个完整的请求,处理及响应事件。
说明
  1. result字段值代表本次请求是否成功,除了SUCCESS,其他返回值都表示错误(此时云端会主动断掉WebSocket连接),返回值如下:
    • SUCCESS 成功
    • BUSY 云端繁忙/调用受限/欠费
    • UNAUTHENTICATED 验证未通过
    • INTERNAL 云端内部错误
    • BADREQUEST 网络或者协议导致的错误