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();