語音信號處理中怎么理解分幀,為什么?

語音信號處理中怎么理解分幀,為什么?

語音信號處理常常要達到的一個目標,就是弄清楚語音中各個頻率成分的分布。做這件事情的數學工具是傅里葉變換。

傅里葉變換要求輸入信號是平穩(wěn)的,當然不平穩(wěn)的信號你想硬做也可以,但得到的結果就沒有什么意義了。

而語音在宏觀上來看是不平穩(wěn)的——你的嘴巴一動,信號的特征就變了。但是從微觀上來看,在比較短的時間內,嘴巴動得是沒有那么快的,語音信號就可以看成平穩(wěn)的,就可以截取出來做傅里葉變換了。這就是為什么語音信號要分幀處理,截取出來的一小段信號就叫一「幀」。如下圖:這段語音的前三分之一和后三分之二明顯不一樣,所以整體來看語音信號不平穩(wěn)。

紅框框出來的部分是一幀,在這一幀內部的信號可以看成平穩(wěn)的。
那么一幀有多長呢?幀長要滿足兩個條件:從宏觀上看,它必須足夠短來保證幀內信號是平穩(wěn)的。前面說過,口型的變化是導致信號不平穩(wěn)的原因,所以在一幀的期間內口型不能有明顯變化,即一幀的長度應當小于一個音素的長度。

正常語速下,音素的持續(xù)時間大約是 50~200 毫秒,所以幀長一般取為小于 50 毫秒。從微觀上來看,它又必須包括足夠多的振動周期,因為傅里葉變換是要分析頻率的,只有重復足夠多次才能分析頻率。語音的基頻,男聲在 100 赫茲左右,女聲在 200 赫茲左右,換算成周期就是 10 毫秒和 5 毫秒。

既然一幀要包含多個周期,所以一般取至少 20 毫秒。這樣,我們就知道了幀長一般取為 20 ~ 50 毫秒,20、25、30、40、50 都是比較常用的數值,甚至還有人用 32(在程序猿眼里,這是一個比較「整」的數字)。
加窗的目的是讓一幀信號的幅度在兩端漸變到 0。

漸變對傅里葉變換有好處,可以提高變換結果(即頻譜)的分辨率,具體的數學就不講了。加窗的代價是一幀信號兩端的部分被削弱了,沒有像**的部分那樣得到重視。彌補的辦法是,幀不要背靠背地截取,而是相互重疊一部分。相鄰兩幀的起始位置的時間差叫做幀移,常見的取法是取為幀長的一半,或者固定取為 10 毫秒。

頻譜上就能看出這幀語音在 480 和 580 赫茲附近的能量比較強。語音的頻譜,常常呈現出「精細結構」和「包絡」兩種模式。「精細結構」就是藍線上的一個個小峰,它們在橫軸上的間距就是基頻,它體現了語音的音高——峰越稀疏,基頻越高,音高也越高。「包絡」則是連接這些小峰峰頂的平滑曲線(紅線),它代表了口型,即發(fā)的是哪個音。

包絡上的峰叫共振峰,圖中能看出四個,分別在 500、1700、2450、3800 赫茲附近。有經驗的人,根據共振峰的位置,就能看出發(fā)的是什么音。對每一幀信號都做這樣的傅里葉變換,就可以知道音高和口型隨時間的變化情況,也就能識別出一句話說的是什么了。

數字信號處理中為什么要加窗

對模擬信號進行數字處理時,首先要對模擬信號進行采樣,采樣頻率由奈奎斯特采樣定理決定。對采樣而來的數字信號進行DTFT處理得到其頻譜。

由DTFT的計算公式可知,DTFT的計算需要用到信號的所有采樣點,當信號為無限長或者是相當長時,這樣的計算不可行也沒有實際意義。

因此會把信號分成許多一定長度的數據段,然后分段處理。如果把數據進行分段,相當于對信號進行了加矩形窗的處理,對加窗后的信號做DFT,將會出現由于加窗而引入的高頻分量。既然加窗不可避免,就選擇一個合適的吧。窗的形狀有許多種,選用合適的窗函數,則可以增大對高頻分量的衰減。

關于信號加窗

1)?

在頻譜分析中,為什么加窗可以改善頻譜估計精度

加窗是為了減小泄漏!1、信號截斷及能量泄漏效應數字信號處理的主要數學工具是傅里葉變換。應注意到,傅里葉變換是研究整個時間域和頻率域的關系。

