,
(蘇州科技大學 電子與信息工程學院,蘇州 215009)
一種噪聲混疊下的陣列語音采集系統*
張杰,潘欣裕
(蘇州科技大學 電子與信息工程學院,蘇州 215009)
設計了一種簡易的陣列語音采集系統,該系統以STM32F103系列MCU為核心,加載語音放大電路、通信電路等,實現了5路語音信號的采集、顯示、通信與存儲,利用獨立成分分析算法,實現了混疊語音信號的分離,獲得了較為純凈的語音,為后續的語音處理、分析與識別等工作提供了保障。
陣列語音采集;混疊語音處理;獨立成分分析
在視頻會議、電話會議和多媒體系統中,通常采用孤立麥克風作為語音拾取工具。而環境中總是不可避免地存在噪聲,孤立麥克風拾取的聲音信號包含了語音和噪聲,嚴重影響語音質量,這使得純凈語音信號采集存在困難。隨著陣列信號處理技術的高速發展,采用多個麥克風來拾取語音信號為獲取純凈語音提供了一個有效的解決方案。通過陣列語音采集技術,可實現語音增強[1]和多聲源分離[2],提高信噪比。
目前,陣列語音采集技術是語音處理技術領域的一個研究熱點,對于去噪、多聲源分離、語音識別及聲源定位[3]都有著極其重要的意義。施劍等[4]設計了基于USB2.0的麥克風陣列語音采集系統,具有接口簡單、使用方便、各通道同步、擴展性好等特點,可廣泛應用于音、視頻采集系統中。陳立春[5]開發了基于MSP430的多通道低功耗語音采集系統,實現了多路語音的采集、存儲和USB回傳功能,具有成本低、功耗低、尺寸小、錄音質量好等特點,該系統已在實際環境下使用,并可進一步推廣到生產、安全、監察、新聞采訪等眾多領域。何強等[6]設計了基于麥克風陣列的高信噪比定向采音系統,具有采音效果好、硬件實現簡單等特點,實現了對聲源的定向采音。蔡渤[7]創新地實現了一種基于麥克風陣列的子帶自適應波束形成和自適應后置濾波聯合的語音增強系統,解決了抑制環境噪聲干擾的問題。
本文從上述應用背景出發,設計了一種基于STM32的陣列語音采集系統,詳細分析了軟硬件實現方案,并利用盲源分離[8]方法和ICA算法對混疊語音信號進行分離,獲取純凈的語音,為后續的語音處理、分析與識別等工作提供了有力的保障。

圖1 陣列語音采集系統原理圖
本系統主要由電源系統、串口通信系統、語音采集與放大系統以及主控系統組成,整體電路原理如圖1所示。主要實現5路語音信號的實時采集與傳輸,硬件系統實物圖如圖2所示。

圖2 硬件系統實物圖
1.2.1 放大電路
麥克風拾取的語音信號是微弱的,放大電路的作用是將微弱的語音信號放大,以便STM32F103C8T6內置的ADC能準確采集到語音信號。該電路采用LM386芯片來實現,芯片電壓增益最低為20 dB,最高為200 dB。輸出端電壓會被自動偏置到電源電壓的一半,如果電源電壓為3.3 V,則偏置電壓為1.65 V,此時如果輸入語音信號,信號會加載在1.65 V直流電壓之上。放大電路的原理圖如圖3所示。當引腳1和引腳8斷路時,電壓增益為20 dB;當引腳1和引腳8短路時,電壓增益為200 dB。為使電壓增益在20~200 dB之間可調,在引腳1和引腳8之間加一個10 μF電容,在引腳5和GND之間加一個10 kΩ的電位器,通過調整電位器來改變增益大小。

