## 语音请求

### 功能说明

语音请求接口接收用户上传的流式语音包，转换为文本后进行自然语言分析，最后检索资源，返回结果

### 请求uri
/xwopenapi/speech

### 请求类型
websocket

### 请求参数
接口请求内容需要按照[公共参数](common_args)中的[websocket请求格式](https://xwcloudapi.weixin.qq.com/schemas/2021-09/network.json#properties/websocket_req)传入，其中`content`字段为以下结构json序列化base64编码结果：



| 字段名  | 类型   | 必填 | 描述                                                         |
| ------- | ------ | ---- | -----|
| speech.voice_seq                 | int    | 是   | 同一个语音流中请求包的自增序号，从0开始；对于speex等类型的压缩语音，是指压缩前原始语音的偏移；例如：0,3200,6400,9600.... |
| speech.is_voice_end              | bool   | 否   | 标记是否是尾包；true-是，false-不是，默认false               |
| speech.voice_len                 | int    | 是   | 该语音请求中语音数据的长度；对于speex等类型的压缩语音，是指压缩前原始语音的长度；需要跟解压后语音的长度一致； |
| speech.samples_per_sec           | int    | 是   | 采样率，8000或16000 |
| speech.bits_per_sample           | int    | 是   | 采样点类型，固定为16 |
| speech.voice_file_type           | int    | 是   | 语音文件类型；1:raw 2:wav                                    |
| speech.voice_encode_type         | int    | 是   | 语音编码类型；1:pcm 2:adpcm 3:feature 4:speex 5:amr 6:silk   |
| speech.voice_data                | string | 是   | 音频流数据base64编码后字符串                                    |
| speech_config.head_silence_thres | uint32 | No   | 默认为5000，即5s长度语音vad 语音前部静音阈值，超过该阈值返回错误，等待用户多久说话的意思，一直不说话认为流程结束 |
| speech_config.tail_silence_thres | uint32 | No   | 默认为500，即500ms vad尾部静音语音尾部静音阈值，停顿多久认为用户说话结束的意思 |
| speech_config.local_vad          | bool   | No   | 是否启用云端vad检测 默认0 0-本地vad,1-云端vad                |
| speech_config.awake_cloud        | bool   | Yes  | 是否采用云端唤醒                                             |
| speech_config.profile_type       | int    | Yes  | 近场还是远场 0-远场，1-近场 默认远场                         |
| speech_config.wakeup_mode        | int    | Yes  | 唤醒模式，0-本地唤醒，1-云端唤醒，2-本地带唤醒词，3-不需要唤醒 |
| speech_config.awake_words        | string | No   | 唤醒词  |
**注意：**

- 同一个语音请求的不同语音片段的[公共参数](common_args)中的`http.header.RequestID`需保持一致

### 请求示例

```
{
  "speech_config": {}, // XWSpeechReqProcessConfig Json 对象
  "speech": {}         // XWSpeechReqSpeechInfo Json 对象
}
```

### silk压缩

我们的silk是silk v3，提供安卓的aar库和demo。

aar下载地址:[https://xiaoweidevice-75050.gzc.vod.tencent-cloud.com/doc/xwsilksdk.aar](https://xiaoweidevice-75050.gzc.vod.tencent-cloud.com/doc/xwsilksdk.aar)


### 返回结果

### ASR识别结果
在发送语音请求过程中，服务端会使用[1001002](cmd_declar)命令字推送ASR识别结果，接口返回参数遵循[公共参数](common_args)中的[websocket响应格式](https://xwcloudapi.weixin.qq.com/schemas/2021-09/network.json#properties/websocket_rsp)，接口返回的`content.response`内容为以下格式：

| 字段名             | 类型   | 描述                                                         |
| ------------------ | ------ | ------------------------------------------------------------ |
| session_ctrl.seq   | int    | 当前语音序列                                                 |
| orig_question_text | string | ASR识别结果                                                  |
| is_voice_start     | bool   | 当前session_ctrl.seq为语音开始标记                           |
| is_voice_end       | bool   | 当前session_ctrl.seq为语音结束标记，客户端收到此标记应终止此次收音 |


### 技能执行结果

接口返回参数遵循[公共参数](common_args)中的[websocket响应格式](https://xwcloudapi.weixin.qq.com/schemas/2021-09/network.json#properties/websocket_rsp)
接口返回的`content.response`内容遵循[资源格式约束](https://xwcloudapi.weixin.qq.com/schemas/2021-09/chat_response.json)

### Demo

demo下载地址: [https://xiaoweidevice-75050.gzc.vod.tencent-cloud.com/doc/xwopendemo.zip](https://xiaoweidevice-75050.gzc.vod.tencent-cloud.com/doc/xwopendemo.zip)
