主動降噪(Active Noise Control)
智慧耳機
人機互動
- 智慧聲學終端
- 智慧耳機
- 智慧音箱
- 智慧聽力器
- 喇叭單體
- 動圈喇叭
- 新材料
- DLC
- 石墨烯
- 陶瓷單位
- 吸音材料
- 智慧晶片
- 陣列式麥克風
- 聲紋感測器
- 演演算法
- 降噪演算法
- 智慧聽力保護
- ANC
ANC
降低噪音通常所採用的三種降噪措施,即在聲源處降噪、在傳播過程中降噪及在人耳處降噪,都是被動的。為了主動地消除噪聲,人們發明了“有源消聲”這一技術。ANC(Active Noise Control)又稱為主動噪聲控制,常應用在耳機降噪中,
原理:通過降噪系統產生與外界噪音相等的反向聲波,將噪聲中和,從而實現降噪的效果,
所有的聲音都由一定的頻譜組成,如果可找到一種聲音,其頻率、振幅與所要消除的噪聲完全一樣,只是相位剛好相反(相差$180^o$)就可以將這噪聲完全抵消。
頻率:一秒鐘語音訊號震動的次數
振幅:聲音大小
相位:某一時刻聲波處於一個週期內的位置,如果我們規定空氣被壓縮的最厲害的地方是相位的零點,那麼半個週期之後,空氣變得最為稀疏的地方,相位就變成180°。等到空氣再次被壓縮得最密集時,就經過了一整個週期,相位變化了360°又重新變為0°。
辦法:先採集噪聲,所以處理器會根據噪聲進行預測,預測出下一時刻噪聲的情況,併產生相位相反的噪聲,來抵消原噪聲。
為了保證降噪質量,還需要一個反饋麥克風用來檢測所合成後的噪聲是否真的變小了。這時處理器會根據這個反饋麥克風測量到的結果,對處理過程進行調整從而進一步降低合成後的噪聲音量,這叫做自適應過程。好比處理器變聰明瞭,能夠根據消噪的效果不斷調整自己,以達到最佳降噪效果。
眾所周知,聲音是由震動產生的,因此通過解決震動也可以有效的解決噪聲問題,當金屬板、機器外壁等一般均由薄金屬板震動產生聲音,進而輻射噪聲,象這類由金屬板結構振動引起的噪聲稱之為結構噪聲。
咳咳咳咳,總結一下,
一:是通過聲音抑制聲音
二:通過減少震動來抑制聲音
降噪耳機
降噪功能對耳機的作用很重要,一是減少噪音,避免過度放大音量,從而減少對耳朵的損害。二是過濾噪音從而提高音質和通話質量。
降噪可分為被動式降噪和主動式降噪。
被動式降噪也就是物理降噪,被動式降噪是指利用物理特性將外部噪聲與耳朵隔絕開,主要通過耳機的頭樑設計得緊一些、耳罩腔體進行聲學優化、耳罩內部放上吸聲材料……等等來實現耳機的物理隔音。被動降噪對高頻率聲音(如人聲)的隔絕非常有效,一般可使噪聲降低大約為15-20dB。
主動式降噪就是商家在宣傳耳機降噪功能時會主打的ANC、ENC、CVC、DSP等降噪技術
降噪耳機,採用ANC降噪,主動噪音控制,主要是針對外部環境中的高、低頻噪聲,不同於一般耳機的被動隔音,其原理為:
- 先由安置於耳機內的訊號麥克風偵測耳朵能聽到的環境中低頻噪音 (100 ~ 1000Hz)(目前已經可以到3000Hz)
- 再將噪聲訊號傳至控制電路,控制電路進行實時運算
- 通過 Hi-Fi 喇叭發射與噪音相位相反、振幅相同的聲波與外界噪聲相加,來抵消噪音
- 因此噪音就消失聽不見了
主動降噪根據拾音麥克風位置的不同,分為前饋式主動降噪與反饋式主動降噪。
這麼一來,這個耳機需要一段的演算法處理時間,先學習噪聲,這個學習需要時間,然後再把學習到的噪聲相位反轉,有一個自適應調整期。
主動降噪耳機價格昂貴,但是一般效果優秀,佩戴舒適。但是需要獨立電池供電,大多數被動降噪耳機可以不耗電使用(也不主動降噪)
ENC降噪
ENC(Environmental Noise Cancellation,環境降噪技術),能有效抑制90%的反向環境噪聲,由此降低環境噪聲最高可達35dB以上,讓遊戲玩家可以更加自由的語音溝通。通過雙麥克風陣列,精準計算通話者說話的方位,在保護主方向目標語音的同時,去除環境中的各種干擾噪聲。
DSP降噪
DSP是英文(digital signal processing)的簡寫。主要是針對高、低頻噪聲。工作原理是麥克風收集外部環境噪音,然後系統複製一個與外界環境噪音相等的反向聲波,將噪音抵消,從而達到更好的降噪效果。DSP降噪的原理和ANC降噪相似。但DSP降噪正反向噪音直接在系統內部相互中和抵消。
CVC降噪
CVC(Clear Voice Capture)是通話軟體降噪技術。主要針對通話過程中產生的回聲。通過全雙工麥克風消噪軟體,提供通話的回聲和環境噪音消除功能,是目前藍芽通話耳機中最先進的降噪技術。
相關應用
主動降噪主要應用在車載音響中:
凱迪拉克是率先將主動降噪技術運用於汽車領域的品牌。2013年一季度在國內上市的凱迪拉克XTS豪華轎車,其BOSE 5.1環繞聲高階音響系統具備主動降噪靜音系統(ANC),用車內麥克風採集噪音樣本,經系統分析處理之後,由車載音響的揚聲器播放相反的音訊,以抵消噪音波,營造更安靜的車內氛圍。
主動降噪在室內降噪中的運用:
隨著人們居住要求的日益提高,室內降噪需求也愈發凸顯,針對窗外、四鄰活動及家用電器運轉等噪聲源,研發三維開放聲場主動降噪技術並將其運用到室內降噪以改善聲環境,是未來室內噪聲控制的一種可行方案。
核心演算法
ANC降噪實現核心演算法為:FxLMS(最小均方差演算法)。最小均方差演算法以均方誤差為代價函式,並使誤差降到最小的演算法。 具體演算法推導這裡不做具體介紹,這裡直接列出表示式
其中, x(k)為輸入訊號矩陣,W(k)為調整權值矩陣,d(k)為目標(理想)輸出訊號矩陣,y(k)為實際輸出訊號矩陣,e(k)為誤差訊號矩陣,第3個公式為權值調整公式,mu為收斂因子(值為隨機的,0<mu<x(k)的相關矩陣最大特徵值的倒數)
Matlab模擬LMS濾波器
根據表達設計濾波器
function [yn,W,en]=LMS(xn,dn,M,mu,itr) % LMS(Least Mean Squre)演算法 % 輸入引數: % xn 輸入的訊號序列 (列向量) % dn 所期望的響應序列 (列向量) % M 濾波器的階數 (標量) 濾波器的階數,就是指過濾諧波的次數,其階數越高,濾波效果就越好 % mu 收斂因子(步長) (標量) 要求大於0,小於xn的相關矩陣最大特徵值的倒數 % itr 迭代次數 (標量) 預設為xn的長度,M<itr<length(xn) % 輸出引數: % W 濾波器的權值矩陣 (矩陣) % 大小為M : itr, % en 誤差序列(itr : 1) (列向量) % yn 實際輸出序列 (列向量) % 引數個數必須為4個或5個 if nargin == 4 % 4個時遞迴迭代的次數為xn的長度 itr = length(xn); elseif nargin == 5 % 5個時滿足M<itr<length(xn) if itr>length(xn) || itr<M error('迭代次數過大或過小!'); end else error('請檢查輸入引數的個數!'); end % 初始化引數 en = zeros(itr,1); % 誤差序列,en(k)表示第k次迭代時預期輸出與實際輸入的誤差 W = zeros(M,itr); % 每一行代表一個加權參量,每一列代表-次迭代,初始為0 % 迭代計算 for k = M:itr % 第k次迭代 x = xn(k:-1:k-M+1); % 濾波器M個抽頭的輸入 y = W(:,k-1).' * x; % 濾波器的輸出 en(k) = dn(k) - y ; % 第k次迭代的誤差 % 濾波器權值計算的迭代式 W(:,k) = W(:,k-1) + 2*mu*en(k)*x; end % 求最優時濾波器的輸出序列 yn = inf * ones(size(xn)); for k = M:length(xn) x = xn(k:-1:k-M+1); yn(k) = W(:,end).'* x; end
呼叫LMS函式模擬
close all % 正弦訊號的產生 t=0:199; xs=5*sin(0.3*t); figure; subplot(2,1,1); plot(t,xs);grid; ylabel('幅值'); title('{輸入正弦波訊號}'); % 隨機噪聲訊號的產生 randn('state',sum(100*clock)); xn=randn(1,200); zn=randn(1,200); xn=xn+zn; subplot(2,1,2); plot(t,xn);grid; ylabel('幅值'); xlabel('時間'); title('{輸入隨機噪聲訊號}'); % 訊號濾波 xn = xs+xn; xn = xn.' ; % 輸入訊號序列 dn = xs.' ; % 預期理想結果序列 M = 23 ; % 濾波器的階數 rho_max = max(eig(xn*xn.')); % 輸入訊號相關矩陣的最大特徵值 mu = rand()*(1/rho_max) ; % 收斂因子 0 < mu < 1/rho_max [yn,W,en] = LMS(xn,dn,M,mu); % 繪製濾波器輸入訊號 figure; subplot(2,1,1); plot(t,xn);grid; ylabel('幅值'); xlabel('時間'); title('{濾波器輸入訊號}'); % 繪製自適應濾波器輸出訊號 subplot(2,1,2); plot(t,yn);grid; ylabel('幅值'); xlabel('時間'); title('{自適應濾波器輸出訊號}'); % 繪製自適應濾波器輸出訊號,預期輸出訊號和兩者的誤差 figure plot(t,yn,'b',t,dn,'g',t,dn-yn,'r',t,xn,'m');grid; legend('自適應濾波器輸出','預期輸出','誤差','自適應濾波器輸入'); ylabel('幅值'); xlabel('時間'); title('{自適應濾波器}'); %繪製最優權值點 figure mm=0:M-1; plot(mm,W(:,end)','m*');grid; title('{最優權值點}');
實驗效果圖:
結果分析
輸入訊號為正弦訊號加噪聲的混合訊號,可見正弦訊號受噪聲影響失真較大;實驗輸出訊號失真較小,噪聲訊號已經很小,這裡可以調節M濾波器階數來調節ANC降噪效果。可見,LMS演算法可實現ANC降噪功能。
實際應用中,ANC降噪對2KHZ以下的訊號噪聲降噪效果比較好,對高頻噪聲降噪效果很差。原因為高頻訊號波長短,對相位偏差也比較敏感,導致ANC對高頻噪聲降噪效果差。一般高頻噪聲可以被耳機物理的遮蔽遮蔽掉,這種降噪被稱為被動降噪。
總結,一般2kHz噪聲訊號使用ANC,高頻訊號沒有必要使用ANC。實際測試中的應用,測試步驟:
- 關閉ANC時,聲學測試軟體測試聲學引數FR;
- 開啟ANC時,聲學測試軟體測試聲學引數FR,這裡通過調節gain值,來調節降噪效果,使降噪效果適中。因為降噪效果差,達不到降噪的目的;降噪效果如果太好,噪聲訊號趨近於0,會使耳機產生自激。
Feedforward ANC 主動降噪原理
feedforward式主動降噪耳機的示意圖,圖中,Ref mic在耳機耳罩上,採集環境噪聲。Error mic在耳機內,採集降噪處理後的殘差噪聲,Speaker播放ANC處理後的anti-noise。
上圖是ANC系統的原理圖,一共三層,用虛線分隔。最上一層primary path是從ref mic到error mic的聲學通道,響應函式用P(z)P(z)表示;中間一層是模擬通道,其中secondary path是adaptive filter輸出到返回殘差的通路,包括DAC、reconstruction filter、power amplifier、speaker播放、再採集、pre-amplifier、anti-aliasing filter、ADC;最下一層是數字通路,其中adaptive filter不斷調整濾波器權係數來削減殘差,直到收斂。最常用的方案是用FIR濾波器結合LMS演算法來實現adaptive filter。簡化上圖2,得到下圖
圖3
先簡要說幾句adaptive filter和LMS(Least mean square)演算法的原理,再說圖3。如圖4,給定輸入x和desired output d,adaptive filter每次迭代會更新系數,使其輸出$y$與$d$之差越來越小,直到殘差足夠接近0且收斂。LMS是adaptive filter的一種更新演算法。LMS的目標函式是瞬時誤差的平方$e^2(n)=(d(n)-y(n))^2,為了minimize目標函式,對其應用梯度下降就得到演算法的更新公式。採用FIR濾波器的LMS演算法的更新公式為:
$w(n+1)=w(n)+\mu e(n)x(n)$,其中$\mu$為step size。如果隨著迭代進行調整$\mu$的大小,就是變步長的LMS演算法。
圖4
再來說圖3。這裡adaptive filter輸出後還要經過$S(z)$才去和desire output比較,$S(z)$會引起instability,用文獻的話說,“the error signal is not correctly ‘aligned’ in time with the reference signal”,破壞了LMS的收斂性。一種有效的方法是FXLMS(Filtered-X LMS),也就讓x(n)經過$Sˆ(z)$再輸入給LMS 模組, $\hat{S}(z)$是$S(z)$的估計。FXLMS的objective:
$$e^2(n)=(d(n)-s(n)*[w^T(n)x(n)])^2$$
所以$gradient=-2e(n)s(n)*x(n)$,其中$s(n)$未知,用其estimate近似,所以FXLMS的更新公式是
$\textbf{w}(n+1)=\textbf{w}(n)+{\mu}e(n)\textbf{x}'(n)$
其中$\textbf{x}'(n)=\widehat{s}(n)*\textbf{x}(n)$
當adaptive filter收斂時,$E(z)=X(z)P(z)-X(z)W(z)S(z)≈0$,因此$W(z)≈P(z)/S(z)$。也就是說,自適應濾波器的權係數是由耳機的primary path和secondary path決定的。耳機的primary path和secondary path相對穩定,所以adaptive filter的權係數也相對穩定。因此為實現簡單,某些廠家的ANC耳機的權係數在出廠時就確定了。當然這種ANC耳機的聽感體驗明顯不及具有真正自適應意義的ANC耳機,因為在實際情況下,外部噪聲相對耳機的方向、不同溫度等因素會對耳機的通道響應有影響。
Matlab驗證
寫Matlab程式碼,用變步長LMS的adaptive filter,得模擬結果如圖5。在0到2KHz範圍內,利用feedforward ANC消高斯白噪,噪聲衰減平均30dB+。Matlab庫裡的FXLMS是定步長的,效果要差一些。
Q&A
遇到的困惑寫出來分享一下。
1. ANC為什麼只針對2kHz以下的低頻噪音?
一方面,耳機的物理隔音方式(被動降噪)可以有效阻擋高頻噪音,沒必要用ANC降高頻噪聲。另一方面,低頻噪聲波長較長,可以承受一定的相位延遲,而高頻噪聲波長短,對相位偏差敏感,因此ANC消高頻噪聲並不理想。
2. 當electronic delay比primary delay大時,演算法效能大大下降如何理解?
P(z)延時小,S(z)延時大,比如P(z)=z-1, S(z)=z-2,只有當W(z)=z才能滿足要求,非因果,unreachable。
3. Feedforward ANC、narrow-band feedforward ANC、feedback ANC有什麼區別?
Feedforwad結構有一個ref mic和一個error mic,分別採集外部噪音和內部殘差訊號。feedback結構只有一個error mic,由error mic和adaptive filter output生成reference signal。
Broad-band feedforward就是上面所述結構,而narrow-band結構中,noise source會產生某個signal觸發signal generator,signal generator再生成reference signal送給adaptive filter。只適用於消除periodic noise。
Feedback ANC由於只有error mic,用error mic來恢復feedforward結構中ref mic採集的訊號,通路不滿足因果約束,因此只消除predictable noise components,即窄帶週期性噪聲。需要注意的是,feedforward如果不滿足因果約束,即electronic delay比主通道acoustic delay長的話,也只能消除窄帶週期性噪聲。
另外還有一種Hybrid ANC的結構,同時包含feedforward和feedback結構,主要的優點是可以節省自適應濾波器的階數。
Reference
主要參照[1],非常詳細的一篇tutorial review,書[2]詳細推導和說明了[1]中的細節。圖1截自jabra官網,圖2和圖3來自[3],圖4來自Wikipedia。
[1]: Kuo S M, Morgan D R. Active noise control: a tutorial review[J]. Proceedings of the IEEE, 1999, 87(6):943-973.
[2]: Kuo S M, Morgan D. Active Noise Control Systems: Algorithms and DSP Implementations[M]. John Wiley & Sons, Inc. 1996.
[3]: Kajikawa Y, Gan W S, Kuo S M. Recent advances on active noise control: open issues and innovative applications[J]. Apsipa Transactions on Signal & Information Processing, 2012, 1(2):e3.
實現困難度
主動降噪+被動降噪
參考文獻
wjzblog的CSDN部落格 ANC降噪學習
語音喚醒
&n