智慧家庭是近年來物聯網市場重點發展的一個題目,隨著應用產品與功能越來越多元化,讓雲端運算工作量不斷擴充同時也占用網路流量,也因此邊緣運算在近期不斷被強調其重要性,希望可以分擔雲端工作量。東芝也在MCU產品上也推出了語音辨識與播放的演算法,可以在低階版本的ARM M4核心中獨立完成中、英、日文的語音關鍵字辨識並撥放對應需求的語音,此功能與雲端語音辨識比較展現了四大優點
- 低延遲響應
- 高度保密性
- 更佳的抗噪能力
- 極小的硬體資源
細部說明如下,東芝語音識別因為完全由M4核心演算法計算,不需要依靠雲端資源除了系統簡單外響應時間在200msec以內針對需要即時控制的產品有高度可靠性;東芝語音辨識演算法是經過深度學習調適,除了辨識率高同時也有更佳的抗噪能力,若有特別場合的背景噪音也可以重新調適演算法作辨識字典增加辨識率;硬體資源部分英文與日文僅僅需要150KB Flash Code size,中文則需要350KB Flash Code size,RAM的需求則在140KB以內,並使用SPI界面接收MEMS麥克風I2S音訊再以兩組PWM界面驅動完成ADX語音播報的功能,以相當低階的一般消費型MCU硬體資源即可完成了語音辨識與播放功能的設計。
本次方案我們使用東芝TMPM4G6F10FG MCU產品搭配語音辨識與播放功能的演算法導入語音控制智慧窗簾應用,以TMPM4G6F10FG自動辨識語音指令後控制東芝TB67S279FTG馬達驅動IC致使窗簾動作。TB67S279FTG為步進馬達控制IC,產品特色如下
- AGC(主動增益控制)技術:解決防止步進馬達失步從而產生大量熱量問題
- ACDS(高級電流檢測系統)技術: 東芝原創技術實現了高精度恒定電流的電機驅動,且無需使用外部電流靈敏電阻器也有助於縮小板尺寸和物料清單(BOM)成本
- 微步驅動技術: 微步驅動器可以通過逐步改變兩個繞組的電流比率,以相比于基本步進角度更精細的步進角度旋轉馬達
- 異常檢測技術: 熱關斷(TSD),過電流保護(ISD),上電重置(POR),電機負載開路(OPD)
設計說明:
- 語音控制命令:
規劃指令定義與動作如下:
語音命令
動作設計
控制啟動
播放"待命中",啟動馬達控制,20秒無任何動作回到休息模式
關閉窗簾
播放"窗簾關閉中"->控制馬達正轉至線性滑軌終點->播放"窗簾已關閉"
全部打開
播放"窗簾打開中"->控制馬達反轉至線性滑軌起點->播放"窗簾已打開"
光線太亮
播放"等等"->控制馬達正轉線性滑軌1/10位置->播放"是否還太亮"
有點太暗
播放"遵命"->控制馬達反轉線性滑軌1/10位置->播放"亮度足夠嗎"
- 語音辨識觸發關鍵字建立與程式設計:
使用東芝Voice Trigger GUI工具(TMW_VT_TMG.exe)編輯關鍵字字典,如下圖點選紅框處執行程式,綠框處輸入關鍵字的漢語拼音
將設計好的語音辨識關鍵字資料用下拉式功能表的”Generate”產生middleware所需的字典檔案
對應程式設計如下
首先針對設計好的關鍵字設定threshold參數(數值0~1000)如下圖,參數越大表示越容易通過但也增加誤判率,參數可以依照環境與關鍵字互相間的相似性作調整設計
使用middleware演算法函式可以取出語音辨識的資訊,將語音辨識資訊的ID(detect.keywordID)傳入窗簾馬達控制的函式已進行對應程式設計動作 - 窗簾控制動作設計
如第二步設計,設計好窗簾所對應語音指令所需要的動作函式將語音辨識ID傳入就可以對應執行,窗簾啟動後會紀錄位置,開關窗簾由馬達正反轉(MOTOR_DIR)決定,gMotor_Target_Pos參數則是計算馬達本次動作需要到達的位置,程式碼如下:
驅動窗簾移動的線性滑軌實際測試後的極限位置設定如下參數,未來若更換不同線性滑軌都很容易修改,而窗簾部分開關的參數也可以調整
- 語音播放功能程式設計
語音播放部分必須先將播放語音錄製後轉出成C語言陣列提供函式定址做輸出播放成語音,這邊介紹兩款工具,首先先使用CRI Atom Encoder將錄製的語音檔案轉成ADX格式音訊檔案,如下圖將錄製wav檔設定為24KHz sampling rate(如綠框),在執行紅框選項作轉檔
轉檔完成後再使用bin2txt轉成C語言陣列格式提供程式使用,指令如下圖
轉檔完成的C file(如下圖紅框處)必須將檔案include到程式中,同時要宣告array的記憶體(開啟C file的綠框處)
對應到程式碼中如下圖做include與記憶體宣告動作
完成後就可以使用criAtomPlayer_SetData函式在需要播放語音的地方撰寫程式即可執行。 - 窗簾動作:
當語音辨識、語音撥放與馬達動作參數都設計好後,語音控制智慧窗簾偵測到對應關鍵字語音就會自動完成動作,程式設計成motor_run函式如下:
以上就完成語音控制智慧窗簾所需要的動作設計,詳細程式碼可以參考附檔
實際完成結果的控制動作也可以參考錄製的影片,網址連結為 https://youtu.be/eQARgyGNSjs