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();
審核編輯:湯梓紅
-
開發
+關注
關注
0文章
370瀏覽量
40836 -
語音識別
+關注
關注
38文章
1739瀏覽量
112635 -
HarmonyOS
+關注
關注
79文章
1974瀏覽量
30147
發布評論請先 登錄
相關推薦
評論