KWS概述
關(guān)鍵字定位(Keyword Spotting,KWS)技術(shù),已成為可穿戴設(shè)備、物聯(lián)網(wǎng)設(shè)備和其他智能終端的關(guān)鍵。諸如“Alexa”,“Hey Siri”或“Ok Google”等短語喚醒智能手機和家用電器上的語音激活功能,已經(jīng)是語音交互設(shè)計產(chǎn)品的廣泛需求。
對于KWS,實時響應(yīng)和高精度才能獲得良好的用戶體驗。最近,神經(jīng)網(wǎng)絡(luò)已成為KWS架構(gòu)的一個有吸引力的選擇,因為與傳統(tǒng)的語音處理算法相比,它們具有更高的準(zhǔn)確性。由于需要實時在線識別的要求,導(dǎo)致KWS應(yīng)用在內(nèi)存和計算能力有限的微型微控制器上運行會受到一定限制。KWS的神經(jīng)網(wǎng)絡(luò)架構(gòu)設(shè)計必須考慮這些限制。于是,研究人員設(shè)計出由于傳統(tǒng)CNN的深度可分離卷積神經(jīng)網(wǎng)絡(luò)(DS-CNN)架構(gòu)技術(shù)。為了進(jìn)一步介紹了DS-CNN架構(gòu),并展示了開發(fā)人員如何在MCU上實現(xiàn)DS-CNN KWS。2018年ARM和斯坦福大學(xué)進(jìn)行了合作,并開源了預(yù)訓(xùn)練TensorFlow模型及其語音關(guān)鍵詞識別代碼,并將結(jié)果發(fā)表在論文Hello Edge: Keyword Spotting on Microcontrollers中。本文基于此開源模型和代碼,在AT32 MCU上對KWS效果進(jìn)行展示。
KWS實現(xiàn)原理
關(guān)鍵詞識別KWS
一個典型的KWS系統(tǒng)由一個特征提取器和一個基于神經(jīng)網(wǎng)絡(luò)的分類器組成,如下圖所示。首先,長度為L的輸入語音信號被分成長度為l且步幅為s的重疊幀,總共有幀T幀。T=(L?l)/S+1從每一幀中提取F個語音特征,則長度為L的整個輸入語音信號總共生成T×F個特征。Logmel filter bank energies (LFBE)和Mel-frequency cepstral coefficients (MFCC)常用于基于深度學(xué)習(xí)的語音識別,特別適用于傳統(tǒng)語音處理技術(shù)。使用LFBE或MFCC進(jìn)行特征提取涉及將時域語音信號轉(zhuǎn)換為一組頻域頻譜信號,從而實現(xiàn)輸入信號的維度壓縮。提取的語音特征矩陣服務(wù)于輸入分類器模塊,該模塊導(dǎo)出所輸出分類的概率。在需要從連續(xù)音頻流中識別關(guān)鍵字的實際場景中,利用后端處理模塊可以在一段時間內(nèi)平均每個輸出類的輸出概率,從而提高預(yù)測的整體置信度。圖1. KWS數(shù)據(jù)管道
卷積神經(jīng)網(wǎng)絡(luò)CNN
基于DNN的KWS的一個主要缺點是它無法有效地對語音特征中的局部時間和頻譜相關(guān)性進(jìn)行建模。CNN是通過將輸入時域和譜域特征視作圖像,并對其進(jìn)行二維卷積處理。卷積層之后通常是批量歸一化、基于ReLU的激活函數(shù)和可選的最大/平均池化層,這些處理可以降低特征的維數(shù)。在推理過程中,批量歸一化的參數(shù)可以折疊到卷積層的權(quán)重中。在某些情況下,為了減少參數(shù)和加速訓(xùn)練,在卷積層和密集層之間添加了一個線性低秩層,這是一個沒有非線性激活的全連接層。
深度可分離卷積神經(jīng)網(wǎng)絡(luò)DS-CNN
深度可分離卷積神經(jīng)網(wǎng)絡(luò)(DS-CNN)。最近,深度可分離卷積已被提出作為標(biāo)準(zhǔn)3-D卷積操作的有效替代方案,并已用于在計算機視覺領(lǐng)域?qū)崿F(xiàn)緊湊的網(wǎng)絡(luò)架構(gòu)。DS-CNN首先將輸入特征圖中的每個通道與一個單獨的2-D濾波器進(jìn)行卷積,然后使用逐點卷積(即1x1)在深度維度上組合輸出。通過將標(biāo)準(zhǔn)的3-D卷積分解為2-D卷積,然后是1-D卷積,深度可分離卷積在參數(shù)數(shù)量和操作方面都更加高效,這使得即使在資源受限的微控制器設(shè)備中也可以實現(xiàn)更深、更寬的架構(gòu)。
例 KWS實作
KWS測試平臺
KWS系統(tǒng)需要使用到兩個平臺,即PC端和AT32 MCU端。PC端:利用TensorFlow與Python撰寫完整的深度學(xué)習(xí)程序代碼并訓(xùn)練模型,因本文件使用的學(xué)習(xí)模式為監(jiān)督式的學(xué)習(xí),需給系統(tǒng)大量的訓(xùn)練數(shù)據(jù)和Labels,接著將提取到的特征用以訓(xùn)練CNN模型,并反復(fù)修正訓(xùn)練的模型,直到模型為此系統(tǒng)優(yōu)化的狀態(tài)。AT32 MCU端:利用ARM提供的CMSIS-NN的函式庫、DSP函數(shù)庫和CNN函數(shù)庫,結(jié)合PC端訓(xùn)練好的模型(該模型已下載待MCU)。對輸入到MCU端的音頻數(shù)據(jù)進(jìn)行識別,實現(xiàn)對該語音數(shù)據(jù)可能的標(biāo)簽進(jìn)行分類和預(yù)測。因此,對于既定模型的KWS識別,AT32 MCU端可實現(xiàn)完全離線識別,無需實時與PC通信或聯(lián)網(wǎng)通信。本示例,AT32MCU端智能識別的關(guān)鍵詞列表如下"yes","no","up","down","left","right","on","off","stop","go";沒有輸入信號時,輸出標(biāo)簽為"Silence";輸入信號不在關(guān)鍵詞列表時,輸出標(biāo)簽為"Unknown"。注意:由于篇幅限制,本文只介紹AT32 MCU的實現(xiàn)流程,如下圖陰影部分。圖2. KWS實現(xiàn)流程
資源準(zhǔn)備
1) 硬件環(huán)境:AT-START-F403A BOARD V1.xAT32-Audio-EV V2.x圖3. KWS測試的硬件環(huán)境2) 軟件環(huán)境MDK V5.31或更新版本,使用ARM Compiler V6進(jìn)行編譯…\PACK\ArteryTek.AT32F403A_407_DFP.2.1.2.pack或更新版本…\PACK\ARM.CMSIS-DSP.1.11.0.pack或更新版本ML-KWS-for-MCU-master\Project\mdk_v5
軟件設(shè)計
實驗結(jié)果
在AT32-Audio-EV V2.x端LINE_IN輸入語音信號后,AT Link虛擬串口會打印輸出KWS識別的標(biāo)簽和概率。圖4. 串口打印識別信息
-
mcu
+關(guān)注
關(guān)注
146文章
17171瀏覽量
351464 -
語音識別
+關(guān)注
關(guān)注
38文章
1742瀏覽量
112692 -
AT32
+關(guān)注
關(guān)注
1文章
113瀏覽量
2105
發(fā)布評論請先 登錄
相關(guān)推薦
評論