圖3 放大電路原理圖
1.2.2 A/D轉換器
本文中主芯片STM32F103C8T6內置的ADC分辨率為12位,其數字量變化范圍為0~(212-1),輸入電壓的范圍是0~3.3 V,可分辨的最小電壓為3.3 V/212=0.805 7 mV。考慮到串口通信傳輸速率有限,所以只保留12位數據的高8位作為最終A/D轉換的結果。
1.2.3 串口通信協議
本系統利用定時器中斷來實現8 kHz的采樣率,即每1/8 000 s產生一次中斷,在中斷服務子程序里采集和傳輸語音數據。為了實現數據的高速傳輸,采用DMA方式來傳送數據。
為防止5路語音信號在采集和傳輸過程中丟失數據,給5路語音數據加上幀頭“0xFF”和幀尾“0x00”。一次A/D轉換產生一幀數據,一幀數據有7個,每個數據大小為8位,每秒傳輸8 000幀數據,則串口通信的波特率應設為:8 000×8bit×7=448 kbps。通信流程如圖4所示。

圖4 系統通信流程
語音信號通過麥克風陣列采集后,由串口發送到PC上。PC端構建實時顯示系統,可以實現多路語音信號的波形顯示及存儲。本系統采用Matlab的圖形用戶界面工具來完成。
該系統主要包含一個列表框、兩個按鈕和5個坐標系。列表框用來選擇STM32與PC相接的串口號,Open按鈕用來打開串口,Plot按鈕用來繪圖。陣列語音采集硬件系統與PC端連接完畢后,打開電源,運行陣列語音采集軟件系統。串口號一欄中可選擇的串口為COM1~COM8,若PC識別的串口號為COM8,則在列表框中選擇COM8。然后按下Open按鈕,則可以打開COM8串口。串口打開后,串口號不可更改,Open按鈕變為Close按鈕。要想重新選擇串口號,就必須關閉當前串口,即按下Close按鈕,這時Close按鈕變為Open按鈕,串口號可更改。如果選擇了錯誤的串口號,按下Open按鈕系統會提示打開串口發生錯誤。Open按鈕打開后,僅僅是打開了相應串口,并未開始接收數據。按下Plot按鈕后,軟件系統才開始接收數據并實時顯示語音信號的波形。
軟件系統可實時顯示多路語音信號波形,如圖5所示。從波形可看出,多路語音數據已被正確解析。同時系統生成了5個.wav文件,可正常播放。分析表明,各個通道數據精確同步,軟件系統正確完成了采集和存儲多路語音數據的功能。

圖5 陣列語音信號波形實時顯示結果
環境中總是不可避免地存在噪聲,所以需要消除掉噪聲,獲取純凈的人聲,如果僅僅采用單通道麥克風來拾取人聲,可以通過線性濾波或者稀疏編碼壓縮來去噪,但效果不佳。所以采用多個麥克風來采集更多的數據,利用空間特性提高去噪效率,這便是陣列語音采集系統的意義所在。在采集語音信號時,麥克風與聲源的相對位置不是固定的,所以混合過程是未知的。要想獲得原始聲音信號,只能通過盲估計的方法實現。可以看到,這種情況正好符合所謂的ICA模型,而去噪的實質就是一種盲源分離問題。
獨立向量分析是從多元統計數據中尋找內在成分的一種方法。ICA是由盲源分離發展而來的,是BSS的一類方法,而BSS比ICA的適用范圍更寬。
ICA方法的目的是在源信號和傳輸通道特性未知的情況下,通過一定的算法分離出混合信號中的各個獨立源信號。可以用數學語言來描述ICA問題,假設觀測信號為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階混合矩陣。在源信號和混合特性未知的情況下,僅利用源信號的統計特性和觀測信號對源信號的約束條件來估計出源信號就是ICA要實現的目的。
為了完整獨立地恢復出各個源信號,可構建一個解混矩陣W,那么x經過解混矩陣W變換后,就可得到n維輸出源信號的估計y=[y1,y2,…,yn]。ICA問題的求解就可表示為:
y(t)=Wx(t)=WHs(t)=Gs(t)
式中,G為全局傳輸矩陣,若通過學習使得G為單位矩陣,則y(t)=s(t),從而恢復出源信號[1]。
在本文的語音分離實驗中采用了Fast ICA算法。Fast ICA是一種快速尋優迭代算法,有大量的樣本數據參與到每一步迭代運算中,Fast ICA算法大致有三種形式,本文將對基于負熵最大的Fast ICA算法進行探討,它的搜尋方向為負熵最大,可用來分離出混合信號中的各個獨立源信號。Fast ICA的收斂結果較為穩定,且速度較快,因為它采用了定點迭代優化算法。
負熵可定義為:
Ng(Y)=H(Ygauss)-H(Y)
式中,任意隨機變量Y的熵用H(Y)來表示,高斯隨機變量的熵用H(Ygauss)來表示,Y的負熵用Ng(Y)來表示。任意隨機變量Y的熵也可以表示為:
由信息論可知,當隨機變量的方差相同時,熵最大的是服從高斯分布的隨機變量。Y的熵的大小總與其高斯性強度成反比,一個極端的情況是:當Y服從高斯分布時,Ng(Y)=0。綜上所述,Y的非高斯性可用Ng(Y)來度量。由上式可知,要想計算出H(Y),就必須知道隨機變量Y的概率密度。而隨機變量Y的概率密度是未知的,所以不能用上式計算負熵,可采用如下簡化公式:
Ng(Y)=E[g(Y)]-E[g(Ygauss)]2

