前言
本文主要實現(xiàn) 使用鴻蒙的 AI 語音功能將聲音文件識別并轉(zhuǎn)換成文本
實現(xiàn)流程
1、利用AudioCapturer 錄制聲音,生成錄音文件
2、利用 AI 語音功能,實現(xiàn)識別

兩個錄音庫介紹
在HarmonyOS NEXT 應(yīng)用開發(fā)中,實現(xiàn)錄音的兩個核心庫分別為
1、AudioCapturer
2、AVRecorder
AVRecorder 錄制出來的聲音封裝格式只能是 aac,這個文件格式我們的 AI 語音引擎不支持,AI 語音引擎只支持 pcm 格式,而 AudioCapturer 錄制的聲音封裝格式則是 pcm。因此我們選擇使用 AudioCapturer 來錄制聲音。
AudioCapturer
AudioCapturer 介紹
AudioCapturer 是音頻采集器,用于錄制 PCM(Pulse Code Modulation)音頻數(shù)據(jù),適合有音頻開發(fā)經(jīng)驗的開發(fā)者實現(xiàn)更靈活的錄制功能。
狀態(tài)變化示意圖

能看到使用 AudioCapturer 的主要流程為:
1、創(chuàng)建 AudioCapturer 實例
2、調(diào)用 start 方法開始錄音
3、調(diào)用 stop 方法停止錄音
4、調(diào)用 release 方法釋放實例
創(chuàng)建 AudioCapturer 實例
(文末會提供封裝好,可以直接使用的代碼 下面的代碼示例都是基于封裝好的代碼進(jìn)行的)
我們通過調(diào)用 createAudioCapturer 方法實現(xiàn)創(chuàng)建 AudioCapturer 實例,其中該方法需要傳遞相關(guān)參數(shù)。

調(diào)用 start 方法開始錄音
開始調(diào)用 start 方法時,需要準(zhǔn)備相關(guān)數(shù)據(jù)。如:
1、提供錄音的文件名,可以自定義
2、寫入錄音數(shù)據(jù)的回調(diào)函數(shù)(在錄制聲音的過程中持續(xù)觸發(fā))
3、調(diào)用 start 方法

調(diào)用 stop 方法停止錄音
調(diào)用 stop 方法則相對簡單,直接調(diào)用即可

調(diào)用 release 方法釋放實例
同理

封裝好的錄音代碼
\entry\src\main\ets\utils\AudioCapturerManager.ets 下面是這個類的屬性和方法的總結(jié):
屬性
· static audioCapturer:
類型是 audio.AudioCapturer | null,是一個靜態(tài)屬性,用于存儲當(dāng)前的音頻捕獲器實例。
· private static recordFilePath:
類型是 string,是一個靜態(tài)私有屬性,用于存儲錄音文件的路徑。
方法
· static async createAudioCapturer():
如果 audioCapturer 已經(jīng)存在,則直接返回該實例;否則創(chuàng)建一個新的音頻捕獲器實例,并設(shè)置其音頻流信息和音頻捕獲信息,然后創(chuàng)建并返回新的實例。
· static async startRecord(fileName: string):
異步靜態(tài)方法,用于啟動錄音過程。首先調(diào)用 createAudioCapturer() 方法確保有一個音頻捕獲器實例。之后初始化緩沖區(qū)大小,并打開或創(chuàng)建一個指定名稱的 .wav 錄音文件。定義一個讀取數(shù)據(jù)的回調(diào)函數(shù),用于將捕獲到的數(shù)據(jù)寫入文件中。最后開始錄音,并記錄下錄音文件的路徑。
· static async stopRecord():
異步靜態(tài)方法,用于停止錄音過程。停止音頻捕獲器的工作,釋放其資源,并清除 audioCapturer 實例。




















踏入鴻蒙世界的敲門磚,標(biāo)志著您在技術(shù)征途上的全新起點,提升就業(yè)競爭力,獲得行業(yè)認(rèn)可,點亮職業(yè)成長先機(jī),快人一步搶占未來應(yīng)用開發(fā)賽道!

