黃 祎, 張得生
(1. 重慶電子工程職業學院 通信工程學院,重慶 401331;2. 黃淮學院 信息工程學院, 河南 駐馬店 463000)
?
聲源信號優化識別系統仿真研究
黃 祎1, 張得生2
(1. 重慶電子工程職業學院 通信工程學院,重慶 401331;2. 黃淮學院 信息工程學院, 河南 駐馬店 463000)

針對現實環境中,大多數聲音都存在于背景聲源的干擾影響中,為了獲得需要的聲音,在頻譜技術分析現有的聲信號的基礎上,開發出了基于Matlab GUI界面的混合聲信號的可視化頻譜分離系統。該系統軟件可讀取并存儲采集到的聲信號,然后通過分析,做出采集信號或者讀取信號的時域圖以及該信號的頻譜圖,通過對頻譜圖的分析,選擇合適的濾波器,設定合理的頻率范圍,對混合信號進行分離,最終分離出需要的信號。通過對一段wav格式的音樂進行分析分離處理,驗證了該系統的可行性以及正確性。
聲信號; 分離技術; 濾波器; Matlab GUI
混合信號分離算法主要包括如下幾種技術:正弦模型技術、計算聽覺場景分析技術、模式識別技術、頻譜濾波技術和非負矩陣分解技術等[1-11]。本文主要采用的則是基于Matlab GUI開發了頻譜濾波技術對聲卡采集到的聲音信號進行信號分離的系統,并且通過本系統對音樂文件進行了測試和分析處理,取得了較好的效果,實現了將音樂原聲和伴奏通過雙聲道相分離,驗證了該系統的可行性。
聲音信號和音樂信號通常都是具有諧波特性的,其音色也通常是與信號的陣列關系相關的[3]。那么聲音信號可以通過濾波器進行重構,從而將其聲音分離出來,完成本系統的功能。其頻譜分析的算法通常是有兩種的,這兩種算法分別是:頻譜抽取的分離算法,時域濾波的分離算法[2-3]。
1.1 頻譜抽取的分離算法
頻譜抽取的分離算法往往是針對單聲道聲音信號的,該算法首先采用STFT分析聲音的結構,再使用ICA算法找到聲音信號的功率譜和時變譜。由于每段頻譜的結構是通過ICA算法得到的,因此,在進行信號分離之前,需要結合被分離聲音信號的特征,對其頻譜進行重新的構建和反變換,由此求出聲音的分離信號[2]。一般情況下,基于頻譜抽取的聲音分離方法,需要按以下步驟進行:
(1) 混合聲音信號的預處理,多基頻檢測;
(2) 利用選取合適的濾波器,結合待處理信號的高音頻段的信息,選取相應的頻譜成分進行信號分離;
(3) 逆變換分離后頻譜得到分離樂音的時域信號。
1.2 時域濾波的分離算法
采用迭代算法,通過將重構系統信息函數最大化,也可以對重構的誤差函數進行最小化處理,自定義重構信號的重構系數,來得到聲音信號中各個不同聲音源的重構信號。本算法在原理上,與頻域濾波器的分離算法是基本相同的,只是在得到信號的結構后,將高斯-牛頓迭代算法加載到需要設計的頻域濾波中去,將其轉化為需要的時域濾波器,就可以直接對聲音信號進行濾波,從而得到聲信號的分離信號[3]。
2.1 過程描述[1,14-15]
頻譜分析濾波的聲信號的分離方法是根據被分離聲音信號的波形信息,去尋找合適的濾波器,分離出需要的頻譜信息。該算法的核心部分就是濾波器的設計。

圖1 頻譜分析技術的分離系統框圖
本系統主要采用了兩種濾波器的設計方法:低通濾波器和帶阻濾波器。
2.2 低通濾波器的設計
低通濾波器的設計原理:可以除去信號中的高頻噪聲,對信號進行有限帶寬處理[4,12-13]。其濾波性能可以采用傳遞函數H(s)表示:
(1)
式中,U1和U2分別為輸入電壓和輸出電壓。但是由于實際差異,需要對以上傳遞函數進行修正,從而制作出接近理想特性的實用濾波器。則式(1)可表示為:
(2)
其中:a、b為常數;m,n=1,2,3(m≤n);分母的多項式的冪n就是濾波器的階數。若a1,a2,…,am均為0,則該濾波器為全極點濾波器。
而對于二階的低通濾波器,若其截止頻率為ω,則其全極點的傳遞函數可以表示為:
(3)
式中,B和C都是歸一化的常數系數,其中ωt=1,這個函數中K表示增益。
由此,在使用Matlab設計濾波器時,可以采用下列語句來完成:
[b,a]=butter(4,ws,'low');
本系統采用的濾波器幅頻特性曲線如圖2所示:

