# 语音合成_v1.0
当用户提问或者请求时,客户端使用本接口进行语音回答。以下包含语音合成的指令和事件。
# 语音合成控件的状态
PLAYING(播放中): TTS说话的过程中,语音合成控件应该是播放中状态。
FINISHED(已完成): 当客户端停止说话,随着SpeechFinished
事件,语音合成控件应该切换为已完成状态。
# Speak指令
任何一次云端被要求语音回答时,这个指令都会从云端发送至客户端。大多数情况下,Speak指令用来回应用户的需求,另外Speak指令也会用于通知用户操作已完成。 这个指令将向客户端发送:JSON格式的指令,和二进制的音频附件。
# 消息样式
{
"directive": {
"header": {
"namespace": "SpeechSynthesizer",
"name": "Speak",
"messageId": "e52e7a4c...",
"dialogRequestId": "49687be..."
},
"payload": {
"url": "https://www.iflyos.cn/example...",
"format": "String",
"token": "S0wiXQZ1rVBkov..."
}
}
}
# 二进制音频附件
每一个Speak
指令都有一个对应的二进制音频附件,二进制音频的文件头:
Content-Type: application/octet-stream
Content-ID: {{Audio Item CID}}
{{BINARY AUDIO ATTACHMENT}}
# Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
dialogRequestId | 客户端必须为recognize 请求创建的唯一ID,此参数用于关联响应特定Recognize 事件发送的指令 | String |
# Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
url | 音频内容的唯一标识,url前面有cid: 示例: cid:String | String | 是 |
format | 返回的音频文件的格式 取值: AUDIO_OPUS | String | 是 |
token | 表示当前TTS的不透明token | String | 是 |
# SpeechStarted 事件
在客户端处理Speak
指令并开始合成语音录音之后,发送该事件到云端。
# 消息样式
{
"event": {
"header": {
"namespace": "SpeechSynthesizer",
"name": "SpeechStarted",
"messageId": "e52e7a4c..."
},
"payload": {
"token": "S0wiXQZ1rVBkov..."
}
}
}
# Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
# Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | Speak 指令提供的不透明token | String | 是 |
# SpeechFinished 事件
在客户端处理Speak
指令且TTS完全传达至用户时,必须发送该事件到云端。
如果TTS没有播完,比如用户打断了TTS,则无需发送该事件。
# 消息样式
{
"event": {
"header": {
"namespace": "SpeechSynthesizer",
"name": "SpeechFinished",
"messageId": "e52e7a4c..."
},
"payload": {
"token": "S0wiXQZ1rVBkov..."
}
}
}
# Header参数
参数名 | 说明 | 类型 |
---|---|---|
messageId | 代表一条message的唯一ID | String |
# Payload参数
参数名 | 说明 | 类型 | 必须出现 |
---|---|---|---|
token | Speak 指令提供的不透明token | String | 是 |