Fast ICA是基于定點迭代結構的算法,目的是使wTx具有極大非高斯性,其中x為觀測向量,w為W的一行。可通過E{(wTx)}的最適條件來獲取wTx的近似負熵值,由庫恩-塔克條件可知,約束條件為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算法對陣列語音采集系統采集到的混合語音信號進行處理,恢復出各個聲源信號。
本文所設計的陣列語音系統是為了從混合語音信號中分離出各個聲源信號。先搭建好硬件系統,再用陣列語音采集軟件系統采集和接收語音信號,采集到的語音信號為各個聲源及噪聲的混合信號。通過串口傳送到PC端的5路語音信號包含幀頭“0xFF”和幀尾“0x00”,軟件系統的功能是正確解析出5路語音信號。
在軟件系統界面中,可實時顯示多路語音信號波形,同時將語音數據保存為.wav文件。也就是說,整個系統的功能是完成語音信號的實時采集和存儲。最后,需要在Matlab環境下利用Fast ICA算法對混合語音信號進行去噪和分離。

圖6 兩路混合語音信號波形
先在兩個純凈語音信號混疊的情況下對算法進行測試,可在軟件系統中看到2路混合語音信號波形如圖6所示。利用Fast ICA算法對其進行處理,最終實現了語音分離。分離得到的2個聲源信號如圖7所示。播放混合后的音頻文件和分離得到的音頻文件,進行對比,發現分離的語音較為干凈,去噪效果也很好,說明Fast ICA算法較好地實現了去噪和多聲源分離,完成了預期目標。

圖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] 陳曉峰,肖熙.傳聲器陣列語音數據采集系統的設計與實現[J].電聲器件與電路,2008,32(7):43-46.
[4] 施劍,何成林,杜利民.基于USB2.0的麥克風陣列語音數據采集系統設計[J].計算機工程,2006(24):216-218.
[5] 陳立春.基于TI MSP430芯片的多通道低功耗語音采集系統[J].電聲技術,2013(4):58-60.
[6] 何強,楊朱杰,郭晨,等.基于麥克風陣列的高信噪比的定向采音系統[J].硬件縱橫,2013(1):14-16.
[7] 蔡渤.基于陣列麥克風的語音采集增強系統設計[J].襄陽職業技術學院學報,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
國家自然科學基金資助項目(61372146,61472267);蘇州科技大學青年基金項目(XKQ201515)。
TP368.1
A
薛士然
2017-08-31)