HarmonyOS5/ArkTs speechRecognizer语音识别,AudioCapturer音频采集/录音

概要

  1. 创建语音识别引擎
  2. 给语音识别引擎设置监听(onResult识别结果含过程 onComplete识别完成)
  3. 识别引擎开始
  4. 创建音频采集器
  5. 监听readData事件 获取采集的声音 给识别引擎写入声音
  6. 音频采集器开始

语音识别 技术栈是用了 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

整体技术流程

  1. 校验当前设备是否具备该语音识别能力:
     canIUse('systemcapability.AI.SpeechRecognizer') 
    
  2. 创建语音识别引擎
  3. 给语音识别引擎设置监听(onResult识别结果含过程 onComplete识别完成)
  4. 识别引擎开始
  5. 创建音频采集器
  6. 准备录音,监听readData事件 获取采集的声音 给识别引擎写入声音
  7. 音频采集器开始

技术细节

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值