姜 愉
(欽州學院 數(shù)學與計算機科學學院,廣西 欽州 535000)
基于BP和ARM的發(fā)動機聲音識別系統(tǒng)
姜 愉
(欽州學院 數(shù)學與計算機科學學院,廣西 欽州 535000)
為解決高速公路收費站及大型停車收費場自動收費問題,依據(jù)BP神經(jīng)網(wǎng)絡識別理論,設計了一個基于ARM9及嵌入式Linux系統(tǒng)的發(fā)動機聲音識別系統(tǒng)。選用S3C2410微處理器和嵌入式Linux操作系統(tǒng),把交叉編譯后的發(fā)動機聲音識別C語言程序移植到操作系統(tǒng)的文件中,實現(xiàn)了發(fā)動機聲音實時識別功能,給出了系統(tǒng)整體軟硬件結(jié)構(gòu)框架以及實時輸入發(fā)動機聲音判別汽車類型的識別結(jié)果?,F(xiàn)場實驗證實了該系統(tǒng)的準確性、實時性和有效性。
BP;嵌入式系統(tǒng);S3C2410處理器;發(fā)動機聲音;識別
隨著我國高速公路和汽車技術(shù)的迅猛發(fā)展,汽車流動量越來越大,大型收費停車場及公路收費站越來越多,人工收費對人力物力消耗巨大且速度較慢,亟需一種行之有效的智能管理系統(tǒng)。因此,筆者研究了發(fā)動機聲音信號頻譜特征,針對該特性選擇BP作為識別機,同時通過離線仿真選取適合特征參數(shù)并確定BP網(wǎng)絡參數(shù),最后完成基于BP神經(jīng)網(wǎng)絡、ARM9及嵌入式Linux系統(tǒng)的發(fā)動機聲音識別系統(tǒng)。以期通過檢測發(fā)動機聲音,有效識別駛過的汽車類型,在高速公路收費站及大規(guī)模停車收費場起到不停車自動準確收費的效果。
系統(tǒng)采用誤差反向傳播BP(Back Propagation)模型作為發(fā)動機聲音識別模型。聲音識別主要包括訓練及識別兩部分。訓練階段主要通過對數(shù)據(jù)庫樣本聲音進行訓練,形成神經(jīng)網(wǎng)絡模型。識別階段則是把發(fā)動機聲音輸入到訓練形成的神經(jīng)網(wǎng)絡中輸出識別結(jié)果。發(fā)動機識別的系統(tǒng)框圖如圖1所示。
圖1 聲音識別系統(tǒng)Fig.1 Sound recognition system
聲音信號的預處理包括:聲音采樣、模/數(shù)(A/D)轉(zhuǎn)換、分幀、加窗、端點檢測[1]。
A/D設定的采樣頻率是16 kHz,量化精度是16位。
幀長取1 024點,幀移取400點。
加窗:采用哈明窗進行發(fā)動機聲音加窗。
系統(tǒng)采用雙門限的端點檢測方法,即通過聲音信號的短時能量和過零率來進行端點檢測。
選取特征參數(shù)主要考慮識別效果及系統(tǒng)硬件存儲量限制兩方面。文中選用Mel頻率倒譜系數(shù)MFCC(Mel Frequency Cepstrum Coefficient)[2]作為特征參數(shù)。信號的MFCC主要反映聲音靜態(tài)特征,具備較好的被識別能力和抗噪能力。由于發(fā)動機聲音為規(guī)則噪音,其靜態(tài)特征具備足夠的被識別能力,系統(tǒng)中特征矢量為12階倒譜系數(shù)。
系統(tǒng)采用BP(Back Propagation)神經(jīng)網(wǎng)絡作為訓練識別網(wǎng)絡。BP神經(jīng)網(wǎng)又稱誤差反向傳播算法[3],是一種多層前饋型的神經(jīng)網(wǎng)絡。圖2為3層神經(jīng)網(wǎng)絡結(jié)構(gòu)圖,其算法的基本步驟為:
步驟1初始化各層網(wǎng)絡的權(quán)值為較小的隨機數(shù),依次輸入P個學習樣本。設當前輸入的為第P個樣本。依次計算出各層的輸出。
步驟2求各層的反傳誤差δ,期望輸出d,實際輸出值y,及輸出層(第3層)節(jié)點數(shù)m,中間隱層節(jié)點數(shù)n1,輸入層(第1層)節(jié)點數(shù)n2:
步驟3記錄已經(jīng)學習過的樣本數(shù)P。如果p<P,轉(zhuǎn)到步驟1繼續(xù)計算,如果p=P按權(quán)值修正公式修正各層的權(quán)值ω。η為學習速率。引入動量項α來加快收斂,公式為
系統(tǒng)中通過Matlab模擬仿真,選擇適合的特征參數(shù)。采用期望最小均方誤差為0.001,輸入采用12節(jié)點,為12維MFCC特征參數(shù),隱層為70個,動量因子為0.8,學習速率為0.1(學習速率只要在可允許速度的情況下,一般越小越好)。輸出4個節(jié)點:分別為小機車(1,0,0,0),面包車(0,1,0,0),公交車(0,0,1,0)和重型汽車(0,0,0,1)。
圖2 3層BP神經(jīng)網(wǎng)絡結(jié)構(gòu)Fig.2 Three layer BP block diagram
聲譜圖本身反應語音信號的動態(tài)頻譜特性,同時反映了時域的變化,在聲音分析中有重大的使用價值[4]。圖3為普通語音的語譜圖,圖4為發(fā)動機聲譜圖。
圖3 普通語譜圖Fig.3 Normal voice spectrum
圖4 發(fā)動機聲譜圖Fig.4 Engine sound spectrum
由于發(fā)動機聲譜隨時間變化很小,聲譜是平穩(wěn)的(圖4)。因此,識別時選擇單幀識別,在滿足實時識別的同時對識別結(jié)果影響很小。
該系統(tǒng)的硬件結(jié)構(gòu)如圖5所示。整個系統(tǒng)采用三星S3C2410作為核心微處理器,UDA1341TS作音頻解碼芯片,接口電路及儲存電路等來完成發(fā)動機聲音識別過程。電源電壓12 V。芯片內(nèi)核為ARM920T,微處理器主頻為203 MHz,16/32位;配有64 M的外部存儲器,以及64 M的NAND Flash;還集成有網(wǎng)絡接口、串口、USB接口、LCD及觸摸屏接口、存儲接口、復位電路、音頻接口,同時支持JTAG下載調(diào)試接口等。
圖5 系統(tǒng)硬件結(jié)構(gòu)Fig.5 System hardware structure
飛利浦公司生產(chǎn)的UDA1341TS芯片是一款功耗低且全雙工的音頻編解碼專用芯片,集成ADC及DAC在一塊芯片上,模擬前端完全集成,自身包括數(shù)字自動增益控制(AGC)和可編程增益控制(PGA),有強大的數(shù)字信號處理(DSP)性能。輸入聲音信號為模擬信號,系統(tǒng)采用UDA1341TS芯片完成A/D轉(zhuǎn)換。輸入輸出部分分別由話筒及揚聲器完成。發(fā)動機聲音模擬信號經(jīng)話筒輸入后進行預處理:包括A/D轉(zhuǎn)換以及自動增益控制等。存儲部分采用2片32 M容量的SDRAM芯片及64 M的NAND Flash組成。
文中數(shù)據(jù)庫選擇車況較新、車輛負載較少、車速較慢較平穩(wěn)的情況下所采集的發(fā)動機聲音。為防止干擾音影響,錄音采用錄音筆指向車輛進行錄音,且錄音距離為錄音筆距車輛1~4 m。
基于BP技術(shù)的識別系統(tǒng)需要一個較大的聲音庫,訓練階段需要較大的運算量。識別模型需要的存儲量及匹配計算的運算量相對較小,如果訓練及識別都采用ARM硬件實現(xiàn)則運算速度和運算精度都會較慢且對存儲量要求較大。同時受運算速度及硬件資源限制,更重要的是硬件為16/32位運算精度,PC機運算精度可達到64位,由此系統(tǒng)的發(fā)動機聲音訓練階段在PC機上應用Matlab仿真完成,聲音數(shù)據(jù)用錄音筆(采樣頻率 16 kHz,量化精度16 bits)大量采集,采用單聲道 PCM(Pulse Code Modulation)格式。聲音數(shù)據(jù)經(jīng)過預處理,提取12維MFCC特征參數(shù),然后用BP進行訓練得到識別模型,并將訓練結(jié)果保存嵌入式Linux操作系統(tǒng)與算法實現(xiàn)的C程序相同的目錄下,以便在系統(tǒng)識別階段進行模型的讀取。聲音識別階段則是將從麥克風輸入的聲音信號經(jīng)UDA1341TS(音頻數(shù)字信號譯碼器)處理后,通過相應程序提取特征參數(shù),將所得特征參數(shù)與訓練所得模型對比,找出最匹配(相近)的聲音作為識別結(jié)果。
發(fā)動機聲音識別算法完全采用標準C語言編寫。嵌入式Linux系統(tǒng)按軟件角度可分引導加載程序(Boot Loader)、內(nèi)核文件、文件系統(tǒng)及應用程序4個部分:引導加載程序采用vivi;內(nèi)核采用Linux-2.6;將聲音識別C語言程序運用make工具進行交叉編譯,采用arm-linux-gcc交叉編譯器,并將聲音識別程序添加到 cramfs根文件系統(tǒng)中;UDA1341TS作為音頻驅(qū)動程序[5],把驅(qū)動程序放在Linux-2.6內(nèi)核靜態(tài)編譯。
做好軟件準備工作后,用 JTAG燒寫工具在ARM開發(fā)板上依次燒寫vivi引導加載程序、Linux內(nèi)核及cramfs根文件系統(tǒng),燒寫完畢后需重新啟動開發(fā)板,Linux操作系統(tǒng)可以進行發(fā)動機聲音實時識別實驗。
實驗是在車輛相對較少、車速較慢的地點進行的,在發(fā)動機聲音訓練階段采用的4組數(shù)據(jù)分別為小汽車、面包車、公共汽車、重型汽車。每組400個樣本聲音,其中200個用作訓練集,其余200個用作測試集。識別從麥克風實時輸入的發(fā)動機聲音信號。
由于車輛實時通過時時間較短,且發(fā)動機聲譜平穩(wěn),分別得到采集1幀數(shù)據(jù)及3幀數(shù)據(jù)(每幀分別識取2幀及以上為同一結(jié)果)情況下的識別結(jié)果。由表1可知,隨著識別時所取幀數(shù)的增加,識別率q會相應增加,但所需的內(nèi)存及識別時間也會隨之增加,所以根據(jù)不同的車速場所可采取不同的幀數(shù)進行識別。
表1 取不同幀數(shù)發(fā)動機聲音實時識別結(jié)果及速率Talbe 1 Different frames real time srecognition result and rates
由于單幀識別可達到較高的識別率,單幀采集時間為1 024點(64 ms),識別速度v為8 ms,可以適應高速公路車速較快的情況;又因其采用直接讀取識別模型,同時數(shù)據(jù)采集時只采集1幀,大量節(jié)約內(nèi)存及計算量,滿足了嵌入式設備成本低、消耗少、體積小、性能高的要求。因此,該系統(tǒng)是通過發(fā)動機聲音識別車輛的較好選擇。
筆者根據(jù)發(fā)動機聲音信號的特點,利用BP神經(jīng)網(wǎng)絡算法,在ARM平臺上設計了一個嵌入式發(fā)動機聲音實時識別系統(tǒng)。在實驗條件下,該系統(tǒng)單幀識別率在95%以上,且識別速度僅為8 ms,表明該系統(tǒng)準確有效。該系統(tǒng)可用于智能交通及停車場自動收費系統(tǒng)中,同時也可考慮應用于汽車的黑匣子。目前,該系統(tǒng)已在ARM平臺上實現(xiàn)并進行了綜合評估。未來的工作將嘗試降低環(huán)境噪聲對端點檢測準確性的影響以提高識別性能;并改進識別算法以適應多輛車同時通過的情形。
[1]趙 力.語音信號處理[M].北京:機械工業(yè)出版社,2010.
[2]江星華,李 應.一種基于MFCC的音頻數(shù)據(jù)檢索方法[J].計算機與數(shù)字工程,2008(9):19-21.
[3]辛 鑫.基于自制嵌入式ARM9平臺的Linux-2.6移植[D].武漢:華中科技大學,2008.
[4]李玉萍,樸春俊,韓永成.一種帶噪語音信號端點檢測方法研究[J].電子測試,2008(2):14-17.
[5]趙明明,王志勝.參數(shù)自整定PID控制器設計與仿真[J].工業(yè)控制計算機,2010,23(2):72-73.
Voice recognition engine based on BP’s system in realization of ARM
JIANG Yu
(School of Mathematics& Computer Science,Qinzhou University,Qinzhou 535000,China)
Aimed at addressing automatic fee charging of highway toll stations and large-scale rechargeable parking lots,this paper introduces the design of a embedded speech recognition system based on ARM9 and embedded Linux system of the engine sound by analyzing the BP neural network recognition theory.The design consisting of S3C2410 microprocessors and Linux operating systems involves transplanting the C language of speech recognition program to the embedded Linux operating system’s file system when cross-compiled.The paper describes the system’s hardware and software framework,and offers the experiments results produced by real-time recognition of the car type by the engine sound.The results prove its accuracy,real-time and validity.
BP;embedded systems;S3C2410 processor;engine sound;recognition
TP391.4
A
1671-0118(2012)05-0533-04
2012-08-21
姜 愉(1982-),男,黑龍江省克山人,助教,碩士,研究方向:信號處理,E-mail:63131758@qq.com。
(編輯 王 冬)