李 棚,孔 健,葉 飛,張明存,劉明明
(1.六安職業技術學院,安徽 六安;2.合肥幼兒師范高等專科學校,安徽 合肥)
聲音識別技術作為新一代識別技術,已經應用在許多特殊領域[1-2]。音調、響度、音色是聲音的三個主要的要素,對三個要素中的部分參數進行數字化,可以實現物理參數的測量[3]。通過對音調頻率分量的分析,可以判斷變壓器,齒輪的工作狀態,做到在線檢測,通過對家禽(豬,雞,羊等)鳴叫聲音的識別,能夠有效的判斷家禽的健康狀態,避免大規模家禽致病,已經開展了相關研究[4-6]。
相對于大規模語音識別系統,采用嵌入式芯片為核心的數據采集系統,通過算法實現快速音頻轉換和識別,具有很大的應用前景。為了有效的驗證音頻識別的準確度,采用STM32 針對5 個不同的水杯進行音頻學習和識別,然后能夠快速識別水杯的序號。從而驗證了聲音識別系統的可靠性,為后續向行業應用場景遷移打下基礎。
若要實現待測音頻信號的頻率檢測,需要采用聲音采集模塊將聲音信號轉換成電信號,采用放大電路對電信號進行適當放大,放大后的信號通過A/D 轉換模塊采集到處理器中,在處理器中進行數字信號處理(DSP),處理后的數據在通過顯示模塊進行顯示,系統方案如圖1 所示。其中,聲音傳感器采用全向麥克風,能夠完整采集周圍聲音信號,放大器采用軌到軌的放大電路,能夠有效實現信號的放大。數字信號處理(DSP)需要采用傅里葉變換,將聲音信號從時域轉換到頻域,然后對主要頻率進行識別,獲取待測聲音的主要頻率。

圖1 聲音檢測系統方案
聲音信號是一種混合多種頻率的信號源,在時域角度可以看成一組正弦函數的線性組合,通過傅里葉變換能夠將時域信號轉換為頻域信號,便于頻率的提取[1-3],見圖2。

圖2 傅里葉變換示意圖
對周期函數f(t),如果變量t 滿足狄里赫萊條件,則f(x)以2T 為周期的傅里葉級數收斂,其表達式(1)稱為積分運算f(t)的傅立葉變換。
針對敲擊玻璃杯發出的音頻信號是周期性連續時間的自然信號,通過帶通濾波器,獲取有限段信號,再通過AD 采集,在STM32 中獲得時域離散的信號。表達式(2)對于時域離散信號x(n),可以進行離散傅里葉變換(DFT),轉換成離散的頻率信號。

在進行模擬信號采集的時候,需要考慮采集信號的頻率值,根據奈奎斯特采樣定理可知,采樣頻率F必須是最高頻率的2 倍以上,這樣才能確保信號的完整性。采用點數N,那么FFT 變換之后,就是N個復數標識的點。每一個點對應一個頻率點,這個點對應的幅值就是該頻率下的幅度特性,每個點的相位,就是在該頻率下的信號的相位[7-8]。
根據STM32F10x 系列處理器的技術參數表1 所示,其中采用1 024 點的傅里葉運算需要2.138 ms,如果采用64 點的傅里葉運算只需要0.078 ms,STM32 的運算速度滿足FFT 運算需求。針對FFT 的算法,STM32 自帶DSP 庫實現傅里葉變換。其中,采用基4 浮點FFT 運算,需要三個函數。

表1 快速傅里葉變換速度(基4,16 位FFT,Flash 存儲器)
arm_status arm_cfft_radix4_init_f32(arm_cfft_radix 4_instance_f32*S,uint16_t fftLen,uint8_t ifftFlag,uint8_t bitReverseFlag);
void arm_cfft_radix4_f32(const arm_cfft_radix4_instance_f32*S,float32_t*pSrc);
void arm_cmplx_mag_f32(float32_t*pSrc,float32_t*pDst,uint32_t numSamples)。
設置5 個同型號水杯,放入不同量的液體,通過對水杯敲擊聲音進行識別,驗證傅里葉變換的可靠性和穩定性。為了提高聲音識別的效率,采用MAX4466聲音傳感器模塊優化增益帶寬,然后通過STM32 運行傅里葉算法(FFT),獲取幅度頻譜特性,尋找主頻率的值和對應幅度值。當識別到水杯的頻率后,根據預先設定的音高與杯號的映射表,查找對應的杯號,然后將該杯號通過液晶顯示屏進行顯示。
本系統采用STM32F103 芯片為主控模塊,整體系統主要由主控核心板模塊、聲音傳感器模塊、帶通濾波器模塊,音頻輸出模塊、控制模塊和顯示模塊組成。通過聲音傳感器模塊,將聲音信號轉換成電壓信號,通過帶通濾波器濾除干擾的高頻和低頻信號,STM32 進行AD 采集后,進行傅里葉變換,將時域信號轉變成頻域信號,對頻域信號進行記錄和標定,完成信息的采集和存儲功能,系統總體框圖如圖3 所示。

圖3 系統總體框圖
STM32 采用自帶的DSP 庫文件,通過調用FFT函數,實現對水杯在不同狀態下的頻率值和對應頻率的幅度值的記錄和學習,在識別過程中,將采集到的水杯頻率與保存頻率對比,正確識別水杯的狀態,圖4繪制了主程序、初始化程序、FFT 轉換程序的對應流程圖。

圖4 STM32 的FFT 的學習與識別程序
在正常溫度和濕度的前提下開展測試,通過加入不同水位的方式,改變水杯的頻率,測試識別的準確度。本批次的空杯頻率集中在2 500 HZ 到3 000 HZ之間,根據奈奎斯特采樣定理可知,當采樣頻率大于信號中最高頻率的2 倍時,本系統STM 32 系統頻率采用72 MHZ,AD 采集頻率設置為10 KHZ。
根據我們的測試,基于STM32 主控的聲音識別系統的功能和性能測試結果如表2 所示。

表2 5 個水杯不同水量測試頻率值
使用基于STM32 主控、MAX4466 聲音傳感器模塊和蜂鳴器模塊的搭建方案,經過驗證發現,能夠區分3 Hz 的本征頻率水杯,準確的識別出不同水杯的頻率值,滿足作為識別系統的需要。該項目通過硬件結構優化,能夠制作出手持式聲音測試儀,可以用于環境消噪采集設備,也可以作為有聲設備故障巡檢儀器。