[文章]HarmonyOS开发-语音识别

阅读量 0
0
0
1. 在使用语音识别 API 时,将实现 ASR 的相关的类添加至工程。
// 提供ASR 引擎执行时所需要传入的参数类
import ohos.ai.asr.AsrIntent;
// 错误码的定义类
import ohos.ai.asr.util.AsrError;
// 加载语音识别 Listener
import ohos.ai.asr.AsrListener;
// 提供调用 ASR 引擎服务接口的类
import ohos.ai.asr.AsrClient;
// ASR 回调结果中的关键字封装类
import ohos.ai.asr.util.AsrResultKey;
2. 调用 API 接口。
创建一个 AsrClient 对象。 context 为应用上下文信息,应为 ohos.aafwk.ability.Ability ohos.aafwk.ability.AbilitySlice 的实例或子类实例。
AsrClient asrClient = AsrClient.createAsrClient(context).orElse(null);
3. 设置引擎参数。如果希望识别文件,音频文 件需满足 约束与限制 ,并设置音频类型为 “ASR_SRC_TYPE_FILE” ;如果希望识别音频流,则设置音频类型为 “ASR_SRC_TYPE_PCM”
AsrIntent initIntent = new AsrIntent();
initIntent.setAudioSourceType(AsrIntent.AsrAudioSrcType.ASR_SRC_TYPE_PCM);
4. 初始化 ASR 服务。其中, mMyAsrListener 为实现了 AsrListener 接口的实例对象。
asrClient.init(initIntent, mMyAsrListener);
5. 开始识别。用户可以不设置参数,使用默认参数。
AsrIntent asrIntent = new AsrIntent();
// 设置后置的端点检测( VAD )时间
asrIntent.setVadEndWaitMs(2000);
// 设置前置的端点检测( VAD )时间
asrIntent.setVadFrontWaitMs(4800);
// 设置语音识别的超时时间
asrIntent.setTimeoutThresholdMs(20000);
asrClient.startListening(asrIntent);
// buffer 需要替换为真实的音频数据
byte[] buffer = new byte[]{0, 1, 0, 10, 1};
// 对于长度大于 1280 的音频,需要多次调用 writePcm 分段传输
asrClient.writePcm(buffer, 1280);
需要注意的是, startListening writePcm 方法建议放在 mMyAsrListener onInit() 方法内调用,保证初始化引擎成功之后再调用识别接口。如果希望识别音频文件,则不需要调用 writePcm 接口。
AsrIntent asrIntent = new AsrIntent();
// FilePath 修改为正确的地址,且文件路径需要给 com.huawei.hiai 进程授予可访问权限。
asrIntent.setFilePath("FilePath");
asrClient.startListening(asrIntent);
6. 取消或停止识别。
asrClient.stopListening(); // 停止识别
asrClient.cancel(); // 取消识别
7. 释放引擎。
asrClient.destroy();
附件:
HarmonyOS开发-语音识别.docx
(19.05 KB, 下载次数: 0)

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友