圖2 低通濾波器的幅頻特性圖
2.3 帶阻濾波器的設計
帶阻濾波器(又稱陷波器)的作用是抑制某一頻率信號而通過其他頻率的信號。在Matlab中用[B,A]=Butter(N,Wn,′Stop′,′S′)語句來實現帶阻濾波器,其中[B,A]是濾波器傳遞函數多項式的系數;N為濾波器的階數;Wn=[Fl*2*PiFu*2*Pi]分別為阻帶低端-3 dB和高端-3 dB處的角頻率[5]。因此,本系統采用的帶阻濾波器的幅頻特性如圖3所示。

圖3 帶阻濾波器的幅頻特性圖
根據本系統需要實現的頻譜分析和信號處理功能,本文選擇使用Matlab GUI作為聲信號頻譜分離系統的開發平臺。
在Matlab GUI的平臺下,可以設置各項菜單和按鈕,并對其位置和功能屬性進行編輯,同時可以自定義設置人機交互界面[6-8]。在完成人機交互界面的設計之后,需要對各菜單和按鈕進行回調函數的編寫,用以實現本系統應具備的功能[9-10,12]。
該系統主要由4大模塊組成,即聲音采集或加載模塊、聲信號的頻譜分析模塊、聲信號分離模塊和圖形顯示模塊。圖4介紹了聲信號分離系統的運行流程圖。

圖4 聲信號分離軟件的運行流程圖
3.1 聲信號處理流程
先將WAV 格式音頻信號經wavread 函數轉換成Matlab列數組變量;再用Matlab強大的運算能力進行數據分析和處理,如時域分析、頻域分析、數字濾波、信號合成、信號變換、識別和增強等等;處理后的數據如是音頻數據,則可用wavwrite 轉換成WAV 格式文件或用sound、wavplay 等函數直接回放。下面分別介紹Matlab 在聲信號的采集或加載模塊、聲信號的頻譜分析模塊、聲音分離模塊、圖形顯示模塊的實現。
3.2 聲信號的采集或加載模塊
在 “聲信號的采集或加載”模塊中,通過點擊“錄音”或“瀏覽”按鈕,實現聲卡采集聲音并保存和讀取現有的聲音文件,其文件名顯示在文本框中,見圖5,同時在圖形顯示區域,顯示出聲音信號的時域圖,以便為下面的頻譜分析步驟做準備。

圖5 Matlab GUI的聲音頻普分離系統界面
Matlab語句表述為:
function pushbutton3_Callback(hObject, eventdata, handles)
%調用聲卡采集聲音
y=wavrecord(1+str2double(get(handles.edit4,′String′))*Fs, Fs,′double′);
Y2=y;
%對采集到的聲音進行保存
[FileName,PathName]=uiputfile(′*.wav′,′存儲文件′);
wavwrite(y,Fs,[PathName,FileName]);
%文件的讀取
[FileName,PathName]=uigetfile(′*.wav′,′選擇播放文件′);
handles.tp=wavread(FileName);
3.3 信號的頻譜分析模塊
頻譜分析模塊主要功能有3部分:時域分析、頻域分析和畫出信號的頻譜圖。在完成聲信號的加載以后,分別點擊“時域分析”和“頻域分析”后,在時域分析結果板塊中會顯示出結果,在頻域分析結果中會顯示出信號的周期和頻率,在圖形顯示區域會顯示出信號的幅頻特性等信息。 在上述的各個控件中,寫入實現其功能的回調函數。
3.4 聲音分離模塊
根據頻譜模塊分析的結果,選擇點擊“低通濾波器”或者“帶阻濾波器”,會彈出相應的對話框,按要求寫入截止頻率,點擊“分離并播放”,實現聲音信號的分離。
Matlab語句表述為:
%低通濾波
function filter1_Callback(hObject, eventdata, handles)
value=inputdlg(prompt,dlg_title,num_lines,def);
F1=str2num(value{1});
ws=2*F1/40960;
[b,a]=butter(4,ws,'low');
%帶阻濾波
function filter2_Callback(hObject, eventdata, handles)
value=inputdlg(prompt,dlg_title,num_lines,def);
F2=str2num(value{1});
F3=str2num(value{2});
ws=[2*F2/40960 2*F3/40960];
[b,a]=butter(4,ws,'stop','s');
若分離效果良好,則結束;若分離效果較差,則返回,根據頻譜分析結果,重新選擇濾波器和截止頻率,進行再次分離,直到達到滿意的分離效果為止。
3.5 圖形顯示模塊
為了讓該系統的人機交互界面更加直觀,便于操作者選擇合理的濾波形式,本系統加入了圖形顯示模塊,而圖形顯示模塊本身無需添加回調函數。其功能主要顯示原聲音信號的時域圖、頻譜圖,同時分離完成后,也將分離結果顯示出來。
實驗中,對截取的一段音樂“God is a girl.wav”進行測試,時域、頻域分析的結果見圖6,其時域圖、頻譜圖如圖7所示。


