• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于深度學(xué)習(xí)的嵌入式離線語音識別系統(tǒng)設(shè)計

      2019-04-24 08:15:50許業(yè)寬
      關(guān)鍵詞:離線聲學(xué)嵌入式

      許業(yè)寬,黃 魯

      (中國科學(xué)技術(shù)大學(xué) 微電子學(xué)院,安徽 合肥 230027)

      0 引言

      語音識別技術(shù)在過去的數(shù)十年中得到了長足的發(fā)展?,F(xiàn)今大多數(shù)語音識別都是基于在線云平臺[1]和計算機,而應(yīng)用在嵌入式終端上的離線語音識別技術(shù)尚不完善,無法滿足移動機器人、聲控機械等各類嵌入式終端在離線情況下對語音識別功能的需求。

      目前在嵌入式移動平臺上實現(xiàn)離線語音識別的方法大致分為三大類:一是利用專用語音識別芯片,一是使用傳統(tǒng)的語音識別算法,一是移植訊飛、百度等大公司的語音庫。文獻[2]采用語音識別芯片內(nèi)集成語音識別算法,雖然使用時方便快捷,但是具有硬件成本高、識別詞簡單固定等不足。傳統(tǒng)的語音識別算法包括文獻[3][4]采用的基于動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)的算法和文獻[5][6][7]采用的基于隱馬爾科夫模型(Hidden Markov Model,HMM)的算法等。DTW算法雖然在特定人、少量孤立詞識別方面具有較好的效果,但是無法適用非特定人、大量詞的識別;基于HMM的算法,則存在識別時間長、識別率偏低的不足。若要移植大公司的離線語音庫,則需要大量的存儲空間,不適用于存儲量有限的嵌入式平臺,同時,還需要支付不菲的庫使用費,大大增加了軟件成本。

      本文通過研究設(shè)計一種基于深度學(xué)習(xí)的嵌入式離線語音識別系統(tǒng),在節(jié)省語音識別芯片帶來的硬件成本和離線庫帶來的軟件成本的同時,還解決了傳統(tǒng)算法存在的只能適用于特定人、識別延遲高、識別率偏低等不足,為嵌入式離線語音識別提供了一種新的方案。

      1 系統(tǒng)總體架構(gòu)

      如圖1所示,系統(tǒng)主要由麥克風(fēng)、音頻編解碼芯片、嵌入式處理器、PC四部分組成。麥克風(fēng)采用的是型號為MP34DT01TR的MEMS數(shù)字麥克風(fēng),實現(xiàn)語音信號的錄入采集,輸出PDM格式的數(shù)字音頻信號;音頻編解碼芯片采用的是型號為WM8994ECS的超低功耗保真編解碼芯片,用以接收麥克風(fēng)輸出的數(shù)字音頻信號,并將信號編碼處理后輸出至嵌入式處理器;嵌入式處理器采用的是型號為STM32F746NGH6的嵌入式MCU,通過芯片的SAI接口與音頻解碼芯片連接,對輸入的音頻數(shù)據(jù)進行處理識別,并將識別結(jié)果輸出至串口;由于嵌入式平臺有限的資源難以滿足基于深度學(xué)習(xí)的聲學(xué)模型訓(xùn)練的需求,因而利用PC實現(xiàn)聲學(xué)模型的訓(xùn)練。

      圖1 系統(tǒng)總體架構(gòu)

      2 聲學(xué)模型訓(xùn)練與移植

      2.1 DS-CNN神經(jīng)網(wǎng)絡(luò)

      文獻[8][9]提出的DS-CNN神經(jīng)網(wǎng)絡(luò)作為標(biāo)準(zhǔn)三維卷積的有效替代方案,已經(jīng)被用于在計算機視覺領(lǐng)域?qū)崿F(xiàn)緊湊的網(wǎng)絡(luò)架構(gòu)。DS-CNN的核心就是將原本標(biāo)準(zhǔn)的卷積操作因式分解成一個depthwise convolution和pointwise convolution(即一個1×1的卷積操作)。簡單講就是將原來一個卷積層分成兩個卷積層,其中前面一個卷積層的每個卷積核都只與輸入的每個通道進行卷積,后面一個卷積層則負責(zé)連接,即將上一層卷積的結(jié)果進行合并。

      若以M表示輸入特征的通道數(shù),N表示輸出特征的通道數(shù)(也是本層的卷積核個數(shù))。假設(shè)卷積核大小是DK×DK×M×N,輸出是DF×DF×N,那么標(biāo)準(zhǔn)卷積的計算量是DK×DK×M×N×DF×DF。去掉M×N,就變成一個二維卷積核去卷積一個二維輸入feature map;如果輸出feature map的尺寸是DF×DF,由于輸出feature map的每個點都是由卷積操作生成的,而每卷積一次就會有DK×DK個計算量,因此一個二維卷積核去卷積一個二維輸入feature map就有DF×DF×DK×DK個計算量;如果有M個輸入feature map和N個卷積核,就會有DF×DF×DK×DK×M×N個計算量。

      DS-CNN則是將上述過程分為兩步。第一步用M個維度為DK×DK×1的卷積核去卷積對應(yīng)輸入的M個feature map,然后得到M個結(jié)果,而且這M個結(jié)果相互之間不累加。因此計算量是DF×DF×DK×DK×M,生成的結(jié)果是DF×DF×M。然后用N個維度為1×1×M的卷積核卷積第一步的結(jié)果,即輸入是DF×DF×M,最終得到DF×DF×N的feature map,計算量是DF×DF×1×1×M×N。即DS-CNN計算量為DF×DF×DK×DK×M+DF×DF×M×N。計算量與標(biāo)準(zhǔn)卷積計算量之比為:

      以3×3的卷積核為例,卷積操作時間降到標(biāo)準(zhǔn)卷積的1/9。

      可以看出,相較于標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò),DS-CNN大大減少了運算量,這使得在資源有限的微控制器上可以實現(xiàn)更深和更寬的結(jié)構(gòu)。將DS-CNN神經(jīng)網(wǎng)絡(luò)應(yīng)用于語音識別的流程圖如圖2。

      圖2 DS-CNN用于語音識別的流程圖

      使用平均池,然后使用全連接層,提供全局交互,并減少最終層中的參數(shù)總數(shù)。

      2.2 聲學(xué)模型訓(xùn)練

      聲學(xué)模型訓(xùn)練采用Google speech commands dataset作為訓(xùn)練集,在Tensorflow框架中使用標(biāo)準(zhǔn)的交叉熵損失和adam優(yōu)化器進行訓(xùn)練,批量大小為100,模型以20 000次迭代,初始學(xué)習(xí)率為5×10-4,并在第一個10 000 次迭代后減少到10-4。訓(xùn)練數(shù)據(jù)增加了背景噪音和高達100 ms的隨機時移,以模擬復(fù)雜的背景環(huán)境,提高系統(tǒng)的魯棒性。

      2.3 聲學(xué)模型移植

      利用ARM開發(fā)的深度學(xué)習(xí)庫arm_nn建立DS-CNN神經(jīng)網(wǎng)絡(luò)框架,將聲學(xué)模型訓(xùn)練得到的各項模型參數(shù)輸入至該框架中相應(yīng)的位置。在后續(xù)新建嵌入式工程時移植已輸入聲學(xué)模型參數(shù)的DS-CNN神經(jīng)網(wǎng)絡(luò),即可完成聲學(xué)模型的移植。

      3 離線語音識別

      3.1 開發(fā)環(huán)境配置及工程建立

      按照常規(guī)方法,在Linux系統(tǒng)下利用ARM開發(fā)的Mbed平臺開發(fā)本系統(tǒng)的嵌入式程序。首先安裝Mbed,然后在Mbed平臺下編譯代碼。實際操作時,發(fā)現(xiàn)兩個問題:(1)Mbed部分指令不可用;(2)使用Mbed無法在線調(diào)試以便于定位程序中的BUG。因此,本文提出了另一種解決方法,即采用Windows 10環(huán)境下的Keil 5.12開發(fā)本系統(tǒng)的嵌入式程序。方法如下:

      在Keil中新建工程μVision Project,在“Options for Target→Device”中選擇芯片型號STM32F746NGHx;“Options for Target→C/C++”中的“Define”選項卡添加“STM32F7xx,USE_HAL_DRIVER,ARM_MATH_CM7,_CC_ARM,__FPU_PRESENT,_FPU_USED=1”,以使之支持stm327xx_hal庫和浮點運算。然后再移植工程組件stm32fxx_hal庫和cmsis庫,Arm開發(fā)的適用于深度學(xué)習(xí)的arm_nn庫,以及用于硬件浮點運算的DSP庫。經(jīng)測試,該方法可以順利新建工程,并實現(xiàn)程序的正常編譯和在線調(diào)試。

      此外,在開發(fā)過程中,發(fā)現(xiàn)程序編譯時間過長,完整編譯一次程序竟需10 min左右,嚴重延緩了程序編譯和調(diào)試速度。研究發(fā)現(xiàn),該問題是由移植的庫中冗余的文件引起的。因此,對移植的庫做出以下調(diào)整:

      (1)對于stm327xx_hal庫,注釋掉stm32f7xx_hal_conf.h文件中本系統(tǒng)未用到的外設(shè)的define項,使程序編譯時略過相應(yīng)的外設(shè)庫文件,僅使能DMA、FLASH、SDRAM、GPIO、RCC、SAI、UART等外設(shè),如圖3所示。

      圖3 stm32_f7xx_hal庫使能外設(shè)

      (2)對于龐大的arm_nn庫,僅保留建立DS-CNN神經(jīng)網(wǎng)絡(luò)時會用到的文件,如圖4所示。將其他文件從工程項目文件中移除。

      圖4 DSP庫保留文件

      經(jīng)過上述調(diào)整,程序編譯時間從10 min左右降為2 min左右,大大縮短了程序開發(fā)時間。

      3.2 音頻預(yù)處理

      為便于后續(xù)的信號處理,需要對輸入的音頻信號進行分幀、加窗等預(yù)處理操作。采樣點數(shù)設(shè)置為16 000,分幀時設(shè)置幀長為40 ms,幀移為20 ms。為了消除分幀造成的每幀音頻數(shù)據(jù)首尾的重疊現(xiàn)象,選用Hamming窗來對每幀音頻數(shù)據(jù)進行加窗操作。

      3.3 MFCC特征提取

      對音頻數(shù)據(jù)進行分幀、加窗等預(yù)處理操作后,需要對每幀音頻數(shù)據(jù)進行MFCC特征提取。具體步驟如下:

      (1)對每幀音頻數(shù)據(jù),通過快速傅里葉變換(Fast Fourier Transform,FFT)得到對應(yīng)的頻譜。設(shè)置FFT運算點數(shù)為2 048,通過FFT運算得到每幀數(shù)據(jù)的實部和虛部,并以實部和虛部的平方和作為能量譜,獲得分布在時間軸上不同時間窗內(nèi)的頻譜;

      (2)創(chuàng)建Mel三角濾波器組,對每幀音頻數(shù)據(jù)進行Mel頻率轉(zhuǎn)換。設(shè)置Mel三角濾波器組數(shù)為40,通過Mel濾波器組將線性自然頻譜轉(zhuǎn)換為能體現(xiàn)人類聽覺特性的Mel頻譜;

      (3)在Mel頻譜上進行倒譜分析。對得到的Mel頻譜進行取對數(shù)操作,并通過離散余弦變換(Discrete Cosine Transform,DCT)來實現(xiàn)Mel逆變換。取Mel逆變換后得到的第2~13個系數(shù)作為這幀語音的特征。

      整體的特征提取流程如圖5所示。

      圖5 MFCC特征提取流程圖

      3.4 分類識別

      將提取的MFCC特征輸入到聲學(xué)模型中,利用arm_nn庫中的run_nn函數(shù)和arm_softmax_q7函數(shù)完成音頻特征的分類過程。利用滑動窗口對分類結(jié)果進行平均運算,以得到平滑的分類結(jié)果。根據(jù)分類結(jié)果即可得到最終的識別結(jié)果。

      4 測試過程和結(jié)果

      將程序通過ST-Link下載到主頻為216 MHz的STM32F746NGH6微處理器中,并開啟在線調(diào)試模式。程序運行開始,初始化系統(tǒng),并開啟SAI外設(shè)和DMA通道,實時監(jiān)聽麥克風(fēng)端的語音輸入。用USB接口連接嵌入式平臺與PC端串口接收程序,將識別結(jié)果輸出到PC端。測試時,在麥克風(fēng)端說出含有訓(xùn)練集中詞語的語句,即可在PC端串口接收程序的接收窗口內(nèi)看到相應(yīng)的語音識別輸出,如圖6所示。

      圖6 語音識別結(jié)果串口打印

      選取訓(xùn)練集中的50個詞,對選出的每個詞,分別在安靜環(huán)境和噪聲環(huán)境下進行20次測試,計算平均識別時間和平均識別率。為了方便比較,在同樣的硬件平臺上,使用相同的訓(xùn)練集和測試樣本,應(yīng)用傳統(tǒng)的基于HMM的方法來進行語音識別。

      最終得出的測試結(jié)果如表1所示。

      表1 語音識別測試結(jié)果

      綜上所述,與基于DTW算法的嵌入式語音識別系統(tǒng)相比,本文所述方法可以突破特定人的限制,應(yīng)用在非特定人的語音識別上,大大擴展了語音識別的應(yīng)用范圍;而與基于HMM算法的嵌入式語音識別系統(tǒng)相比,本文所述方法不但在識別時間上有所減少,在識別率上也有明顯提高。

      5 結(jié)束語

      本文基于深度學(xué)習(xí)和DS-CNN神經(jīng)網(wǎng)絡(luò),在嵌入式平臺上設(shè)計實現(xiàn)了離線語音識別系統(tǒng)。與現(xiàn)有的基于傳統(tǒng)算法的嵌入式離線語音識別系統(tǒng)相比,提高了識別率,減短了識別延遲;與基于專用語音識別芯片或離線語音庫的嵌入式離線語音識別系統(tǒng)相比,則節(jié)約了硬件或軟件成本。測試結(jié)果表明,系統(tǒng)能較好地實現(xiàn)嵌入式離線語音識別功能,在節(jié)約軟硬件成本的同時,減少了識別時間,提高了識別率,是一種有效的嵌入式離線語音識別方案。

      猜你喜歡
      離線聲學(xué)嵌入式
      異步電機離線參數(shù)辨識方法
      防爆電機(2021年4期)2021-07-28 07:42:46
      呼吸閥離線檢驗工藝與評定探討
      淺談ATC離線基礎(chǔ)數(shù)據(jù)的準(zhǔn)備
      愛的就是這股Hi-Fi味 Davis Acoustics(戴維斯聲學(xué))Balthus 70
      Acoustical Treatment Primer:Diffusion談?wù)劼晫W(xué)處理中的“擴散”
      Acoustical Treatment Primer:Absorption談?wù)劼晫W(xué)處理中的“吸聲”(二)
      Acoustical Treatment Primer:Absorption 談?wù)劼晫W(xué)處理中的“吸聲”
      離線富集-HPLC法同時測定氨咖黃敏膠囊中5種合成色素
      中成藥(2018年2期)2018-05-09 07:20:09
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      平山县| 库伦旗| 宁远县| 胶州市| 大渡口区| 普兰店市| 特克斯县| 宣化县| 吉木萨尔县| 招远市| 永登县| 武隆县| 扎囊县| 深圳市| 仙桃市| 苏州市| 凌源市| 云龙县| 丰镇市| 瑞金市| 醴陵市| 金寨县| 松溪县| 乌海市| 虹口区| 孟村| 富宁县| 瓦房店市| 图木舒克市| 安丘市| 烟台市| 武川县| 彭州市| 浦江县| 砚山县| 贵德县| 花垣县| 罗定市| 天等县| 竹溪县| 濮阳市|