然而,當運用計算機實現工程測試信號處理時,不可能對無限長的信號進行測量和運算,而是取其有限的時間片段進行分析。

做法是從信號中截取一個時間片段,然后用觀察的信號時間片段進行周期延拓處理,得到虛擬的無限長的信號,然后就可以對信號進行傅里葉變換、相關分析等數學處理。周期延拓后的信號與真實信號是不同的,下面從數學的角度來看這種處理帶來的誤差情況。設有余弦信號x(t)在時域分布為無限長(- ∞,∞),將截斷信號的譜XT(ω)與原始信號的譜X(ω)相比,它已不是原來的兩條譜線,而是兩段振蕩的連續(xù)譜。這表明原來的信號被截斷以后,其頻譜發(fā)生了畸變,原來集中在f0處的能量被分散到兩個較寬的頻帶中去了,這種現象稱之為頻譜能量泄漏(Leakage)。

信號截斷以后產生的能量泄漏現象是必然的,因為窗函數w(t)是一個頻帶無限的函數,所以即使原信號x(t)是限帶寬信號,而在截斷以后也必然成為無限帶寬的函數,即信號在頻域的能量與分布被擴展了。又從采樣定理可知,無論采樣頻率多高,只要信號一經截斷,就不可避免地引起混疊,因此信號截斷必然導致一些誤差,這是信號分析中不容忽視的問題。如果增大截斷長度T,即矩形窗口加寬,則窗譜W(ω)將被壓縮變窄(π/T減?。?。

雖然理論上講,其頻譜范圍仍為無限寬,但實際上中心頻率以外的頻率分量衰減較快,因而泄漏誤差將減小。當窗口寬度T趨于無窮大時,則譜窗W(ω)將變?yōu)棣模é兀┖瘮?,而δ(ω)與X(ω)的卷積仍為H(ω),這說明,如果窗口無限寬,即不截斷,就不存在泄漏誤差。為了減少頻譜能量泄漏,可采用不同的截取函數對信號進行截斷,截斷函數稱為窗函數,簡稱為窗。

泄漏與窗函數頻譜的兩側旁瓣有關,如果兩側p旁瓣的高度趨于零,而使能量相對集中在主瓣,就可以較為接近于真實的頻譜,為此,在時間域中可采用不同的窗函數來截斷信號。2、 常用窗函數實際應用的窗函數,可分為以下主要類型:冪窗:采用時間變量某種冪次的函數,如矩形、三角形、梯形或其它時間函數x(t)的高次冪;三角函數窗:應用三角函數,即正弦或余弦函數等組合成復合函數,例如漢寧窗、海明窗等;指數窗。:采用指數時間函數,如e-st形式,例如高斯窗等。

下面介紹幾種常用窗函數的性質和特點。(l) 矩形窗矩形窗使用最多,習慣上不加窗就是使信號通過了矩形窗。這種窗的優(yōu)點是主瓣比較集中,缺點是旁瓣較高,并有負旁瓣,導致變換中帶進了高頻干擾和泄漏,甚至出現負譜現象。(2) 三角窗三角窗亦稱費杰(Fejer)窗,是冪窗的一次方形式,三角窗與矩形窗比較,主瓣寬約等于矩形窗的兩倍,但旁瓣小,而且無負旁瓣(3) 漢寧窗漢寧(Hanning)窗又稱升余弦窗,漢寧窗可以看作是3個矩形時間窗的頻譜之和,它可以使用旁瓣互相抵消,消去高頻干擾和漏能。

漢寧窗與矩形窗的譜圖對比,可以看出,漢寧窗主瓣加寬(**個零點在2π/T處)并降低,旁瓣則顯著減小。**個旁瓣衰減一32dB,而矩形窗**個旁瓣衰減-13dB。此外,漢寧窗的旁瓣衰減速度也較快,約為60dB/(10oct),而矩形窗為20dB/(10oct)。由以上比較可知,從減小泄漏觀點出發(fā),漢寧窗優(yōu)于矩形窗。

但漢寧窗主瓣加寬,相當于分析帶寬加寬,頻率分辨力下降。(4) 海明窗海明(Hamming)窗也是余弦窗的一種,又稱改進的升余弦窗,海明窗與漢寧窗都是余弦窗,只是加權系數不同。海明窗加權的系數能使旁瓣達到更小。分析表明,海明窗的**旁瓣衰減為-42dB。

