摘要
語音關鍵詞識別(Keyword Spotting, KWS)技術已普遍應用在以電池為主的供電設備中,對于此類設備低功耗是一個重要考慮的因素。然而,單獨的低功耗神經網絡因注重功耗的降低,難以適應高噪聲環境下的使用,為了能靈活適應不同噪聲場景,并盡可能降低系統功耗與面積,本文提出了一種基于蜂鳥E203和神經網絡硬件加速器的自適應噪聲環境超低功耗語音關鍵詞識別系統。
本文設計的SoC系統處理器基于RISC-V指令集,通過NICE協處理器接口接入所設計的語音識別神經網絡加速器,處理器通過自定義指令可控制加速器開關并讀取運算數據,數據最后通過E203處理器處理并將識別結果實時顯示在OLED屏上,同時可通過語音控制OLED屏上的貪吃蛇小游戲。此外,該系統可針對低信噪比和高信噪比噪聲環境切換不同精度的神經網絡,實現在噪聲持續變化的環境中,根據信噪比大小自動選擇合適的工作模式。在語音識別加速器算法上,本文實現了基于SNR預測模塊的神經網絡。第一,本文引入了SNR預測模塊,對環境噪聲進行預測。在高信噪比環境下使用超低功耗的近似權重二值化神經網絡(Binary Weight Neural Network, BWN),在低信噪比環境下使用帶噪聲訓練的精確BWN神經網絡。第二,在高信噪比環境下,為了降低神經網絡的復雜度,本文針對神經網絡訓練提出了逐步量化方案,篩選出適合將網絡權重量化到1bit的網絡模型,引入近似計算單元以降低功耗,同時針對能量化為BWN的網絡模型,采用軟硬件協同設計的方法進行算法定制優化,整體算法能實現12個語音關鍵詞的識別,在近麥克風語音環境下準確率為89.1%,在15dB信噪比環境下準確率為86.5%。第三,在低信噪比環境下,為了不降低神經網絡的識別率,本文選擇帶噪聲訓練的精確BWN神經網絡,在0dB信噪比環境下準確率為88%。
本文基于TSMC 22nm ULL工藝,完成了語音識別加速器的綜合(Design Compiler, DC)、功耗分析(PrimeTime PX, PTPX)以及后端版圖設計工作,版圖設計面積為0.6mm2。當工作頻率為250kHz,IO驅動電壓為1.8V,SRAM電壓為0.6V,logic電路電壓為0.39V時可以實現對語音關鍵詞的實時判斷,HVT工藝下加速器芯片功耗約為6.7μW。
系統功能介紹
圖1 自適應噪聲環境的超低功耗語音關鍵詞識別系統功能框圖
自適應噪聲環境的超低功耗語音關鍵詞識別系統總體功能框圖如上圖1所示,總體功能框圖主要分為E203處理器部分、語音識別加速器部分,以及軟硬件分別驗證成功后的SoC系統搭建部分,各部分實現的功能如下所述:
E203處理器實現功能:E203處理器主要負責通過在軟件與硬件語音識別加速器之間進行控制與數據讀寫,并通過按鍵與屏幕顯示的方式實現良好的人機交互體驗,其主要包括如下三個部分:NICE接口、加速器控制以及OLED顯示。
NICE接口:NICE接口部分實現了通過E203處理器對語音識別加速器的控制與數據讀寫,語音識別加速器通過標準的NICE接口接入E203處理器中,在NICE接口中自定義指令,接收E203發送的從加速器控制部分寫入的指令,實現對語音識別加速器的開啟和關閉,并持續使用寄存器接收加速器運行結果,接收的運行結果通過NICE接口返回到E203處理器中,并傳送到OLED顯示部分。
加速器控制:語音識別加速器控制部分首先在軟件實現了NICE自定義指令的函數,通過實現加速器開關函數以及全局變量的控制,實現軟件控制加速器的開啟和關閉。此外,通過接入外部的按鍵中斷實現按鍵控制語音識別的開啟和關閉。
OLED顯示:OLED顯示部分通過E203處理器接收NICE接口返回的運行結果,對運行結果進行處理,得到每次的關鍵詞識別結果以及當前所處的噪聲場景。處理后得到的結果,通過軟件與E203處理器驅動連接的OLED屏幕,并實時顯示在屏幕上。
語音識別加速器部分主要實現了通過使用數字硅麥對當前環境聲音進行采樣,對輸入語音信號進行MFCC特征提取以及SNR噪聲預測,提取后的特征作為神經網絡的輸入,在經過SNR噪聲預測選擇使用不同的網絡模塊后,輸入進對應的神經網絡當中,神經網絡將輸入特征進行運算、處理后,得到最終識別的結果,并通過NICE接口返回E203處理器當中,其主要包括如下三個部分,I2S模塊、MFCC模塊、神經網絡模塊以及數據流調度和系統控制部分。
I2S模塊:I2S模塊主要用于將數字硅麥輸入的串行信號緩存并轉成并行數據輸出到MFCC中,其硬件功能實現主要通過接口設計對輸入輸出信號定義的接口進行規范設計,并輸出對硅麥的控制信號,數據緩存用于將輸入的串行數據暫存、轉化成并行數據,以及最后將并行數據輸出的輸出部分。
MFCC模塊:MFCC模塊主要用于將輸入的語音信號進行特征提取,轉化成更易于神經網絡識別的特征數據,此外,還通過SNR預測模塊對輸入語音信號的噪聲場景進行區分。MFCC算法的實現主要分為預加重、分幀、FFT,梅爾濾波,以及SNR噪聲預測算法。硬件功能的實現主要分為接口的設計、MFCC和SNR預測的算法實現,數據測試以及功能實現部分。
神經網絡模塊:神經網絡模塊主要用于將MFCC輸出的特征信號通過前饋神經網絡進行運算并輸出最終的識別精度。在算法層次部分,神經網絡模塊主要分為卷積層、全連接(FC)層,以及之間的RELU、BN層,算法部分通過MATLAB搭建并訓練得出識別精度,驗證了模型的可行性,在低噪聲場景下,為滿足低功耗的需求,采用DOREFA量化二值化與近似計算單元相結合的方式,而在高噪聲場景下,為滿足抗噪聲需求,采用帶噪聲訓練與精確計算相結合的方式。硬件實現部分主要是將前饋神經網絡進行電路上的設計與實現,主要分為神經網絡算法的實現,包括卷積層、FC層、BN層以及RELU層的電路實現,權重、數據的存儲以及數據調度。
控制模塊:系統控制模塊與數據調度主要負責控制整體的加速器系統結構以及各個功能模塊之間的數據流調度。
E203處理器部分實現的功能主要通過C語言進行軟件代碼的編寫,并在IDE上進行調試,語音識別加速器部分的功能實現主要通過Verilog進行編寫,仿真后燒錄到FPGA板上進行功能驗證。兩部分均完成后,通過Nuclei_Studio IDE將軟件代碼燒錄到開發板上進行整體SoC的搭建及功能驗證。
系統架構介紹
架構設計
圖2 自適應噪聲環境的超低功耗語音關鍵詞識別系統架構設計框圖
自適應噪聲環境的超低功耗語音關鍵詞識別系統架構設計框圖如上圖2所示,蜂鳥E203核通過系統存儲總線訪問FLASH存儲,FLASH用于存放燒錄進開發板的軟件代碼,此外,系統存儲總線還連接JTAG接口用于外部的軟件調試和代碼的燒錄。E203核還通過私有設備總線訪問GPIO,GPIO外接按鍵中斷以及OLED屏幕,以外部的控制輸入及顯示輸出。處理器核還通過NICE協處理器接口訪問語音識別加速器,并進行指令的寫入與運算結果的讀出。
語音加速器主要I2S模塊、MFCC架構以及神經網絡加速器模塊組成,外部的語音輸入通過數字硅麥接收,并將串行輸入數據輸入I2S模塊,同時I2S模塊輸出數字硅麥的片選、聲道選擇等控制信號。
I2S模塊由數據接收、異步FIFO、以及數據預處理三個部分組成。數據接收用于接收外部串行輸入信號并進行移位寄存,輸出32bit的并行數據,異步FIFO用于將輸出32bit并行數據暫存,并同步到讀時鐘域,當讀使能信號到來后,32bit的輸出經過數據預處理,最終轉化成13bit有效輸出輸入到MFCC模塊當中。
MFCC模塊的硬件架構主要由預加重、分幀、FFT、Mel濾波、以及SNR預測模塊組成,各個模塊架構主要負責實現對應的功能及算法(如基-2FFT、CODIC算法、SNR預測算法),模塊之間除直接進行輸入輸出外,還有相應的存儲RAM和輸出RAM負責數據的調度。MFCC模塊實現對語音輸入的特征提取,并輸出到神經網絡加速器模塊當中。
在神經網絡加速器模塊,首先需要在軟件層次進行神經網絡結構的確定、以及BWN網絡模型參數的訓練驗證,在硬件架構層次上則要實現對應的前饋神經網絡每層運算需要的算法以及整體的控制與數據調度。神經網絡硬件架構主要分為網絡層控制器、訪存控制器、以及存儲和計算單元,其中,網絡層控制器負責架構整體的控制,當前層的確定以及不同層的切換。訪存控制器在接收網絡層控制器的控制信號后,負責將當前層所需數據從存儲單元調度到計算單元,以及當前層計算完成后將運算完成的輸出數據寫回存儲單元。存儲單元主要分為數據存儲RAM以及權重存儲RAM,分別負責存儲每一層所需的輸入數據以及相應的權重。計算單元主要負責對應計算算法的實現,PE陣列實現數據與權重的卷積/二值,以及全連接運算,BN_RELU則用于實現對應的激活函數以及歸一化函數。
其次,從低功耗角度出發,我們設計了復用的PE子計算,可適配完成卷積(二值)和全連接(二值全連接)計算,重新調整了神經網絡加速器模塊的數據調度方式,減少了整個電路的面積。
版圖設計
對于語音識別加速器模塊,我們還完成了后端版圖設計,如下圖3所示,具體的面積參數如下表1所示。電路綜合后的功耗細節圖如下圖4所示,整體電路的功耗為6.70uW,其中神經網絡加速器模塊的功耗為3.66uW,MFCC模塊功耗為1.07uW,I2S模塊和其他模塊功耗為0.45uW。圖4(b)展示了電路中組合邏輯功耗、寄存器功耗以及SRAM功耗占比,可以看到訪存功耗占比為67.6%,寄存器功耗占比為19.3%,組合邏輯功耗占比為13.1%,由此可見本電路實際的計算功耗占比較少,這得益于所采用的權重二值化處理方式,使得電路大量的乘法操作變為加法操作。
表1 版圖參數
圖3 神經網絡加速器模塊的VLSI實現版圖設計
圖4 神經網絡加速器模塊的 VLSI實現功耗占比
硬件加速器詳細設計
高噪聲環境——帶噪聲精確BWN神經網絡
在高噪聲場景中,語音信號的信噪比往往很低,因此,本系統采用精度較高的精確BWN神經網絡,同時在訓練集中加載了0dB的白噪聲訓練,實現噪聲場景下的高精度。
低噪聲環境——無噪聲近似BWN神經網絡
在低噪聲場景中,輸入的語音信號相對來說更為清晰,被系統識別到的難度更低,在電路實現中,滿足性能要求前提下功耗是衡量電路設計的重要指標之一,完全可以采用加入近似計算單元的功耗BWN來設計,同時去除數據集中的白噪聲,使用clean的數據集訓練,最終識別精度并沒有下降太多。該方案在不增加網絡結構的復雜度,不增加網絡深度和神經元個數的情況下,使系統在常開工作時的功耗更低。
由于神經網絡具有天然容錯性,有許多傳統的近似乘法單元曾經被應用在DNN神經網絡中,比如截斷進位乘法器,共享乘法器,迭代對數乘法器等。雖然BWN網絡權重已經量化到了1bit, 但是仍然保有繼續優化的空間。在3×3的卷積核里,會有9個16bit的數據進行位運算,之后這9個數據再累加,輸出卷積核最后的結果。9個數據的累加最終會得到一個最大為20bit的數據,對于一個20bit的數據來說,在其低位如果有部分信息丟失,其實對整個數據的整體精度影響不大,況且神經網絡本身就帶有一定的容錯性,微小的誤差可能并不會對網絡的結果帶來極大的變動,但是從硬件電路的實現角度來考慮,引入近似計算可較大地降低整個電路的功耗以及面積,十分具有研究價值,正是基于上述考量,來評估在加法運算中引入近似的可行性。
乘法運算涉及到移位、位運算和累加三個過程,因此能夠實現近似的空間更大,對于純累加的運算過程,能夠使用近似的就是在單個加法器了,最常用的加法器近似手段則是LOA,即Low Or Adder,低位或門加法器,用邏輯或門來替換低位的加法器來實現近似,其電路結構如圖5所示:
圖5 LOA加法器
面向多信噪比的KWS神經網絡設計
在前面已經提出了本系統的兩種神經網絡,在本節中,將對網絡中的主要模塊進行可重構復用設計,可以從模塊級了解本文的神經網絡的具體工作模式。由前文中可知神經網絡算法中在面向高信噪比語音環境時,為了降低功耗,使用了LOA近似計算單元。具體結構如圖6。
圖6 CNN加速器架構圖
如圖6所示的是在語音關鍵詞分類模塊中,語音數據和權重數據分別存儲在SRAM中,當SNR預測模塊得到的是低信噪比的噪聲環境時,語音數據經過可重構PE_ARRAY陣列模塊進行網絡計算。當SNR預測模塊得到的結果是高信噪比時,語音數據經過可重構PE_ARRAY陣列模塊進行網絡計算。
如圖6所示,硬件中有三片sram,分別存儲語音數據,在高信噪比環境下的權重1和在低信噪比環境下的權重2。Memory controller模塊用于生成地址和計算時分別調用SRAM中的具體數據。Layer controller是使用狀態機控制當前計算網絡所處層級。可重構PE_ARRAY陣列模塊用于網絡計算,共有BN_RELU模塊用于每層卷積操作之后對數據進行歸一化處理。
軟件實現
自定義指令的編寫
軟件實現最關鍵的問題是實現RISC-V自定義指令并可以確實控制蜂鳥核里nice接口連接的協處理器,具體的語音識別加速器的設計在上一節已被充分介紹,蜂鳥E203的開源核給我們拓展協處理器預留了nice接口,并且學習資料豐富,根據預留的拓展接口以及相應的通信協議,我們成功把語音識別加速器掛載到核上面,具體不再贅述。
自適應噪聲切換
在實現噪聲模塊功能這方面,我們團隊提出了兩種方案,分別是根據SNR預測在硬件上設計電路的硬件方案以及在軟件上設置閾值來檢測環境的軟件方案。
硬件方案的具體思路是在運算時,累加一段時間區間內的語音信號能量,噪聲信號實際上就是能量的高低,噪聲越高信號中也就含有越多的能量,硬件方案正是基于這個思路來檢測環境噪聲強度。
而軟件方案則是借助我們系統內蜂鳥E203處理器,利用處理器的靈活控制的特點,外接聲音檢測模塊,并設置一個噪聲閾值,當模塊檢測到外部環境中的噪聲超過這個閾值時,給處理器發送一個低信號,而在處理器中則記錄低信號出現的次數,一段時間內,如果出現低信號的次數超過了處理器中設置的高噪聲的閾值,那么可以認為當前環境噪聲較高,需要切換工作模式。
系統實物圖
致謝
在此表示衷心的感謝芯來科技設立的RISV-MCU 社區,社區中豐富的學習資料幫助我們團隊快速上手了蜂鳥E203的初步使用,清晰的文件分類讓我們查閱學習非常方便,跟社區中其他參賽隊伍交流也使得我們受益良多。
同時特別感謝社區中的胡燦等其他老師,我們團隊在設計這個系統的過程中,遇到了許多問題,胡燦老師平易近人,很耐心地解答問題,讓我們學到了很多,幫助我們最終完成了整個系統。
感謝芯來科技的創始人胡振波先生,胡先生為了RISC-V在國內的推廣殫精竭慮,特別編寫了基于RISC-V的開源蜂鳥核E203,十分令人傾佩,我們團隊購買了先生編寫的《嵌入式開發快速入門》和《教你設計CPU》兩本書,學習書中的內容讓我們團隊在應用蜂鳥核時更加得心應手。
在項目設計之初,我們團隊也遇到很多問題,能解決這些問題,得益于隊友之間的信任和鼓勵,也得益于大賽組委會給大家提供了這樣的優秀平臺。希望集創賽可以越辦越好!
審核編輯 :李倩
-
芯片
+關注
關注
456文章
50936瀏覽量
424671 -
加速器
+關注
關注
2文章
802瀏覽量
37931 -
神經網絡
+關注
關注
42文章
4773瀏覽量
100890 -
E203
+關注
關注
0文章
8瀏覽量
135
原文標題:【2021集創賽作品分享】第十九期 | 自適應噪聲環境的超低功耗語音關鍵詞識別系統
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論