,
(蘇州科技大學(xué) 電子與信息工程學(xué)院,蘇州 215009)
一種噪聲混疊下的陣列語音采集系統(tǒng)*
張杰,潘欣裕
(蘇州科技大學(xué) 電子與信息工程學(xué)院,蘇州 215009)
設(shè)計了一種簡易的陣列語音采集系統(tǒng),該系統(tǒng)以STM32F103系列MCU為核心,加載語音放大電路、通信電路等,實現(xiàn)了5路語音信號的采集、顯示、通信與存儲,利用獨(dú)立成分分析算法,實現(xiàn)了混疊語音信號的分離,獲得了較為純凈的語音,為后續(xù)的語音處理、分析與識別等工作提供了保障。
陣列語音采集;混疊語音處理;獨(dú)立成分分析
在視頻會議、電話會議和多媒體系統(tǒng)中,通常采用孤立麥克風(fēng)作為語音拾取工具。而環(huán)境中總是不可避免地存在噪聲,孤立麥克風(fēng)拾取的聲音信號包含了語音和噪聲,嚴(yán)重影響語音質(zhì)量,這使得純凈語音信號采集存在困難。隨著陣列信號處理技術(shù)的高速發(fā)展,采用多個麥克風(fēng)來拾取語音信號為獲取純凈語音提供了一個有效的解決方案。通過陣列語音采集技術(shù),可實現(xiàn)語音增強(qiáng)[1]和多聲源分離[2],提高信噪比。
目前,陣列語音采集技術(shù)是語音處理技術(shù)領(lǐng)域的一個研究熱點(diǎn),對于去噪、多聲源分離、語音識別及聲源定位[3]都有著極其重要的意義。施劍等[4]設(shè)計了基于USB2.0的麥克風(fēng)陣列語音采集系統(tǒng),具有接口簡單、使用方便、各通道同步、擴(kuò)展性好等特點(diǎn),可廣泛應(yīng)用于音、視頻采集系統(tǒng)中。陳立春[5]開發(fā)了基于MSP430的多通道低功耗語音采集系統(tǒng),實現(xiàn)了多路語音的采集、存儲和USB回傳功能,具有成本低、功耗低、尺寸小、錄音質(zhì)量好等特點(diǎn),該系統(tǒng)已在實際環(huán)境下使用,并可進(jìn)一步推廣到生產(chǎn)、安全、監(jiān)察、新聞采訪等眾多領(lǐng)域。何強(qiáng)等[6]設(shè)計了基于麥克風(fēng)陣列的高信噪比定向采音系統(tǒng),具有采音效果好、硬件實現(xiàn)簡單等特點(diǎn),實現(xiàn)了對聲源的定向采音。蔡渤[7]創(chuàng)新地實現(xiàn)了一種基于麥克風(fēng)陣列的子帶自適應(yīng)波束形成和自適應(yīng)后置濾波聯(lián)合的語音增強(qiáng)系統(tǒng),解決了抑制環(huán)境噪聲干擾的問題。
本文從上述應(yīng)用背景出發(fā),設(shè)計了一種基于STM32的陣列語音采集系統(tǒng),詳細(xì)分析了軟硬件實現(xiàn)方案,并利用盲源分離[8]方法和ICA算法對混疊語音信號進(jìn)行分離,獲取純凈的語音,為后續(xù)的語音處理、分析與識別等工作提供了有力的保障。
圖1 陣列語音采集系統(tǒng)原理圖
本系統(tǒng)主要由電源系統(tǒng)、串口通信系統(tǒng)、語音采集與放大系統(tǒng)以及主控系統(tǒng)組成,整體電路原理如圖1所示。主要實現(xiàn)5路語音信號的實時采集與傳輸,硬件系統(tǒng)實物圖如圖2所示。
圖2 硬件系統(tǒng)實物圖
1.2.1 放大電路
麥克風(fēng)拾取的語音信號是微弱的,放大電路的作用是將微弱的語音信號放大,以便STM32F103C8T6內(nèi)置的ADC能準(zhǔn)確采集到語音信號。該電路采用LM386芯片來實現(xiàn),芯片電壓增益最低為20 dB,最高為200 dB。輸出端電壓會被自動偏置到電源電壓的一半,如果電源電壓為3.3 V,則偏置電壓為1.65 V,此時如果輸入語音信號,信號會加載在1.65 V直流電壓之上。放大電路的原理圖如圖3所示。當(dāng)引腳1和引腳8斷路時,電壓增益為20 dB;當(dāng)引腳1和引腳8短路時,電壓增益為200 dB。為使電壓增益在20~200 dB之間可調(diào),在引腳1和引腳8之間加一個10 μF電容,在引腳5和GND之間加一個10 kΩ的電位器,通過調(diào)整電位器來改變增益大小。
圖3 放大電路原理圖
1.2.2 A/D轉(zhuǎn)換器
本文中主芯片STM32F103C8T6內(nèi)置的ADC分辨率為12位,其數(shù)字量變化范圍為0~(212-1),輸入電壓的范圍是0~3.3 V,可分辨的最小電壓為3.3 V/212=0.805 7 mV??紤]到串口通信傳輸速率有限,所以只保留12位數(shù)據(jù)的高8位作為最終A/D轉(zhuǎn)換的結(jié)果。
1.2.3 串口通信協(xié)議
本系統(tǒng)利用定時器中斷來實現(xiàn)8 kHz的采樣率,即每1/8 000 s產(chǎn)生一次中斷,在中斷服務(wù)子程序里采集和傳輸語音數(shù)據(jù)。為了實現(xiàn)數(shù)據(jù)的高速傳輸,采用DMA方式來傳送數(shù)據(jù)。
為防止5路語音信號在采集和傳輸過程中丟失數(shù)據(jù),給5路語音數(shù)據(jù)加上幀頭“0xFF”和幀尾“0x00”。一次A/D轉(zhuǎn)換產(chǎn)生一幀數(shù)據(jù),一幀數(shù)據(jù)有7個,每個數(shù)據(jù)大小為8位,每秒傳輸8 000幀數(shù)據(jù),則串口通信的波特率應(yīng)設(shè)為:8 000×8bit×7=448 kbps。通信流程如圖4所示。
圖4 系統(tǒng)通信流程
語音信號通過麥克風(fēng)陣列采集后,由串口發(fā)送到PC上。PC端構(gòu)建實時顯示系統(tǒng),可以實現(xiàn)多路語音信號的波形顯示及存儲。本系統(tǒng)采用Matlab的圖形用戶界面工具來完成。
該系統(tǒng)主要包含一個列表框、兩個按鈕和5個坐標(biāo)系。列表框用來選擇STM32與PC相接的串口號,Open按鈕用來打開串口,Plot按鈕用來繪圖。陣列語音采集硬件系統(tǒng)與PC端連接完畢后,打開電源,運(yùn)行陣列語音采集軟件系統(tǒng)。串口號一欄中可選擇的串口為COM1~COM8,若PC識別的串口號為COM8,則在列表框中選擇COM8。然后按下Open按鈕,則可以打開COM8串口。串口打開后,串口號不可更改,Open按鈕變?yōu)镃lose按鈕。要想重新選擇串口號,就必須關(guān)閉當(dāng)前串口,即按下Close按鈕,這時Close按鈕變?yōu)镺pen按鈕,串口號可更改。如果選擇了錯誤的串口號,按下Open按鈕系統(tǒng)會提示打開串口發(fā)生錯誤。Open按鈕打開后,僅僅是打開了相應(yīng)串口,并未開始接收數(shù)據(jù)。按下Plot按鈕后,軟件系統(tǒng)才開始接收數(shù)據(jù)并實時顯示語音信號的波形。
軟件系統(tǒng)可實時顯示多路語音信號波形,如圖5所示。從波形可看出,多路語音數(shù)據(jù)已被正確解析。同時系統(tǒng)生成了5個.wav文件,可正常播放。分析表明,各個通道數(shù)據(jù)精確同步,軟件系統(tǒng)正確完成了采集和存儲多路語音數(shù)據(jù)的功能。
圖5 陣列語音信號波形實時顯示結(jié)果
環(huán)境中總是不可避免地存在噪聲,所以需要消除掉噪聲,獲取純凈的人聲,如果僅僅采用單通道麥克風(fēng)來拾取人聲,可以通過線性濾波或者稀疏編碼壓縮來去噪,但效果不佳。所以采用多個麥克風(fēng)來采集更多的數(shù)據(jù),利用空間特性提高去噪效率,這便是陣列語音采集系統(tǒng)的意義所在。在采集語音信號時,麥克風(fēng)與聲源的相對位置不是固定的,所以混合過程是未知的。要想獲得原始聲音信號,只能通過盲估計的方法實現(xiàn)。可以看到,這種情況正好符合所謂的ICA模型,而去噪的實質(zhì)就是一種盲源分離問題。
獨(dú)立向量分析是從多元統(tǒng)計數(shù)據(jù)中尋找內(nèi)在成分的一種方法。ICA是由盲源分離發(fā)展而來的,是BSS的一類方法,而BSS比ICA的適用范圍更寬。
ICA方法的目的是在源信號和傳輸通道特性未知的情況下,通過一定的算法分離出混合信號中的各個獨(dú)立源信號??梢杂脭?shù)學(xué)語言來描述ICA問題,假設(shè)觀測信號為x(t),它是由源信號s(t)線性混合而成,在沒有噪聲時,這種線性混合模型可表示為:
x(t)=Hs(t)
式中,s(t)=[s1,s2,…,sn]表示n維源信號,x(t)=[x1,x2,…,xn]是n維觀測到的信號,H=[h1,h2,…,hn]表示n×n階混合矩陣。在源信號和混合特性未知的情況下,僅利用源信號的統(tǒng)計特性和觀測信號對源信號的約束條件來估計出源信號就是ICA要實現(xiàn)的目的。
為了完整獨(dú)立地恢復(fù)出各個源信號,可構(gòu)建一個解混矩陣W,那么x經(jīng)過解混矩陣W變換后,就可得到n維輸出源信號的估計y=[y1,y2,…,yn]。ICA問題的求解就可表示為:
y(t)=Wx(t)=WHs(t)=Gs(t)
式中,G為全局傳輸矩陣,若通過學(xué)習(xí)使得G為單位矩陣,則y(t)=s(t),從而恢復(fù)出源信號[1]。
在本文的語音分離實驗中采用了Fast ICA算法。Fast ICA是一種快速尋優(yōu)迭代算法,有大量的樣本數(shù)據(jù)參與到每一步迭代運(yùn)算中,F(xiàn)ast ICA算法大致有三種形式,本文將對基于負(fù)熵最大的Fast ICA算法進(jìn)行探討,它的搜尋方向為負(fù)熵最大,可用來分離出混合信號中的各個獨(dú)立源信號。Fast ICA的收斂結(jié)果較為穩(wěn)定,且速度較快,因為它采用了定點(diǎn)迭代優(yōu)化算法。
負(fù)熵可定義為:
Ng(Y)=H(Ygauss)-H(Y)
式中,任意隨機(jī)變量Y的熵用H(Y)來表示,高斯隨機(jī)變量的熵用H(Ygauss)來表示,Y的負(fù)熵用Ng(Y)來表示。任意隨機(jī)變量Y的熵也可以表示為:
由信息論可知,當(dāng)隨機(jī)變量的方差相同時,熵最大的是服從高斯分布的隨機(jī)變量。Y的熵的大小總與其高斯性強(qiáng)度成反比,一個極端的情況是:當(dāng)Y服從高斯分布時,Ng(Y)=0。綜上所述,Y的非高斯性可用Ng(Y)來度量。由上式可知,要想計算出H(Y),就必須知道隨機(jī)變量Y的概率密度。而隨機(jī)變量Y的概率密度是未知的,所以不能用上式計算負(fù)熵,可采用如下簡化公式:
Ng(Y)=E[g(Y)]-E[g(Ygauss)]2
Fast ICA是基于定點(diǎn)迭代結(jié)構(gòu)的算法,目的是使wTx具有極大非高斯性,其中x為觀測向量,w為W的一行??赏ㄟ^E{(wTx)}的最適條件來獲取wTx的近似負(fù)熵值,由庫恩-塔克條件可知,約束條件為E{(wTx)2}=‖w‖2=1時,E[g(Y)]的解可通過下式獲得:
E{xg(wTx)}-βw=0
用牛頓方法解此方程,定義方程左邊為F,得到它的雅克比矩陣JF(w)為:
JF(w)=E{xxTg′(wTx)}-βI
上式右邊第一項可簡化為:
E{xxTg′(wTx)}≈E{xxT}E{g′(wTx)}=E{g′(wTx)}
雅克比矩陣變成對角的、可逆的。因此獲得近似牛頓迭代式:
本文采用Fast ICA算法對陣列語音采集系統(tǒng)采集到的混合語音信號進(jìn)行處理,恢復(fù)出各個聲源信號。
本文所設(shè)計的陣列語音系統(tǒng)是為了從混合語音信號中分離出各個聲源信號。先搭建好硬件系統(tǒng),再用陣列語音采集軟件系統(tǒng)采集和接收語音信號,采集到的語音信號為各個聲源及噪聲的混合信號。通過串口傳送到PC端的5路語音信號包含幀頭“0xFF”和幀尾“0x00”,軟件系統(tǒng)的功能是正確解析出5路語音信號。
在軟件系統(tǒng)界面中,可實時顯示多路語音信號波形,同時將語音數(shù)據(jù)保存為.wav文件。也就是說,整個系統(tǒng)的功能是完成語音信號的實時采集和存儲。最后,需要在Matlab環(huán)境下利用Fast ICA算法對混合語音信號進(jìn)行去噪和分離。
圖6 兩路混合語音信號波形
先在兩個純凈語音信號混疊的情況下對算法進(jìn)行測試,可在軟件系統(tǒng)中看到2路混合語音信號波形如圖6所示。利用Fast ICA算法對其進(jìn)行處理,最終實現(xiàn)了語音分離。分離得到的2個聲源信號如圖7所示。播放混合后的音頻文件和分離得到的音頻文件,進(jìn)行對比,發(fā)現(xiàn)分離的語音較為干凈,去噪效果也很好,說明Fast ICA算法較好地實現(xiàn)了去噪和多聲源分離,完成了預(yù)期目標(biāo)。
圖7 分離得到的兩個聲源信號波形
[1] Seongjae Lee,David K Han,Hanseok Ko.Single-channel speech enhancement method using reconstructive NMF with spectrotemporal speech presence probabilities[J].Applied Acoustics,2017(117):257-262.
[2] Cosme Llerena-Aguilar,Roberto Gil-Pita,Manuel Utrilla-Manso,et al.A new mixing matrix estimation method based on the geometrical analysis of the sound separation problem[J].Signal Processing,2017(134):166-173.
[3] 陳曉峰,肖熙.傳聲器陣列語音數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].電聲器件與電路,2008,32(7):43-46.
[4] 施劍,何成林,杜利民.基于USB2.0的麥克風(fēng)陣列語音數(shù)據(jù)采集系統(tǒng)設(shè)計[J].計算機(jī)工程,2006(24):216-218.
[5] 陳立春.基于TI MSP430芯片的多通道低功耗語音采集系統(tǒng)[J].電聲技術(shù),2013(4):58-60.
[6] 何強(qiáng),楊朱杰,郭晨,等.基于麥克風(fēng)陣列的高信噪比的定向采音系統(tǒng)[J].硬件縱橫,2013(1):14-16.
[7] 蔡渤.基于陣列麥克風(fēng)的語音采集增強(qiáng)系統(tǒng)設(shè)計[J].襄陽職業(yè)技術(shù)學(xué)院學(xué)報,2016,15(2):22-24.
[8] Meriem Zoulikha,Mohamed Djendi.A new regularized forward blind source separation algorithm for automatic speech quality enhancement[J].Applied Acoustics,2016(112):192-200.
ArraySpeechAcquisitionSysteminMixedNoisesEnvironment
ZhangJie,PanXinyu
(School of Electronics and Information Engineering,Suzhou University of Science and Technology,Suzhou 215009,China)
In the paper,a simple array speech acquisition system is designed,which takes STM32F103 series MCU as the core,loads speech amplification circuit,communication circuit and so on.The system achieves the collection,display,communication and storage of the 5 channels speech signals.And the independent component analysis algorithm is used to realize the separation of the overlapping speech signals,and obtains more pure speech,which provides a powerful guarantee for subsequent speech processing,analysis and recognition.
array speech acquisition;overlapping speech processing;independent component analysis
國家自然科學(xué)基金資助項目(61372146,61472267);蘇州科技大學(xué)青年基金項目(XKQ201515)。
TP368.1
A
薛士然
2017-08-31)