海明窗的頻譜也是由 3個矩形時窗的頻譜合成,但其旁瓣衰減速度為20dB/(10oct),這比漢寧窗衰減速度慢。海明窗與漢寧窗都是很有用的窗函數。(5) 高斯窗是一種指數窗,高斯窗譜無負的旁瓣,**旁瓣衰減達一55dB。

高斯窗譜的主瓣較寬,故而頻率分辨力低。高斯窗函數常被用來截斷一些非周期信號,如指數衰減信號等。除了以上幾種常用窗函數以外,尚有多種窗函數,如平頂窗、帕仁(Parzen)窗、布拉克曼(Blackman)窗、凱塞(kaiser)窗等。

對于窗函數的選擇,應考慮被分析信號的性質與處理要求。如果僅要求**讀出主瓣頻率,而不考慮幅值精度,則可選用主瓣寬度比較窄而便于分辨的矩形窗,例如測量物體的自振頻率等;如果分析窄帶信號,且有較強的干擾噪聲,則應選用旁瓣幅度小的窗函數,如漢寧窗、三角窗等;對于隨時間按指數衰減的函數,可采用指數窗來提高信噪比。3、窗函數選擇指南如果在測試中可以保證不會有泄露的發(fā)生,則不需要用任何的窗函數(在中可選擇uniform)。但是如同剛剛討論的那樣,這種情況只是發(fā)生在時間足夠長的瞬態(tài)捕捉和一幀數據中正好包含信號整周期的情況。

如果測試信號有多個頻率分量,頻譜表現的十分復雜,且測試的目的更多關注頻率點而非能量的大小。在這種情況下,需要選擇一個主畔夠窄的窗函數,漢寧窗是一個很好的選擇。如果測試的目的更多的關注某周期信號頻率點的能量值,比如,更關心其EUpeak,EUpeak-peak,EUrms或者EUrms2,那么其幅度的準確性則更加的重要,可以選擇一個主畔稍寬的窗,flattop窗在這樣的情況下經常被使用。

對沖擊實驗的數據進行分析時,因為在數據幀開始段的一些重要信息會被一般的窗函數所衰減,因此可以使用force/exponential窗。Force窗一移去了數據幀末端的噪聲,對激勵信號有用。而exponential窗則確保響應信號在末端的振動衰減為零值。

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

是語音信號進行加窗分幀的一種方法語音信號是一種非平穩(wěn)的時變信號,其產生過程與發(fā)聲器官的運動緊密相關。而發(fā)聲器官的狀態(tài)變化速度較聲音振動的速度要緩慢的多,因此語音信號可以認為是短時平穩(wěn)的。

研究發(fā)現,在10~30ms的范圍內,語音頻譜特征和一些物理特征參數基本保持不變。

因此可以將平穩(wěn)過程的處理方法和理論引入到語音信號的短時處理中,將語音信號劃分為很多短時的語音段,每個短時的語音段稱為一個分析幀。這樣,對一幀語音信號進行處理就相當于對特征固定的持續(xù)信號進行處理。幀既可以是連續(xù)的,也可以采用交疊分幀,一般幀長取10~30ms。一般每秒的幀數約為33~100幀,視實際情況而定。

分幀雖然可以采用連續(xù)分段的方法,但一般要采用交疊分段的方法,這是為了使幀與幀之間平滑過度,保持其連續(xù)性。前一幀和后一幀的交疊部分稱為幀移。幀移與幀長的比值一般取為0~1/2。

分幀是用可移動的有限長度窗口進行加權的方法來實現的,就是用一定的窗函數w(n)來乘S(n)。

基于Fbank的語音數據特征提取

Fbank是需要語音特征參數提取方法之一,因其獨特的基于倒譜的提取方式,更加的符合人類的聽覺原理,因而也是最為普遍、最有效的語音特征提取算法?;跒V波器組的特征 Fbank(Filter bank), Fbank 特征提取方法就是相當 于 MFCC 去掉**一步的離散余弦變換(有損變換),跟 MFCC 特征, Fbank 特征保留了更多的原始語音數據。

MFCC語音特征的提取過程,如下圖: 需要對語音信號進行預加重、分幀、加窗等等處理,而這些處理的方式均是為了能夠**化語音信號的某些信息,以達到**特征參數的提取。

