语音识别
目前支持两种场景,分别为“录音文件”与“一句话识别”,两种场景下入参会有所不同。
由于识别过程是异步,因此接口“voiceRecognition”并不会立即返回识别结果,可以理解为该接口是创建了一个“异步任务”,当这个成功被创建的“异步任务”执行完后,会通过 websocket 将结果推送到所有订阅该 deviceId 的终端上,下文为您详细介绍 ASR 语音识别。
接口定义
sdk.voiceRecognition({...}) => Promise<{...}>
参数说明
关于“录音文件”场景支持的音频类型、大小限制以及相关字段的详细介绍,详情请参见 录音文件识别。
关于“一句话识别”场景支持的音频类型、大小限制以及相关字段的详细介绍,详情请参见 一句话识别。
公共参数
参数名 | 类型 | 必填 | 参数描述 |
DeviceId | string | 否 | 默认使用当前设备的设备 ID。 |
AudioType | string | 是 | 识别场景。 “录音文件”取值“file”。 “一句话识别”取值“sentence”。 |
Data | Blob File | 是 | 音频文件。 |
ResourceName | string | 否 | 文件名称,如果 Data 类型是 File,则取其“name”作为默认值。 |
EngineType | string | 否 | 引擎模型类型,默认值为“16k_zh”。 |
FilterDirty | number | 否 | 是否过滤脏词。 |
FilterModal | number | 否 | 是否过滤语气词。 |
FilterPunc | number | 否 | 是否过滤标点符号。 |
ConvertNumMode | number | 否 | 是否进行阿拉伯数字智能转换。 |
录音文件额外参数
参数名 | 类型 | 必填 | 参数描述 |
ChannelNum | number | 否 | 语音声道数,默认为1。 |
SpeakerDiarization | number | 否 | 是否开启话者分离。 |
SpeakerNumber | number | 否 | 话者分离人数。 |
返回值
参数名 | 类型 | 参数描述 |
ResourceToken | string | 某个设备下,音频文件的唯一标示。 |
监听识别结果
对于“录音文件”场景,如果音频文件过大,后台可能会对音频文件进行分片识别,每个分片识别完成后,都将推送一条 websocket 消息,但推送的消息不保证顺序(例如有可能分片2的结果先到达)。
对于“asrResponse”事件,实际是基于“wsControl”事件进行二次封装;当然,您也可以通过监听“wsControl”事件获取识别结果。
接口定义
sdk.on('asrResponse', ({ deviceId, data }) => void)
返回值说明
参数名 | 类型 | 参数描述 |
deviceId | string | 设备 ID。 |
data | object | 识别结果数据。 |
data.resource_token | string | 某个设备下,音频文件的唯一标示。 |
data.result_code | number | 状态码,0代表成功。 |
data.total_num | number | 分片总数。 |
data.seq | number | 当前分片序号。 |
data.res_text | string | 当前分片识别结果,对于“录音文件”场景,识别结果会包含分段时间戳。 |
获取语音文件下载链接
注意:
仅限“录音文件”场景。
接口定义
sdk.getAsrDownloadUrl({...}) => Promise<{...}>
参数说明
参数名 | 类型 | 必填 | 参数描述 |
DeviceId | string | 是 | 设备 ID。 |
ResourceToken | string | 是 | 调用 voiceRecognition 返回的 ResourceToken。 |
返回值说明
参数名 | 类型 | 参数描述 |
ResourceURL | string | cos 访问链接。 |