在現實的語音通信中會不可避免地受到來自環境中的背景噪聲影響,致使通信質量嚴重下降,甚至聽不清楚對方講話的內容,因此對帶噪語音信號進行降噪已經成為語音通信中的一個非常迫切的課題。近年來,隨著VLSI技術的發展和高速DSP晶片的出現,語音增強方法走向實用化[1]。本文所介紹的語音降噪系統能夠有效地實現數字降噪功能,由於降噪處理時不但要進行信號的採集與回放,還要進行降噪算法的實時處理,採用具有高速實時處理能力的DSP TMS320VC5509進行處理,能夠滿足日常生活中語音通信中的降噪要求。
1 降噪系統設計
1.1 硬體系統結構圖
本系統採用TI公司的TMS320VC5509晶片進行信號處理和譜相減算法的處理,語音降噪系統如圖1所示。系統採用12 MHz的晶振為DSP提供時鐘,DSP內部工作時鐘採用PLL方式設置成16倍頻,使DSP的內部時鐘達到192 MHz。語音採集與回放模塊採用TLV320AIC23語音編解碼晶片。CPLD XC95114提供讀寫Flash AM29LV800B和配置,啟動語音編解碼模塊AIC23的控制信號。供電模塊採用TPS73HD301,分別提供DSP晶片所需的1.6 V內核電壓和3.3 V的I/O電壓。
1.2 主要電路原理分析
圖2為5509DSP與TLV320AIC23的接口原理圖。
音頻Codec晶片TLV320AIC23通過外圍器件對其內部寄存器進行編程配置,使用靈活,其配置接口支持SPI總線接口和I2C總線接口, 數據傳輸格式支持右判斷模式、左判斷模式、I2S 模式和DSP模式4種方式,其中TI 模式專門針對TI DSP設計[2,3]。C5509的多通道緩衝串口MCBSP可以配置為SPI總線接口,其串行數據傳輸格式與TLV320AIC23的DSP模式兼容,此外,這兩款晶片的I/O電壓兼容,從而使得C5509與TLV320AIC23可以無縫連接,系統設計簡單。
MODE引腳作為串行接口輸入模式選擇端,0為I2C模式,1為SPI模式;由於C5509片內外設含有I2C模塊,直接使用C5509的I2C模塊控制TLV320AIC23,此時C5509作為I2C總線的主設備,TLV320AIC23作為從設備,通過編程完成對TLV320AIC23的配置。
TLV320AIC23的數字音頻接口採用DSP模式,將TLV320AIC23配置為主設備。與DSP的McBSP0無縫連接,將其作為雙向的數據收發通道。輸入輸出的幀同步信號LRCIN、LRCOUT分別接McBSP串口的FSX0與FSR0,時鐘信號BCLK與McBSP的串口輸出時鐘CLKX0相連,同時通過CLKX0驅動輸入串行時鐘CLKR0,以保證串口數據收發的一致與同步。SCL和SDI分別是 TLV320AIC23的控制埠和數據輸入端,分別和C5509的I2C模塊埠 SCL和 SDA 相連。
1.3 音頻信號的採集與回放
此系統中採用MICPHONE採集語音信號,把採集的語音信號經過模數變換,進入DSP後再經過濾波存儲到DSP的片內存儲空間。然後調用譜相減算法降噪軟體進行降噪處理,得到新的處理後的數據再經過數模變換,放大後從耳機輸出。
通過MIC採集的語音信號通過TLV320AIC23語音編解碼晶片對語音進行模數轉換。TLV320AIC23是一個高性能的多媒體數位訊號編解碼器,該模塊具有模數轉換器、數模轉換器,使用了高效的 Multibit sigma-delta 和過採樣數字插補濾波技術,支持 16、20、24 和 32位格式從8 kHz~96 kHz採樣頻率的音頻信號的採集與回放,並具有較高的信噪比(SNR)和較低的能耗。利用多通道緩衝串口McBSP(multiply—channel buffer interferce)與DSP通信。把通過TLV320AIC23模數轉換後的數據通過McBSP1傳送給DSP進行降噪處理,處理後的數據經過數模轉化後傳送到耳機輸出。
2 系統算法與軟體設計
2.1 譜相減算法[4,5]
目前降噪算法具有代表性的有自相關算法、自適應噪聲濾波法、短時譜幅度估計法、譜相減算法、小波變換等。譜相減算法因具有運算量小、容易實時實現、增強效果好等特點,是目前在降噪系統中最常用的算法之一。
譜相減算法的基本原理是在頻域將噪聲的頻譜分量從帶噪語音信號的頻譜中減去。譜減的提出前提是假設語音信號與加性噪聲相互獨立,它假設噪聲是統計平穩的,即有語音期間噪聲振幅譜的期望值與無語音間隙噪聲的振幅譜的期望值相等,用無語音期間測得的噪聲頻譜的估計值取代有語音期間的噪聲頻譜,與含有噪音的語音頻譜相減,即可得到語音頻譜估計值。假設帶噪語音的模型表達式如式(1):
其中sm(n)表示純淨的語音,dm(n)表示噪聲,ym(n)表示帶噪語音。其中m=0,1,2,…,M-1;n=0,1,2,…,N-1;M、N分別表示一段語音中包含的幀數和每幀信號的長度。
在實際中由於語音信號是不平穩的,但是具有短時平穩性,因此計算時通常要加窗處理。設Yk、Sk、dk分別表示帶噪語音,純淨語音和噪聲的傅立葉係數。對(1)式進行傅立葉變換,由於假設的語音與噪音是不相關的,可得式(2),即
譜相減算法原理圖如圖3所示
2.2 系統軟體設計
在本系統的軟體設計中,軟體系統主要包括主程序、中斷服務程序、中斷向量表和連結命令文件,其中最重要的是主程序和中斷服務程序,中斷服務程序主要功能是實現數據採集與數據更新。
系統主函數是程序執行的入口並完成需要的初始化工作。主函數中主要包括對時鐘、多通道緩衝串口McBSP1以及對AIC23的初始化配置。接著啟動串口進行正常工作,最後進行譜相減法降噪算法處理,輸出降噪後的語音信號。
在該系統中,音頻信號通過MIC被採集,然後經過TLV320AIC23語音編解碼模塊,把採集的語音信號進行信號保持、採樣、量化後轉換成數位訊號,轉換成的數字語音信號以中斷方式被DSP讀取,通過DSP的多通道緩衝串口McBSP1以數據幀的方式把數據存儲到片上緩衝區裡。當一幀數據採集完後,中斷返回到主程序對數據的進行加窗處理、FFT變換,然後再進行有聲無聲檢測,判斷是否需要進行降噪處理。處理後的數據通過McBSP1輸出到TLV320AIC23進行回放。軟體處理流程結構如圖4所示。
CPU在相應接收中斷服務程序後,在服務程序中將128個採樣值拷貝到處理緩衝區中等待處理,實現緩衝區的數據轉換,然後置1使程序進入主程序中進行降噪處理。
本系統中實時設計中的關鍵技術有加窗處理、幀間重疊、幀移位、快速傅立葉變換(FFT)、快速傅立葉反變換、定點數與浮點數的轉化。在進行FFT變換的時候必然會產生大量的數據,所以在對數據進行讀取與存儲時不可避免地要造成流水線衝突,為了解決這樣的問題,可以在產生流水線衝突的兩條指令間加上三個NOP指令[6,7]。
通過譜相減算法在DSP開發板上搭建的語音降噪系統中進行降噪實驗,實驗結果表明,本系統能夠有效地降低環境噪聲對語音的影響,能夠有效地提高信噪比,改善語音通信質量,達到降低語音通信中的背景噪聲的目的。
參考文獻
[1] 黃蘇雨,梁聲灼,黃蘇園.語音增強方法綜述[J].計算機與現代化,2007,23(3):16-20.
[2] 汪春梅,孫紅波.TMS320C5000系列DSP系統設計與開發實例[M].北京:電子工業出版社,2004.
[3] 丁祥,餘小清.音頻編解碼器TLV320AIC23及其與DSP接口設計[J].單片機與嵌入式系統,2002,2(6):35-37.
[4] 王欣,羅代升,王正勇.基於改進譜減算法的語音增強研究[J].成都信息工程學院學報,2007,22(2):201-204.
[5] 張俊.基於譜減算法語音增強的研究[J].信息技術,2009,33(3):74-76.
[6] Texas Instruments.TLV320AIC23B stereo audio CODEC datamanual[Z],2003.
[7] 北京瑞泰創新科技有限責任公司. ICETEK-VCS5509 EVM用戶使用手冊V1.0[Z],2004.