本文在介紹如何以 NXP sln_local2_iot_local_demo 專案新增範例中所沒有的語言步驟。
二.新增辨識語系
1. 創建 DSpotter 專案並儲存在對應的 MCUXPresso 專案中
2. 新增完成 WW Word 及 Commands 勾選 MapID 並點選 Save Project,之後在 DSpotter 對應資料夾中會新增相關檔案
3. 手動創建 indexToCommands,下圖創建日文故尾碼帶 JP,此處依客戶需求決定
將 DSpotter 中的命令依照下圖方式宣告,
4. 在 indexCommands.h 中新增對應的命令
同樣在 char **get_cmd_strings(asr_language_t asrLang, asr_inference_t infCMDType)
程式中 switch (asrLang) 新增所需語言,如以下圖為例新增日文 ASR_JAPANESS
l ASR_JAPANESE 在 sln_local_voice.h 中 typedef enum _asr_languages 新增
此處將對應的 Commands 新增在 IoT 應用中,在後續切換功能時需切換到對應的應用才可正確觸發
5. 在 sln_local_voice_model.s 中新增DSpotter 產生的 xxx_pack_withMapID.bin,宣告方式如下圖所示
6. sln_local_voice_model.h 新增第 5 步驟新增的宣告,以此例來說即 my_lvc_jp_begin
7. 在 sln_local_voice.c 中新增步驟 3 新增 indexToCommand head file
在 initialize_asr(void) 選擇取代記憶體配置的區塊,此處選擇德語作為取代,也就是原本第三個位置 lang[2],並在 install_language 中將 lang[2] 相關配置為新增的語言 my_lvc_jp_begin,最後一個參數為 Dspotter 中新增的 commads 數 + 3 (base group + wake group + mapID),以新增的語言為例在 DSpotter 僅有二個 group 為 WW 和 CMD_1 (參考步驟 2)
在 install_inference_engine 調整 lang[2] 將其調整為 indexToCommand 中 ww_jp (參考步驟 3)
此處需特別注意,如有使用中文,中文配置的記憶體區塊不可變動,原因在於中文聲音的模組叫其他語言大 (90*1024)
8. 在 main.c 中 void appTask(void *arg) 裡配置 playback 語音,此處借用英文語音的 playback 做為回應,在此 function 中的判斷式 switch (taskNotification) 的 case kWakeWordDetected: 新增如下所式
在 case kCommandGeneric: 中新增
9. 在 sln_shell.c 中 static shell_status_t sln_multilingual_handler(shell_handle_t shellHandle, int32_t argc, char **argv) 新增
同樣在 445 行 for 迴圈處新增
此處新增用於在 Terminal 可以選擇安裝語言
在 Terminal 可透過 multilingual en jp zh 安裝英文、日文、中文語言,如下圖所示
至此替換新增語言步驟已完成。
評論