語音讀取及可視化: 結果: 預加重其實就是將語音信號通過一個高通濾波器,來增強語音信號中的高頻部分,并保持在低頻到高頻的整個頻段中,能夠使用同樣的信噪比求頻譜。在本實驗中,選取的高通濾波器傳遞函數為: 預加重系數?a=0.97 式中a的值介于0.9-1.0之間,我們通常取0.97。同時,預加重也是為了消除發(fā)生過程中聲帶和嘴唇的效應,來補償語音信號受到發(fā)音系統所抑制的高頻部分,也為了突出高頻的共振峰。 結果: 分幀是指在跟定的音頻樣本文件中,按照某一個固定的時間長度分割,分割后的每一片樣本,稱之為一幀,這里需要區(qū)分時域波形中的幀,分割后的一幀是分析提取Fbank的樣本,而時域波形中的幀是時域尺度上對音頻的采樣而取到的樣本。

分幀是先將N個采樣點**成一個觀測單位,也就是分割后的幀。通常情況下N的取值為512或256,涵蓋的時間約為20-30ms。也可以根據特定的需要進行N值和窗口間隔的調整。

為了避免相鄰兩幀的變化過大,會讓兩相鄰幀之間有一段重疊區(qū)域,此重疊區(qū)域包含了M個取樣點,一般M的值約為N的1/2或1/3。 語音識別中所采用的信號采樣頻率一般為8kHz或16kHz。以8kHz來說,若幀長度為256個采樣點,則對應的時間長度是256/8000×1000=32ms。

本次實驗中所使用的采樣率(Frames Per Second)16kHz,窗長25ms(400個采樣點),窗間隔為10ms(160個采樣點)。 結果: 在對音頻進行分幀之后,需要對每一幀進行加窗,以增加幀左端和右端的百科連續(xù)性,減少頻譜泄漏。在提取Fbank的時候,比較常用的窗口函數為Hamming窗。

假設分幀后的信號為 S(n),n=0,1,2…,N-1,其中N為幀的大小,那么進行加窗的處理則為:W(n)的形式如下: 不同的a值會產生不同的漢明窗,一般情況下a取值0.46。進行值替換后,W(n)則為: 對應的漢明窗時域波形類似下圖: 結果: 由于信號在時域上的變換通常很難看出信號的特性,所有通常將它轉換為頻域上的能量分布來觀察,不同的能量分布,代表不同語音的特性。所以在進行了加窗處理后,還需要再經過離散傅里葉變換以得到頻譜上的能量分布。對分幀加窗后的各幀信號進行快速傅里葉變換得到各幀的頻譜。

并對語音信號的頻譜取模平方得到語音信號的功率譜。設語音信號的DFT為:?能量的分布為: 下圖是有頻譜到功率譜的轉換結果示意圖: 結果: Fbank考慮到了人類的聽覺特征,先將線性頻譜映射到基于聽覺感知的Mel非線性頻譜中,然后轉換到倒譜上。 在Mel頻域內,人對音調的感知度為線性關系。舉例來說,如果兩段語音的Mel頻率相差兩倍,則人耳聽起來兩者的音調也相差兩倍。

Mel濾波器的本質其實是一個尺度規(guī)則,通常是將能量通過一組Mel尺度的三角形濾波器組,如定義有M個濾波器的濾波器組,采用的濾波器為三角濾波器,中心頻率為 f(m),m=1,2…M,M通常取22-26。f(m)之間的間隔隨著m值的減小而縮小,隨著m值的增大而增寬,如圖所示: 從頻率到Mel頻率的轉換公式為: 其中 f 為語音信號的頻率,單位赫茲(Hz)。 假如有10個Mel濾波器(在實際應用中通常一組Mel濾波器組有26個濾波器。),首先要選擇一個**頻率和**頻率,通常**頻率為8000Hz,**頻率為300Hz。

使用從頻率轉換為Mel頻率的公式將300Hz轉換為401.25Mels,8000Hz轉換為2834.99Mels,由于有10個濾波器,每個濾波器針對兩個頻率的樣點,樣點之間會進行重疊處理,因此需要12個點,意味著需要在401.25和2834.99之間再線性間隔出10個附加點,如:現在使用從Mel頻率轉換為頻率的公式將它們轉換回赫茲:將頻率映射到最接近的DFT頻率: 于是,我們得到了一個由10個Mel濾波器構成的Mel濾波器組。