什么是漢明窗?加Hanmming窗的作用?


什么是漢明窗?加Hanmming窗的作用?

 

1.什么是漢明窗?

答:我是做語音識別的,我就從語音的角度跟你說一下吧。

 

語音信號一般在10ms到30ms之間,我們可以把它看成是平穩的。為了處理語音信號,我們要對語音信號進行加窗,也就是一次僅處理窗中的數據。因為實際的語音信號是很長的,我們不能也不必對非常長的數據進行一次性處理。明智的解決辦法就是每次取一段數據,進行分析,然后再取下一段數據,再進行分析。

 

怎么僅取一段數據呢?一種方式就是構造一個函數。這個函數在某一區間有非零值,而在其余區間皆為0.漢明窗就是這樣的一種函數。它主要部分的形狀像sin(x)在0到pi區間的形狀,而其余部分都是0.這樣的函數乘上其他任何一個函數f,f只有一部分有非零值。

 

為什么漢明窗這樣取呢?因為之后我們會對漢明窗中的數據進行FFT,它假設一個窗內的信號是代表一個周期的信號。(也就是說窗的左端和右端應該大致能連在一起)而通常一小段音頻數據沒有明顯的周期性,加上漢明窗后,數據形狀就有點周期的感覺了。

 

因為加上漢明窗,只有中間的數據體現出來了,兩邊的數據信息丟失了,所以等會移窗的時候,只會移1/3或1/2窗,這樣被前一幀或二幀丟失的數據又重新得到了體現。

 

簡單的說漢明窗就是個函數,它的形狀像窗,所以類似的函數都叫做窗函數。希望你能明白。

 

2.加Hanmming窗的作用

現在在看G.723.1,對語音編碼剛入門,

發現在對信號進行LPC分析前,對信號乘以一個Hamming 窗,

乘法是:信號直接乘以一個HammingWindowTable中的值,這個加窗有什么作用?

如果是限制帶寬的話, 在時域應對信號應做卷積的, 不明白,請賜教

 

因為要處理的是無限長序列中的一段,所以必須對這段序列加窗采集出來。

 

典型的窗口大小是25ms,幀移是10ms。漢明窗函數為

            W(n,α ) = (1 -α ) - α cos(2*PI*n/(N-1)),0≦n≦N-1

    一般情況下,α取0.46

誰能解釋一下這個函數嗎?我實在是不理解,謝謝.

 

由於直接對信號(加矩形窗)截斷會產生頻率泄露,為了改善頻率泄露的情況,加非矩形窗,一般都是加漢明窗,因為漢明窗的幅頻特性是旁瓣衰減較大,主瓣峰值與第一個旁瓣峰值衰減可達40db

 

舉例: a=wavread('jiasiqi.wav');   %將音頻信號jiasiqi.wav讀入 subplot(2,1,1),                  %分配畫布,一幅圖上共兩個圖,這是第一個 plot(a);title('original signal');  %畫出原始信號,即前面這個音頻信號的原始波形 grid %添加網格線 N=256;                               %設置短時傅里葉變換的長度,同時也是漢明窗的長度 h=hamming(N);                   %設置漢明窗 for m=1:N                       %用漢明窗截取信號,長度為N,主要是為了減少截斷引起的柵欄效應等 b(m)=a(m)*h(m) end y=20*log(abs(fft(b)))           %做傅里葉變換,取其模值,即幅頻特性,然后用分貝(dB)表示 subplot(2,1,2)                     %分配畫布,第二副圖 plot(y);title('短時譜');            %畫出短時譜 grid %添加網格線

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM