1. 接入流程
2. 接入准备
2.1 SDK 获取
2.2 接入须知
开发者在调用前请先查看实时语音识别的接口说明,了解接口的使用要求和使用步骤。
该接口需要手机能够连接网络(3G、4G、5G 或 Wi-Fi 等)。
运行 Demo 必须设置 AppID、SecretID、SecretKey,可在 API 密钥管理 中获取。
2.3 开发环境
添加实时语音识别 SDK har:
"dependencies": {"QCloudRealTime": "file:../qcloudrealtime.har"}
需根据实际路径替换配置。
3. 快速接入
以下为 demo 中的代码片段,完整代码请参考 sdk/demo 工程。
3.1 配置识别任务
private _builder: QCloud.RealTime.Builder = new QCloud.RealTime.Builder...this._builder.appID = this._app_idthis._builder.secretID = this._secret_idthis._builder.secretKey = this._secret_key
配置识别任务相关参数。
3.2 启动识别任务
使用上面的 Builder 可以创建并启动识别任务:
this._controller = this._builder.build(this._source, {onSlice: (data, raw) => {console.log(`----- ${data}`)this._tmp_result = data},onSegment: (data, raw) => {console.log(`----- ${data}`)this._result += datathis._tmp_result = ''},onData(data) {console.log(`----- ${data}}`)},onSilence: () => {this._controller?.cancel()console.log(`----- silence`)},onVolume: (db) => {this._volume = db},onLogger(level, message) {console.log(`${message}`)},})
3.3 停止识别任务
停止识别任务可以通过控制器的 stop 方法停止:
this._controller!.stop()
另一种情况当数据源的 empty 返回 true 时识别也会停止。
4. 主要接口类和方法说明
4.1 Builder 类说明
Builder 用于创建语音识别任务。
方法
1. setApiParam(key: string, value: string | number | null)
名称 | 类型 | 描述 |
key | string | 请求后台的参数名称 |
value | string|number|null | 请求后台的参数值,null时将删除已设置的参数,number会转为string后设置 |
2. getApiParam(key: string): string | null
获取已设置的请求参数。
名称 | 类型 | 描述 |
key | string | 参数名称 |
3. build(source: DataSource, listener: Listener): Controller
创建并启动识别任务同时返回识别任务控制器。
属性
名称 | 类型 | 描述 |
appID | string | 腾讯云appId |
secretID | string | 腾讯云临时secretId |
secretKey | string | 腾讯云临时secretKey |
token | string | |
slice | number | 分片时间,单位ms,开启opus时必须为40的倍数,不建议更改此参数 |
enableOpus | boolean | 开启opus编码 |
enableSilence | boolean | 开启静音检测,开启后识别到静音后会触发一次静音回调,不会停止任务 |
enableDetectVolume | boolean | 开启音量检测,开启后会通过音量回调返回当前音量 |
silenceTimeout | number | 静音检测时长,开启静音检测后生效 |
loggerLevel | LoggerLevel | 日志等级,日志回调只会返回大于改等级的日志 |
saveDataPath | string | 保存音频数据路径,路径为空不生效,否则将会存储数据源读取到的音频数据到该路径 |
以下属性是为了简化设置请求 API 参数流程,内部实现 key 值固定的 setApiParam 和 getApiParam 方法。
名称 | 类型 | 描述 |
engineModelType | string | engine_model_type |
needVad | number | needvad |
hotwordID | string | hotword_id |
customizationID | number | customization_id |
filterDirty | number | filter_dirty |
filterModal | number | filter_modal |
filterPunc | number | filter_punc |
filterEmptyResult | number | filter_empty_result |
convertNumMode | number | convert_num_mode |
wordInfo | number | word_info |
vadSilenceTime | number | vad_silence_time |
maxSpeakTime | number | max_speak_time |
noiseThreshold | number | noise_threshold |
hotwordList | string | hotword_list |
inputSampleRate | number | input_sample_rate |
4.2 Controller 类说明
Controller 用于控制识别任务的流程。
属性
名称 | 类型 | 描述 |
task | Promise<void> | 识别任务,识别任务正常结束则此 Promise 正常返回,否则抛出异常 |
voice_id | string | 连接成功后的 voiceid,否则为空字符 |
方法
1. stop(): void
停止识别任务,调用此方法会向后台发送停止识别的消息,成功停止后 task 会结束。
2. cancel(): void
取消识别任务,调用此方法会取消当前识别任务,成功取消后 task 会抛出 SDKErrorImpl 类型的异常,且此异常的 code 为 CANCEL_ERROR。
4.3 Listener 类说明
Listener 类用于接收识别过程中的信息。
属性
名称 | 类型 | 描述 |
onSlice? | (data: string, raw: string) => void | 收到后台 websocket 的消息后且解析到 slice_type 为0或1回调改方法 |
onSegment? | (data: string, raw: string) => void | 收到后台 websocket 的消息后且解析到 slice_type 为2回调改方法 |
onData? | (data: string) => void | 收到后台 websocket 的消息后回调该方法 |
onLogger? | (level: LoggerLevel, message: string) => void | 日志回调,Builder 的 loggerLevel 会影响此回调的内容 |
onSilence? | () => void | 静音回调,开启 Builder 的 enableSilence 后检测到静音后回调 |
onVolume? | (db: number) => void | 音量回调,开启 Builder 的 enableDetectVolume 后回调 |
4.4 DataSource 类说明
DataSrouce 类用来提供用于识别的音频数据。
属性
名称 | 类型 | 描述 |
voice_format | string | 音频编码,目前仅支持 pcm,即数据类型为16000hz,16bit,小端的pcm数据流 |
empty | boolean | 返回是否还有音频数据 |
start | () => Promise<void> | SDK 开始识别时会调用此方法,此方法发生的异常会通过task抛出 |
stop | () => Promise<void> | SDK 停止识别时会调用此方法,此方法发生的异常会通过task抛出 |
read | (ms: number) => Promise<ArrayBuffer> | SDK 读取音频数据,ms为读取数据的时长,voice_format 为 pcm 时,此方法需返回40 *16 * 2长度的数据,此方法发生的异常会通过 task 抛出 |
5. 错误码
识别任务抛出类型为 SDKErrorImpl 时的错误码。
错误码 | 名称 | 描述 |
-1 | UNKNOWN_ERROR | 未知错误 |
1 | NETWORK_ERROR | 网络错误 |
2 | SERVER_ERROR | 服务端错误,详情通过 message 查看 |
3 | SIGNATURE_ERROR | 签名错误 |
4 | PARAMETER_ERROR | 参数错误,Builder 设置的参数无法创建识别任务 |
5 | CANCEL_ERROR | 取消错误,调用 cancel 方法取消任务时出现 |
6 | CREATE_FILE_ERROR | 创建文件失败 |
7 | DATA_LENGTH_ERROR | 数据源返回的数据长度不符合要求 |