文档版本:V0.2
Rokid openvoice开放服务(websocket版)包含以下三部分功能,
- 设备认证
- 自然语言合成(TTS)
- 完整语音交互(SPCH)
此文档用于定义开放平台上云端应用接口开发协议,协议遵循 websocket 协议。
wss://apigwws.open.rokid.com/api
详见protobuf
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
key | string | 开放接口Key,在管理平台获取 | 无,必填 |
device_type_id | string | 设备类型ID | 无,必填 |
device_id | string | 设备ID | 无,必填 |
service | string | asr,tts,speech | 无,必填 |
version | string | 接口版本号 | 无,必填 |
timestamp | string | unix时间戳 | 无,必填 |
sign | string | 由以上几项+secret按约定的加密方式生成 | 无,必填 |
sign的生成加密方式:
key={key}&device_type_id={device_type_id}&device_id={device_id}&service={service}&version={version}&time={timestamp}&secret={secret}
的utf8字符串的md5值
其中{xxx}由xxx的值替代
key及secret由开发方通过管理平台获取,并保管。
此处version可有1.0或2.0,分别对应protobuf中v1或v2目录。
请求响应
参数 | 类型 | 描述 |
---|---|---|
result | int32 | 认证结果(成功:0, 失败:-1) |
PCM格式为 RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 24000 Hz语音。 注意,这里的PCM与Asr的PCM格式不一致,因此不能将tts的输出直接作为asr的输入。 可以使用 sox -t s16 -c 1 -r 24000 xxx.pcm xxx.wav 将pcm转成wav。
或者
请求时将 sample_rate 设置为16000,则返回16k的语音数据,可以直接作为asr的输入。
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
id | int32 | 唯一标识,用于跟踪一个完整的请求,处理及响应事件。 | 0 |
text | string | 需要转换的text文本 | 无 |
declaimer | string | 发音者,如"zh","zhangsan","rose" | "zh" |
codec | string | 语音流的编码,目前支持PCM,OPU,OPU2。 | 无 |
sample_rate | uint32 | 语音流的比特率,目前支持24000,16000。 | 24000 |
请求响应
参数 | 类型 | 描述 |
---|---|---|
id | int32 | 唯一标识,用于跟踪一个完整的请求,处理及响应事件。 |
result | SpeechErrorCode | 错误信息 |
text | string | voice语音中包含的文字 |
voice | bytes | 合成的voice语音 |
finish | bool | 语音是否结束 |
PCM格式为 RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz语音。 注意,这里的PCM与Tts的PCM格式不一致,因此不能将tts的输出直接作为asr的输入。 可以使用 sox -t s16 -c 1 -r 16000 xxx.pcm xxx.wav 将pcm转成wav。
参数 | 类型 | 描述 | 默认值 |
---|---|---|---|
id | int32 | 唯一标识,用于跟踪一个完整的请求,处理及响应事件。 | 0 |
type | ReqType | START/VOICE/END 或 TEXT | 无 |
voice | bytes | 需要识别的voice语音流 | 无 |
asr | bytes | 需要理解的asr文本 | 无 |
options | SpeechOptions | 辅助理解的选项 | 无 |
lang | string | 语音流的语言,目前支持zh-CN,en-US。 | zh-CN |
codec | string | 语音流的编码,目前支持PCM,OPU,OPU2。 | PCM |
vad_mode | VadMode | LOCAL/CLOUD | 无 |
vend_timeout | uint32 | 如果vad_mode为CLOUD时,指定vad时间,单位ms | 无 |
no_nlp | bool | 是否需要nlp | false |
no_intermediate_asr | bool | 是否需要asr的实时识别结果 | false |
stack | string | 设备当前的应用栈信息,"appid1:appid2"按照应用被调用的早晚逆序排列。 | 空 |
voice_trigger | string | 激活词,即用于唤醒设备的名字,如"若琪"。 | 空 |
voice_power | float | 语音流的音强 | 如有进行多设备间的仲裁 |
trigger_start | float | 语音流的激活词的开始位置。 | 无 |
trigger_length | float | 语音流的激活词的长度。 | 无 |
skill_options | string | 设备上的状态信息,为json结构,此结构会传给相应的skill的cloud app中。 | 空 |
voice_extra | string | 设备上的语言的额外信息,为json结构,此结构会传给asr中。 | 空 |
vad_begin | uint32 | asr会将语音从 vad_begin ms开始识别,之前的数据丢弃。 | 0 |
参数 | 类型 | 描述 |
---|---|---|
id | int32 | 唯一标识,用于跟踪一个完整的请求,处理及响应事件。 |
result | SpeechErrorCode | 错误信息 |
type | RespType | 结果类型INTERMEDIATE/ASR_FINISH/FINISH |
asr | string | asr实时识别的结果 |
nlp | string | nlp识别的结果 |
action | string | cloud app处理的结果 |
extra | string | 目前有:{"activation": "fake(误激活) |
action:json字符串,结构详见 action定义