使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong! (HarmonyOS 鸿蒙Next)

使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong! (HarmonyOS 鸿蒙Next)

【标题】使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong!

【设备信息】

【API版本】Api14

【DevEco Studio版本】 5.0.5.315

【问题描述】使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong!但反复检查了参数并没有任何问题,参数如下:

this.engineParams = {
  language: 'zh-CN',
  online: 1,
  extraParams: {
    'locate': 'CN',
    'recognizerMode': 'long',
  }
}

有大佬知道这种情况该怎么处理吗?

【问题相关代码】


更多关于使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong! (HarmonyOS 鸿蒙Next)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

兄弟,你这个问题需要确保只存在一个实例, 而且**使用完要及时释放资源。**看看是不是当前测试真机上有多个版本的APP在同时运行,比如联调版本、测试版本之类的。

可以参考如下代码:

// 定义引擎对象
let asrEngine: speechRecognizer.SpeechRecognitionEngine;
// 定义监听回调对象
let listener: speechRecognizer.RecognitionListener = {
  onStart(sessionId: string, eventMessage: string) {},
  onEvent(sessionId: string, eventCode: number, eventMessage: string) {},
  onResult(sessionId: string, result: speechRecognizer.SpeechRecognitionResult) {},
  onComplete(sessionId: string, eventMessage: string) {
    asrEngine.shutdown();   // 识别完成时,及时释放资源,保证下一次能再正常创建引擎实例
    console.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`);
  },
  onError(sessionId: string, errorCode: number, errorMessage: string) {},
}

// 创建语音识别实例
speechRecognizer.createEngine(initParamsInfo).then((speechRecognitionEngine: speechRecognizer.SpeechRecognitionEngine) => {
  // 接收引擎实例 
  asrEngine = speechRecognitionEngine;
  console.info(`Succeeded in creating engine, result: ${JSON.stringify(asrEngine)}.`);

  // 设置监听
  asrEngine.setListener(listener);

  // 开始监听
  asrEngine.startListening({
    sessionId: 'xxx',   // sessionId字符长度需要小于64,而且不能包含特殊字符,如'.'
    audioInfo: {
      audioType: 'pcm',
      sampleRate: 16000,
      soundChannel: 1,
      sampleBit: 16,
    }
  });
}).catch((err: BusinessError) => {
  console.error(`Failed to create engine. Code: ${err.code}, message: ${err.message}.`);
});

更多关于使用speechRecongnizer语音识别服务,调用createEngine一直提示Asr CreateEngineParams is wrong! (HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在使用鸿蒙系统的speechRecognizer语音识别服务时,调用createEngine方法出现Asr CreateEngineParams is wrong!错误,通常是由于参数配置不正确或缺失导致的。以下是可能的原因:

  • 参数配置错误:CreateEngineParams中的必填参数未正确设置,如appIdappKey等。
  • 权限未配置:语音识别服务需要特定的权限,如ohos.permission.MICROPHONE,未在config.json中正确配置。
  • 服务未初始化:语音识别服务未在应用启动时正确初始化。
  • SDK版本不兼容:使用的鸿蒙SDK版本与语音识别服务不兼容。

检查CreateEngineParams的参数配置,确保所有必填参数正确无误,并确认权限配置和SDK版本兼容性。

回到顶部