2 回聲產生的原理與消除方法
2.1 回聲的基本概念和產生原理
通常意義上的回聲可以分為電學回聲和聲學回聲,前一種是由于服務提供商的線路質量所致,而后一種則是由于用戶端設備的質量所致。
2.1.1 電學回聲
在PSTN (Public Switched Telephone Network,公共交換電話網絡)中,為了降低電話中心局與電話用戶之間電話線的價格,用戶線間的連接采用兩線制,而電話中心局之間連接采用四線制。在這樣采用混合線制的電路中,由于阻抗的失配,會不可避免地產生電流泄漏。電流泄漏使得一部分信號的能量反射回信號源,這種反射和信道延遲結合在一起,使講話者聽到自己的聲音,即為電學回聲。
2.1.2 聲學回聲
聲學回聲是指揚聲器播出的聲音在被受話方聽到的同時,也通過多種路徑被麥克風拾取到,傳輸到說話方的一端,從而形成聲音回路。當回聲返回時間超過10 ms時,人耳就可聽到明顯的回聲了。多路徑反射的結果產生了不同延時的回聲,包括直接回聲和間接回聲。
①直接回聲是指由揚聲器播出的聲音未經任何反射直接進入麥克風。這種回聲的延時最短,它同遠端說話者的語音能量,揚聲器與麥克風之間的距離、角度,揚聲器的播放音量,麥克風的拾取靈敏度等因素直接相關。
②間接回聲是指由揚聲器播出的聲音經過不同的路徑(如房屋或房屋內的任何物體)的一次或多次反射后,進入麥克風所產生的回聲的集合。房屋內的任何物體的任何變動都會改變回聲的通道,因此,這種回聲的特點是多路徑的、時變的。
對于電學回聲的消除,通常由服務提供商提供解決方案。本文研究的重點是聲學回聲的消除機制,為了防止聲音回路的產生,通常需要在硬件和軟件設計中采取一定的解決方案。
如圖1所示,雙方在使用PDA或者手機進行通話時,假設B是主話方,A是受話方:
①B說話的聲音經過電信或者移動路徑傳輸到A的設備上;
②聲音經過揚聲器發(fā)出,由于硬件和機構設計上的局限性,會有部分聲音滲透到A的麥克風;
③滲透出的聲音又傳輸回到B,導致B能聽到自己的聲音。
這樣,便形成了聲音回路,即產生了回聲。
PDA或者手機內部結構聲音回路示意圖如圖2所示。在全雙工的情況下,揚聲器和麥克風之間至少要保持4 cm以上的距離,才能比較好地避免回聲問題。在實際情況下,絕大部分的回聲回路形成于機構內部,而由機構外部揚聲器回流到麥克風的聲音,由于距離較長,基本可以忽略。
由于硬件和機構設計上的局限性,在機構內部不可能完全隔離聲音的傳播,因此從揚聲器出來的聲音會有一部分會滲透到麥克風,從而產生回聲。
2.2 基于FM2010的回聲消除原理
FM2010使用的是自適應回聲抵消原理,它的基本思想是:估計回聲路徑的特征參數,產生一個模擬的回聲路徑,得出模擬回聲信號,從接收信號中減去該信號,實現回聲抵消。以圖3所示的受話端通話流程為例,圖中左上方的MIC IN是麥克風進入的信號,即用戶的聲音輸入信號,其中包含由本機揚聲器漏進去的部分主話端的語音信號;右下方的Line IN接入是主話端的語音信號,即由本機揚聲器輸出的信號直接接入到FM2010回音消除芯片的Line IN輸入端。在FM2010內部會經過DSP芯片的運算處理對兩者進行比較,消除MIC IN信號中與LineIN端相同的信號(即回聲音頻信號),使用自適應回聲抵消原理達到消除回聲的目的。MIC IN和Line OUT之間路徑上的寄存器需要進行配置和調試,DSP使用這些配置的數據作為特征參數來進行運算處理。
3 基于FM2010的回音消除驅動設計
3.1 硬件架構設計
圖4是硬件架構示意圖。CPU 通過I2C總線 來控制回音消除芯片讀/寫回音消除參數(echo parameter)。錄音信號先經過回音消除芯片處理后經移動信道傳輸到對方接收設備,經過對方音頻編解碼器處理后再通過揚聲器或者耳機輸出。
3.2 音頻設備機構設計
音頻設備是否產生回聲,很大程度上取決于機構的設計是否合理。不合理的機構設計會大大增加出現回聲的概率,而且出現的回聲會比較嚴重,難于消除。我們改進了音頻設備機構上的設計,在設計之初就盡可能避免回音的產生,而且揚聲器和麥克風的距離盡可能保持一定遠的距離,如圖5所示。實踐中發(fā)現,揚聲器和麥克風之間的距離保持在10 cm以上,效果會比較好。
為了盡可能減少揚聲器和麥克風之間的聲音傳播,可以采用以下2種設計方案:方案一是把麥克風隔離開來,如圖5(a)所
示;方案二是把揚聲器隔離開來,如圖5(b)所示。當然,為了達到更好的效果,可以把揚聲器和麥克風分別隔離開;但是鑒于成本的考慮,使用其中的一種即可達到比較好的效果。具體的實現方法分別是:
①用橡膠套密封揚聲器的邊緣,盡可能避免聲音從機構內部回流到麥克風;同時把麥克風密封在一個腔體之內,以隔離外
部噪聲的進入。
②把揚聲器密封在一個腔體之內,以盡可能隔離揚聲器的聲音向外部傳播;同時使用橡膠套密封麥克風的邊緣,以避免揚聲器發(fā)出的聲音進入。
另外,揚聲器和麥克風在設置的方向上也有講究,如圖6所示。兩者最好是相差180°,90°也可以接受;但是如果兩者的方向相同,如圖6(c)所示,則出現回聲的概率和程度都很大。
3.3 軟件架構設計與實現
軟件架構示意圖如圖7所示。
回音消除驅動的開發(fā)需要完成以下幾步:
①給回音消除芯片上電,并初始化其相關的寄存器和GPIO;
②初始化I2C總線,并配置I2C速率等的寄存器,使其處于正常運行狀態(tài);
③檢查I2C總線是否已準備好;
④通過I2C總線讀取回音消除參數;
⑤等待回音消除芯片處于可讀/寫狀態(tài),然后把參數寫入到芯片里,使配置的參數生效。
3.3.1 FM2010上電時序
當對FM2010初始化時,比較重要的一點是要按照其規(guī)格說明書定義的上電時序進行,否則可能會導致錄音聲音時有時無的情況發(fā)生。具體的要求如圖8所示。在初始化FM2010時,PWD high的狀態(tài)必須要在RESET high狀態(tài)之前設定,兩者之間相差5 ms。
3.3.2 讀/寫Echo parameter
FM2010芯片的初始化比較簡單,只要按照上述的時序進行初始化即可。下面重點剖析回音消除驅動的開發(fā)要點,即如何讀/寫回音消除參數(詳見代碼中的①和④)、設置回音消除芯片的工作模式(詳見②處),以及配置I2C總線(詳見③處)。
結 語
本文在分析語音通話中回聲產生的機理的基礎上,詳細研究了回聲消除的原理、基本聲學回聲產生根源,提出了改進的PDA或者手機等音頻設備的機構設計方案;針對FM2010芯片的特點,給出了回聲消除驅動開發(fā)的軟硬件設計方案,并且給出了回音消除驅動程序關鍵代碼的實現。本文設計的軟硬件解決方案已經在基于WinCE操作系統(tǒng)平臺和FM2010硬件平臺上得以實現,在實際項目開發(fā)中得到采用,并且獲得了良好的應用效果。