今天,將手把手帶領學習如何訓練一個語音關鍵詞模型部署到嵌入式硬件上,采用 Edgi-Talk 平臺適配 Edge Impulse,當然原理在其他的ARM嵌入式平臺也是通用的。讓我們看看如何讓 Edgi-Talk 開始使用邊緣機器學習!
目錄

Edge Impulse 簡介
創建賬號
錄制數據集
數據上傳
數據分割
模型訓練
模型評估
模型集成
淘寶鏈接直達
1 Edge Impulse 簡介
Edge Impulse 是領先的邊緣人工智能開發平臺,致力于幫助開發者、工程師和企業將智能AI快速部署到任何邊緣設備(如微控制器、傳感器和物聯網硬件)上。
你可以輕松采集傳感器數據、構建數據集、訓練并優化機器學習模型,然后一鍵部署到全球數千種硬件生態系統,無需深厚的AI專業知識即可實現快速原型開發和商業化落地。
2 創建賬號
操作步驟:
1. 登錄Edge Impulse,https://edgeimpulse.com/
2. 注冊賬號;
3. 通過 create new project 創建工程

2 錄制數據集
1.給 Edgi-Talk 開發板燒錄 UAC 固件,用于收集音頻數據:uac-firmware.hex;(鏈接:https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/releases/download/1.1.0/uac-firmware.hex)
2.下載音頻數據集錄制軟件:Audio-recording.exe;(鏈接:https://github.com/RT-Thread-Studio/sdk-bsp-psoc_e84-edgi-talk/releases/download/1.1.0/audio-recording.exe)
3.將開發板的 USB 連接到電腦上,電腦會彈出音頻輸入設備;
4.音頻輸入設備需要選擇:Audio Control(MME)設備;

5.點擊開始錄制進行一次長達10 秒的錄制,錄制期間需要保證清晰的對話,喚醒詞錄制需要間隔1-2s停頓時間;
6.錄制好一次后,點擊右側的“保存錄音”選擇,進行一次保存;
7.當前序號選項默認會遞增,請重復上述步驟錄制 20-50 個關鍵詞音頻文件;
8.最終錄制兩類音頻文件,一類是喚醒詞,一類是噪音;



3 數據上傳
1. 點擊 add exsiting data
2. 選擇upload data


3. 選擇電腦上的音頻文件夾并上傳,此時網站會根據文件名稱自動進行分類(nocie,喚醒詞)

4 數據分割
操作步驟:
1. 首先選擇 Training 列表的數據,先點擊篩選,輸入我們 喚醒詞 的文件前綴,篩選出我們要操作的文件

2. 右側點擊音頻文件后,選擇 Split sample,平臺會將聲音文件切分為大致1s的音頻片段

3. 在分割音頻界面,可以調整音頻片段,以覆蓋喚醒詞的聲音內容,播放進行試聽和調整

每個矩形框就是拆分提取的一個子模塊,如有必要,可以調整矩形的位置,讓其完全覆蓋住我們的喚醒詞音頻區,或者也可以做一些添加或刪除片段的操作。
4. 拆分后的音頻文件都會變成獨立的音頻文件,網站會自動添加后后綴名(xxxx_Sn)

5. 按照上述步驟,將全部喚醒詞文件進行分割好
6. 選擇 Test 列表的數據,針對 喚醒詞 文件繼續進行分割,noice 標簽可以不用分割

7. 對數據進行分類:按照下圖步驟將數據集分為兩大類,分別是 喚醒詞 + 其他



5 模型訓練
5.1 創造脈沖信號(預處理/模型定義)
脈沖在這里是 Edge Impulse 用來表示數據處理—訓練管道的詞匯。
創建脈沖并將窗口長度設置為 1000 毫秒,窗口長度增加設置為 500 毫秒(重疊窗口以增強數據),頻率設置 16KHz。
這些設置表示,每次執行推理時,傳感器數據采集將在 1000 毫秒內完成,具體采集次數由采樣頻率決定。
簡而言之,你的設備會在 1000 毫秒的時間窗口內收集 N 個數據樣本,隨后對這些樣本進行預處理,并輸入神經網絡以獲得推理結果。
操作步驟:
1. 點擊左側 Create impulse
2. 然后點擊 Add a processing block 添加 Audio(MFCC)

3. 會彈出下面的對話框,使用默認的配置即可:

4. 使用MFCC,它使用梅爾頻率倒譜系數從音頻信號中提取特征,這對人類聲音非常有用。


5. 然后點擊 Add a learning block 添加 Classification 模塊,它通過使用卷積神經網絡進行圖像分類從頭開始構建我們的模型。


6. 最后點擊save impulse,保存配置

5.2 預處理(MFCC)
MFCC 是一種廣泛使用的方法,用于將音頻信號轉換為表示語音頻率模式的 2D 特征,這些特征非常適合基于語音的識別模型
我們創建錄制音頻生成的頻譜圖圖像,操作步驟:
1. 點擊MFCC,我們可以保留默認參數值
2. 直接點擊Save parameters

3. 點擊 Generate features,生成3個標簽數據的特征


5.3 模型設計與訓練(Classifier)
下一步,我們需要對模型的結構進行設計和開始訓練,步驟如下:
操作步驟:
1. 點擊左側 Classifier,整個模型的結構設計已經配置好
2. 然后點擊 save&train,開始訓練模型。

通過多次迭代,可以提升模型泛化能力。
經過驗證,提升方法包括:優化測試數據集、調整模型結構(如增加更多卷積層)等。
平臺對于訓練時間有限制要求,免費用戶只能進行訓練時間在20分鐘以內的訓練;
如果需要不限時間,需要購買付費服務才可以進行。
6 模型評估
操作步驟:
1. 點擊左側的 Model testing
2. 然后點擊 Classify all
3. 開始分類所有的測試集數據。

4. 測試之后,可以在右側的 Result 查看測試結果

7 模型集成
7.1 生成模型庫文件
模型訓練完成后,我們需要生成在 Edgi-Talk 平臺上運行的庫文件。
操作步驟:
1. 點擊左側 Deploment
2. 搜索 Arduino library 和 TensorFlow Lite
3. 然后點擊 Build,待build完成后,保存下載的庫文件。


7.2 部署到嵌入式硬件
1. 將上一步下載得到的壓縮包進行解壓,可以得到如下的文件目錄

2. 獲取最新的 Edgi-Talk 開發板 SDK,進入Edgi_Talk_M55_XiaoZhi/edge-impulse 目錄,刪除下圖中的兩個文件夾,然后將上一步中的兩個文件夾,替換到當前目錄中,即可實現模型文件的替換

3. 編譯 Edgi_Talk_M55_XiaoZhi 項目,并燒錄到開發板中。
4. 在 Edgi-Talk 串口終端中輸入下面的指令,開啟喚醒詞測試:
xz_wakeword_initxz_wakeword_start
4. 對開發板說出喚醒詞,這里演示使用的是“xiaorui,xiaorui”,當說出喚醒詞的時候串口終端會打印日志

8 淘寶鏈接直達

淘寶鏈接直達:https://e.tb.cn/h.iJXg44WlMzrhhOo?tk=yMae5hZdulI




想要在RT-Thread平臺或社區投放內容?
或想參與相關直播活動及賽事?
RT-Thread已開放對接窗口,
請通過郵件與我們取得聯系,期待合作!
合作郵箱: tongfangyi@rt-thread.com
