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