下降噪音一般所採用的三種降噪措施,即在聲源處降噪、在傳播過程當中降噪及在人耳處降噪,都是被動的。爲了主動地消除噪聲,人們發明了「有源消聲」這一技術。ANC(Active Noise Control)又稱爲主動噪聲控制,常應用在耳機降噪中,git
原理:經過降噪系統產生與外界噪音相等的反向聲波,將噪聲中和,從而實現降噪的效果,算法
全部的聲音都由必定的頻譜組成,若是可找到一種聲音,其頻率、振幅與所要消除的噪聲徹底同樣,只是相位恰好相反(相差$180^o$)就能夠將這噪聲徹底抵消。app
頻率:一秒鐘語音信號震動的次數electron
振幅:聲音大小ide
相位:某一時刻聲波處於一個週期內的位置,若是咱們規定空氣被壓縮的最厲害的地方是相位的零點,那麼半個週期以後,空氣變得最爲稀疏的地方,相位就變成180°。等到空氣再次被壓縮得最密集時,就通過了一整個週期,相位變化了360°又從新變爲0°。函數
辦法:先採集噪聲,因此處理器會根據噪聲進行預測,預測出下一時刻噪聲的狀況,併產生相位相反的噪聲,來抵消原噪聲。性能
爲了保證降噪質量,還須要一個反饋麥克風用來檢測所合成後的噪聲是否真的變小了。這時處理器會根據這個反饋麥克風測量到的結果,對處理過程進行調整從而進一步下降合成後的噪聲音量,這叫作自適應過程。比如處理器變聰明瞭,可以根據消噪的效果不斷調整本身,以達到最佳降噪效果。學習
衆所周知,聲音是由震動產生的,所以經過解決震動也能夠有效的解決噪聲問題,當金屬板、機器外壁等通常均由薄金屬板震動產生聲音,進而輻射噪聲,象這類由金屬板結構振動引發的噪聲稱之爲結構噪聲。測試
咳咳咳咳,總結一下,優化
一:是經過聲音抑制聲音
二:經過減小震動來抑制聲音
降噪功能對耳機的做用很重要,一是減小噪音,避免過分放大音量,從而減小對耳朵的損害。二是過濾噪音從而提升音質和通話質量。
降噪可分爲被動式降噪和主動式降噪。
被動式降噪也就是物理降噪,被動式降噪是指利用物理特性將外部噪聲與耳朵隔絕開,主要經過耳機的頭梁設計得緊一些、耳罩腔體進行聲學優化、耳罩內部放上吸聲材料……等等來實現耳機的物理隔音。被動降噪對高頻率聲音(如人聲)的隔絕很是有效,通常可以使噪聲下降大約爲15-20dB。
主動式降噪就是商家在宣傳耳機降噪功能時會主打的ANC、ENC、CVC、DSP等降噪技術
降噪耳機,採用ANC降噪,主動噪音控制,主要是針對外部環境中的高、低頻噪聲,不一樣於通常耳機的被動隔音,其原理爲:
主動降噪根據拾音麥克風位置的不一樣,分爲前饋式主動降噪與反饋式主動降噪。
這麼一來,這個耳機須要一段的算法處理時間,先學習噪聲,這個學習須要時間,而後再把學習到的噪聲相位反轉,有一個自適應調整期。
主動降噪耳機價格昂貴,可是通常效果優秀,佩戴溫馨。可是須要獨立電池供電,大多數被動降噪耳機能夠不耗電使用(也不主動降噪)
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)的相關矩陣最大特徵值的倒數)
根據表達設計濾波器
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
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。實際測試中的應用,測試步驟:
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代碼,用變步長LMS的adaptive filter,得仿真結果如圖5。在0到2KHz範圍內,利用feedforward ANC消高斯白噪,噪聲衰減平均30dB+。Matlab庫裏的FXLMS是定步長的,效果要差一些。
遇到的困惑寫出來分享一下。
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結構,主要的優勢是能夠節省自適應濾波器的階數。
主要參照[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.
主動降噪+被動降噪
語音喚醒