文章目录
概要
- 创建语音识别引擎
- 给语音识别引擎设置监听(onResult识别结果含过程 onComplete识别完成)
- 识别引擎开始
- 创建音频采集器
- 监听readData事件 获取采集的声音 给识别引擎写入声音
- 音频采集器开始
语音识别 技术栈是用了 speechRecognizer,文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/hms-ai-speechrecognizer#section184134193313
录音 技术栈用的 audio.AudioCapturer,文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-audio-audiocapturer
整体技术流程
- 校验当前设备是否具备该语音识别能力:
canIUse('systemcapability.AI.SpeechRecognizer') - 创建语音识别引擎
- 给语音识别引擎设置监听(onResult识别结果含过程 onComplete识别完成)
- 识别引擎开始
- 创建音频采集器
- 准备录音,监听readData事件 获取采集的声音 给识别引擎写入声音
- 音频采集器开始
技术细节
1,创建语音识别引擎
asrEngine: speechRecognizer.SpeechRecognitionEngine | null = null
// 创建语音识别引擎
this.asrEngine = await speechRecognizer.createEngine({
language: 'zh-CN',
online: 1,
extraParams: { "locate": "CN", "recognizerMode": "long" }
})
2,给语音识别引擎设置监听(onResult识别结果含过程 onComplete识别完成)
// 创建回调对象
this.asrEngine.setListener({
onStart(sessionId: string, eventMessage: string) {
console.info(`onStart, sessionId: ${sessionId} eventMessage: ${eventMessage}`)
this.voiceState = VoiceState.VOICING
},
// 事件回调
onEvent(sessionId: string, eventCode: number, eventMessage: string) {
console.info(`onEvent, sessionId: ${sessionId} eventCode: ${eventCode} eventMessage: ${eventMessage}`)
},
// 识别结果回调,包括中间结果和最终结果
onResult: (sessionId: string, result: speechRecognizer.SpeechRecognitionResult) => {
Logger.info(result, '识别结果')
this.keyword = result.result
this.onChange(this.keyword)
},
// 识别完成回调
onComplete(sessionId: string, eventMessage: string) {
console.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`)
this.voiceState = VoiceState.DEFAULT
},
// 错误回调,错误码通过本方法返回
// 返回错误码1002200

最低0.47元/天 解锁文章
1494

被折叠的 条评论
为什么被折叠?



