本文轉載自:http://www.cnblogs.com/xingshansi/p/6621185.html
仍然是西蒙.赫金的《自適應濾波器原理》第四版第二章,首先看到無約束維納濾波,接着到了一般約束條件的濾波,此處爲約束擴展的維納濾波,全文包括:
1)背景介紹;
2)廣義旁瓣相消(Generalized Sidelobe Cancellation, GSC)理論推導;
3)GSC應用——語音陣列信號增強;
內容爲自己的學習記錄,其中錯誤之處,還請各位幫忙指正!
一、背景介紹
在一般約束條件的維納濾波中,有的約束條件,即. 如爲旋轉向量時,希望在處保留波束—>對應,希望在θ2θ2處抑制波束—>對應,寫成一般形式:
寫成更一般的形式:
假設w權值個數爲M,在一般約束維納濾波中可以看出:限定條件使得結果更符合預期的效果。假設C爲M×L的矩陣:L個線性約束條件。對於M個變量的方程組,對應唯一解最多有M個方程,即:對於L個線性約束來講,我們仍可以繼續利用剩下的M-L個自由度進行約束,使得結果更加符合需求(比如增強某信號、抑制某信號等),這便是GSC的背景。
二、GSC理論推導
A-理論介紹
書中的推導較爲繁瑣,我們可以從投影空間的角度加以理解,也就是最小二乘結果的矩陣求逆形式,給出簡要說明:
對於矩陣A(N×M):
- 如果A是滿列秩(N>=M)對於符合LA=I的矩陣解爲:;
- 如果A是滿行秩(N<=M)對於符合AR=I的矩陣解爲:.
對於,得出最優解:
記:
爲了便於對餘量進行控制,將C擴展爲:,的列向量爲矩陣C列向量張成空間的正交補空間的基,即:
分析新的空間特性:
上式有,這就說明只要滿足該條件,就是補空間的餘量,如何保證一定有呢?可以將寫爲:的形式,之所以添加——可能是因爲正交補空間可以認爲C列向量空間不能表徵的成分,我們通常認爲這一部分爲該丟棄的殘差,也因爲是殘差:通常被稱爲阻塞矩陣(取Block之意),很多書籍用B表示。
重新給出推導的結果:
對應結構圖爲:
簡化後可以認爲上支、下支:
這是維納濾波器的典型結構。
B-阻塞矩陣的選取
阻塞矩陣這一段摘自:秦博雅《基於低複雜度自適應信號處理的波束成形技術研究》p22~23.
大致有以下幾種方式:
三、陣列信號增強
學了這個GSC怎麼應用呢?這裏參考一篇07年adaptive beamforming(引用見最後的參考)的例子,簡要說明思路,關於阻塞矩陣。
文中結構圖:
即:分別利用GSC框架,通過最小互信息實現信號的分離,其中、即都提前給定,優化、。
定義互信息:
其中,
在幅度(嚴格來講是傅里葉係數幅度)爲正態條件下,得到:
給出輸出表達式:
並給出準則函數——相關係數的表達式:
其中,
其中相關、互相關無法得到統計信息,仍然可以基於遍歷性假設:利用時間換取空間,近似求取。
文中提到引入正則化(regularization)
這個只是優化過程中的限定條件,與GSC框架關係不大,不再補充。
這裏在網上找去了一個8通道(channel)的混合語音(兩個說話人),利用該算法進行分析,給出主要代碼:
主要代碼:
MMI_define_var(Xf1,Xf2);
%initialization
W1 = [0 0 0 0.1 0 0 0.2 ];
W2 = [0 2 0 0 0.2 0 0.1 ];
[Wa1,Wa2]=MMI_EstimateWa([W1 W2]');
function MMI_define_var(Xf1,Xf2)
global Wq B covX1X1 covX2X2 covX1X2 len;
Wq=[1 1 1 1 1 1 1 1]'*1/8;
B=[1 -1 0 0 0 0 0 0 ;0 1 -1 0 0 0 0 0 ;0 0 1 -1 0 0 0 0 ;0 0 0 1 -1 0 0 0 ;0 0 0 0 1 -1 0 0 ;0 0 0 0 0 1 -1 0 ;0 0 0 0 0 0 1 -1 ]';
[~,len]=size(Xf2);
XfMean1=mean(Xf1.');
XfMean2=mean(Xf2.');
for i=1:8
Xf1(i,:)=Xf1(i,:)-XfMean1(i);
Xf2(i,:)=Xf2(i,:)-XfMean2(i);
end
covX1X1=Xf1*Xf1'/len;
covX2X2=Xf2*Xf2'/len;
covX1X2=Xf1*Xf2'/len;
<span style="font-size: 14px;">MMI_EstimateWa實現參數估計:<br></span>
function [Wa1 Wa2]=MMI_EstimateWa(W)
%obtain the Wa
ww=[real(W)' imag(W)']';
options = optimset('LargeScale','off','display','off');
[X,fval] = fminunc('MMI_real_imag_objfun',ww,options);
X_real=X(1:14);
X_imag=X(15:28);
Wa1_real=X_real(1:7);
Wa1_imag=X_imag(1:7);
Wa2_real=X_real(8:14);
Wa2_imag=X_imag(8:14);
Wa1=Wa1_real+sqrt(-1)*Wa1_imag;
Wa2=Wa2_real+sqrt(-1)*Wa2_imag;
end
對應結果圖:
可以聽出來:雖然略有雜音,但兩個說話人的聲音已經實現了分離,GSC框架有效。如果不同說話人聲達時間估計準確,迭代算法應用合適,效果會更好,此處主要介紹GSC應用,細節不再琢磨,有興趣的可以探索探索。
參考:
- K. Kumatani, T. Gehrig, U. Mayer, E. Stoimenov, J. McDonough and M. WÖlfel, "Adaptive Beamforming With a Minimum Mutual Information Criterion," in IEEE Transactions on Audio, Speech, and Language Processing, vol. 15, no. 8, pp. 2527-2541, Nov. 2007.
- Simon Haykin 《Adaptive Filter Theory Fourth Edition》.