HarmonyOS之AI能力·語(yǔ)音識(shí)別技術(shù)
語(yǔ)音識(shí)別功能提供面向移動(dòng)終端的語(yǔ)音識(shí)別能力。它基于華為智慧引擎(HUAWEI HiAI Engine)中的語(yǔ)音識(shí)別引擎,向開(kāi)發(fā)者提供人工智能應(yīng)用層 API。該技術(shù)可以將語(yǔ)音文件、實(shí)時(shí)語(yǔ)音數(shù)據(jù)流轉(zhuǎn)換為漢字序列,準(zhǔn)確率達(dá)到 90% 以上(本地識(shí)別 95%)。
語(yǔ)音識(shí)別技術(shù),也稱為自動(dòng)語(yǔ)音識(shí)別(Automatic Speech Recognition, ASR),可以基于機(jī)器識(shí)別和理解,將語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)槲谋净蛎睢?/p>
語(yǔ)音識(shí)別支持的輸入文件格式有 wav 或 pcm。
語(yǔ)音識(shí)別當(dāng)前僅支持對(duì)普通話的識(shí)別。
語(yǔ)音識(shí)別輸入時(shí)長(zhǎng)不能超過(guò) 20s。
語(yǔ)音識(shí)別采樣要求:采樣率 16000Hz,單聲道。
語(yǔ)音識(shí)別引擎的使用必須初始化和釋放處理,且調(diào)用必須在 UI 的主線程中進(jìn)行。
多線程調(diào)用:HUAWEI HiAI Engine 不支持同一應(yīng)用使用多線程調(diào)用同一接口,這樣會(huì)使某一線程調(diào)用 release 方法后,卸載模型,導(dǎo)致正在運(yùn)行的另一些線程出錯(cuò)。故多線程執(zhí)行同一功能達(dá)不到并行的效果。但是引擎支持使用多線程調(diào)用不同接口,如開(kāi)啟兩個(gè)線程同時(shí)使用文檔矯正和 ASR 接口。
支持開(kāi)發(fā)具有語(yǔ)音識(shí)別需求的第三方應(yīng)用,如語(yǔ)音輸入法、語(yǔ)音搜索、實(shí)時(shí)字幕、游戲娛樂(lè)、社交聊天、人機(jī)交互(如駕駛模式)等場(chǎng)景。
語(yǔ)音輸入法:將需要輸入的文字,直接用語(yǔ)音的方式輸入。即用戶說(shuō)話的時(shí)候語(yǔ)音識(shí)別引擎返回識(shí)別的漢字序列,讓輸入更加便捷,解放雙手。
語(yǔ)音搜索:搜索內(nèi)容直接以語(yǔ)音的方式輸入,可以用于客服系統(tǒng)的關(guān)鍵詞搜索,同時(shí)轉(zhuǎn)錄成文本,讓搜索更加高效。
實(shí)時(shí)字幕:將直播、視頻、現(xiàn)場(chǎng)演講等音頻進(jìn)行實(shí)時(shí)的字幕轉(zhuǎn)換、降低理解成本,提升用戶體驗(yàn)。
駕駛模式:在開(kāi)車過(guò)程中,手握方向盤(pán),無(wú)法分神去操作手機(jī)來(lái)選擇音樂(lè)、撥打電話。使用語(yǔ)音識(shí)別,只要向手機(jī)說(shuō)出命令,例如:聽(tīng)音樂(lè)的時(shí)候說(shuō)上一首/下一首進(jìn)行切歌或調(diào)節(jié)音量等,即可被手機(jī)識(shí)別并執(zhí)行相應(yīng)操作。
AsrListener 接口說(shuō)明:
AsrListener 中的 onResults(PacMap results) 方法返回結(jié)果,結(jié)果封裝在 json 格式中,需要解析得到。結(jié)果說(shuō)明:
示例結(jié)果(Json):
{ "engine_type":"local_engine", "result":[{"confidence":0,"ori_word":"你 好 ","pinyin":"NI3 HAO3 ","word":"你好。"}], "result_type":"lvcsr", "scenario_type":5 }
1
2
3
4
5
6
AsrError 說(shuō)明:
// 提供ASR引擎執(zhí)行時(shí)所需要傳入的參數(shù)類 import ohos.ai.asr.AsrIntent; // 錯(cuò)誤碼的定義類 import ohos.ai.asr.util.AsrError; // 加載語(yǔ)音識(shí)別Listener import ohos.ai.asr.AsrListener; // 提供調(diào)用ASR引擎服務(wù)接口的類 import ohos.ai.asr.AsrClient; // ASR回調(diào)結(jié)果中的關(guān)鍵字封裝類 import ohos.ai.asr.util.AsrResultKey;
1
2
3
4
5
6
7
8
9
10
創(chuàng)建一個(gè) AsrClient 對(duì)象:context 為應(yīng)用上下文信息,應(yīng)為 ohos.aafwk.ability.Ability 或 ohos.aafwk.ability.AbilitySlice 的實(shí)例或子類實(shí)例:
AsrClient asrClient = AsrClient.createAsrClient(context).orElse(null);
1
設(shè)置引擎參數(shù):如果希望識(shí)別文件,音頻文件需滿足約束與限制,并設(shè)置音頻類型為“ASR_SRC_TYPE_FILE”;如果希望識(shí)別音頻流,則設(shè)置音頻類型為“ASR_SRC_TYPE_PCM”:
AsrIntent initIntent = new AsrIntent(); initIntent.setAudioSourceType(AsrIntent.AsrAudioSrcType.ASR_SRC_TYPE_PCM);
1
2
初始化ASR服務(wù):其中,mMyAsrListener 為實(shí)現(xiàn)了 AsrListener 接口的實(shí)例對(duì)象:
asrClient.init(initIntent, mMyAsrListener);
1
開(kāi)始識(shí)別:用戶可以不設(shè)置參數(shù),使用默認(rèn)參數(shù):
AsrIntent asrIntent = new AsrIntent(); // 設(shè)置后置的端點(diǎn)檢測(cè)(VAD)時(shí)間 asrIntent.setVadEndWaitMs(2000); // 設(shè)置前置的端點(diǎn)檢測(cè)(VAD)時(shí)間 asrIntent.setVadFrontWaitMs(4800); // 設(shè)置語(yǔ)音識(shí)別的超時(shí)時(shí)間 asrIntent.setTimeoutThresholdMs(20000); asrClient.startListening(asrIntent); // buffer需要替換為真實(shí)的音頻數(shù)據(jù) byte[] buffer = new byte[]{0, 1, 0, 10, 1}; // 對(duì)于長(zhǎng)度大于1280的音頻,需要多次調(diào)用writePcm分段傳輸 asrClient.writePcm(buffer, 1280);
1
2
3
4
5
6
7
8
9
10
11
12
需要注意的是,startListening 或 writePcm 方法建議放在 mMyAsrListener 中 onInit() 方法內(nèi)調(diào)用,保證初始化引擎成功之后再調(diào)用識(shí)別接口。如果希望識(shí)別音頻文件,則不需要調(diào)用 writePcm 接口:
AsrIntent asrIntent = new AsrIntent(); // 將FilePath修改為正確的地址,且文件路徑需要給com.huawei.hiai進(jìn)程授予可訪問(wèn)權(quán)限。 asrIntent.setFilePath("FilePath"); asrClient.startListening(asrIntent);
1
2
3
4
取消或停止識(shí)別:
asrClient.stopListening(); // 停止識(shí)別 asrClient.cancel(); // 取消識(shí)別
1
2
釋放引擎:
asrClient.destroy();
1
AI 語(yǔ)音通話
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。