圖7 原音樂的時域圖與頻譜圖
通過以上得到的對音樂的分析信息,運用頻譜分析技術得出,可以采用截止頻率為100 Hz的低通濾波器進行聲音信號的分離,其分離出的伴奏時域、頻譜圖如圖8所示。同時也可以采用低截止頻率200 Hz、高截止頻率1.0 kHz的帶阻濾波器進行分離,其分離出的伴奏結果如圖9所示。


圖8 低通濾波器分離出伴奏的時域圖與頻譜圖
通過驗證,運用該軟件分離出的伴奏達到了預期的效果,音質效果也符合要求。
由上述實驗結果可以得以下結論:
(1) 肯定了頻譜分析、濾波技術在聲音分離處理中的可行性;
(2) 通過實驗的驗證,肯定了該聲信號的頻譜分離系統的正確性;


圖9 帶阻濾波器分離出伴奏的時域圖與頻譜圖
(3) 通過實驗測試,分離出了良好的伴奏效果,肯定了該系統軟件的可用性。
本文詳細介紹了聲信號的頻譜分離系統的工作原理,并且基于Matlab GUI設計了聲信號頻譜分離系統軟件,提供了很好的人機交互性,通過對一段wav格式的音樂文件進行實際測試,驗證了該軟件系統的正確性和可行性。
[1] 李素平.混合樂音信號分離方法研究[D].濟南:山東大學,2010.
[2] 蘇 秦.基于聲場景分析的混疊語音信號分離[D].蘇州:蘇州大學,2004.
[3] 趙 力.語音信號處理[M]. 北京:機械工業出版社,2009.
[4] 晏春海,田蔚風,王俊璞.巴特沃斯低通濾波器的設計[J].彈箭與制導學報,2003,23(S2):106-108.
[5] 王大偉,賈榮叢,王劃一.基于Matlab的巴特沃斯濾波器設計[J].現代電子技術,2012,35(21):71-73.
[6] 趙文科,陳章龍,何秋生.汽車計算平臺中信息系統的架構[J].計算機應用與軟件,2009,26(8):244-246.
[7] 郭洪源,許維勝,余有靈.基于Matlab GUI的汽車外燈控制系統演示模型[J].計算機應用與軟件,2012,29(2):187-189.
[8] 李 偉,趙建軍,王 超.基于Matlab可視化界面的單縫衍射仿真分析[J].計算機應用與軟件,2012,29(7):220-222.
[9] 陳垚光.精通Matlab GUI設計[M].北京:電子工業出版社,2011.
[10] 羅華飛.Matlab GUI設計學習手記[M].北京:北京航空航天大學出版社,2009.
[11] 李昌祿,郭威辰,蘇寒松. 基于TDOA的聲音定位系統[J].實驗室研究與探索,2014,33(6):118-121.
[12] 易昆南,李 慧,趙澍源. 讓枯燥無味的數學變得“有趣、有味、有惑”——Matlab中的音樂合成[J].實驗室研究與探索,2014,33(6):114-117.
[13] 毛春靜,關 永,劉永梅,等. 數字音樂合成器的研究與設計[J].計算機工程與應用,2009,45(6): 89-91.
[14] 謝志強,辛 宇,楊 靜,等. 基于信號驅動的多批處理綜合調度算法[J].計算機學報,2013,36(4):818-828.
[15] 朱俊敏,張 瀟,王旌陽. 小波域音頻信號降噪研究[J].計算機工程與應用,2014,33(6):149-154.
Simulation Study of Sound Source Signal Recognition System
HUANGYi1,ZHANGDe-sheng2
(1.School of Communication Engineering,Chongqing College of Electronic Engineering, Chongqing 401331, China;2.School of Information Engineering, Huanghuai University, Zhumadian 463000, China)
In real-world environment, most speech signals are interfered by noises originated from various sources. The authors developed a Matlab GUI-based visualized spectral separation system based on the existing spectral separation method of acoustic signals. The Matlab system first reads and stores the collected sound signals, presents the time- and frequency-domain spectrums, then compares the frequency spectrums, and elects an appropriate band filter to separate the required acoustic signals. The validity and feasibility of the system are verified by error analysis and an example of processing the measured data of a song in WAV format.
acoustic signal; separation technology; filter; Matlab GUI
2015-05-29
黃 祎(1980-),女,四川渠縣人,碩士,講師, 主要研究方向:信號與信息處理。
Tel.:13618297568,023-65926039;E-mail:huangyi8078@126.com
TP 391.9
A
1006-7167(2016)01-0068-04