# 语音合成_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