日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

声音处理之-梅尔频率倒谱系数(MFCC)

發(fā)布時(shí)間:2025/3/21 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 声音处理之-梅尔频率倒谱系数(MFCC) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

聲音處理之-梅爾頻率倒譜系數(shù)(MFCC)

梅爾(Mel)頻率分析

在語(yǔ)音識(shí)別(SpeechRecognition)和話者識(shí)別(SpeakerRecognition)方面,最常用到的語(yǔ)音特征就是梅爾倒譜系數(shù)(Mel-scaleFrequency Cepstral Coefficients,簡(jiǎn)稱MFCC)。根據(jù)人耳聽(tīng)覺(jué)機(jī)理的研究發(fā)現(xiàn),人耳對(duì)不同頻率的聲波有不同的聽(tīng)覺(jué)敏感度。從200Hz到5000Hz的語(yǔ)音信號(hào)對(duì)語(yǔ)音的清晰度影響對(duì)大。兩個(gè)響度不等的聲音作用于人耳時(shí),則響度較高的頻率成分的存在會(huì)影響到對(duì)響度較低的頻率成分的感受,使其變得不易察覺(jué),這種現(xiàn)象稱為掩蔽效應(yīng)。由于頻率較低的聲音在內(nèi)耳蝸基底膜上行波傳遞的距離大于頻率較高的聲音,故一般來(lái)說(shuō),低音容易掩蔽高音,而高音掩蔽低音較困難。在低頻處的聲音掩蔽的臨界帶寬較高頻要小。所以,人們從低頻到高頻這一段頻帶內(nèi)按臨界帶寬的大小由密到疏安排一組帶通濾波器,對(duì)輸入信號(hào)進(jìn)行濾波。將每個(gè)帶通濾波器輸出的信號(hào)能量作為信號(hào)的基本特征,對(duì)此特征經(jīng)過(guò)進(jìn)一步處理后就可以作為語(yǔ)音的輸入特征。由于這種特征不依賴于信號(hào)的性質(zhì),對(duì)輸入信號(hào)不做任何的假設(shè)和限制,又利用了聽(tīng)覺(jué)模型的研究成果。因此,這種參數(shù)比基于聲道模型的LPCC相比具有更好的魯邦性,更符合人耳的聽(tīng)覺(jué)特性,而且當(dāng)信噪比降低時(shí)仍然具有較好的識(shí)別性能。

梅爾刻度是一種基于人耳對(duì)等距的音高(pitch)變化的感官判斷而定的非線性頻率刻度,和頻率的赫茲的關(guān)系如下:

m=2595*log10(1+f/700)

所以當(dāng)在梅爾刻度上面上是均勻分度的話,對(duì)于的赫茲之間的距離將會(huì)越來(lái)越大。梅爾刻度的濾波器組在低頻部分的分辨率高,跟人耳的聽(tīng)覺(jué)特性是相符的,這也是梅爾刻度的物理意義所在。

倒譜分析

對(duì)于一個(gè)語(yǔ)音的頻譜圖,峰值就表示語(yǔ)音的主要頻率成分,我們把這些峰值稱為共振峰(formants),而共振峰就是攜帶了聲音的辨識(shí)屬性(就是個(gè)人身份證一樣)。所以它特別重要。用它就可以識(shí)別不同的聲音。

我們要提取的不僅僅是共振峰的位置,還得提取它們轉(zhuǎn)變的過(guò)程。所以我們提取的是頻譜的包絡(luò)(Spectral Envelope)。這包絡(luò)就是一條連接這些共振峰點(diǎn)的平滑曲線。我們可以這么理解,將原始的頻譜由兩部分組成:包絡(luò)和頻譜的細(xì)節(jié)。這里用到的是對(duì)數(shù)頻譜,所以單位是dB。那現(xiàn)在我們需要把這兩部分分離開(kāi),這樣我們就可以得到包絡(luò)了。

這就用到了倒譜分析。倒譜(cepstrum)是一種信號(hào)的傅里葉變換經(jīng)對(duì)數(shù)運(yùn)算后再進(jìn)行傅里葉反變換得到的譜。倒譜分析可用于將信號(hào)分解,兩個(gè)信號(hào)的卷積轉(zhuǎn)化為兩個(gè)信號(hào)的相加。

假設(shè)上面的頻率譜X(k),時(shí)域信號(hào)為x(n),那么滿足

X(k)=DFT(x(n))

考慮將頻域X(k)拆分為兩部分的乘積:

X(k)=H(k)E(k)

假設(shè)兩部分對(duì)應(yīng)的時(shí)域信號(hào)分別是h(n)和e(n),那么滿足:

x(n)=h(n)?e(n)

此時(shí)我們是無(wú)法區(qū)分開(kāi)h(n)和e(n),對(duì)頻域兩邊取log:

log(X(k))=log(H(k))+log(E(k))

然后進(jìn)行反傅里葉變換:

IDFT(log(X(k)))=IDFT(log(H(k)))+IDFT(log(E(k)))

得到的時(shí)域信號(hào)如下:

X’(n)=h’(n)+e’(n)

此時(shí)獲得時(shí)域信號(hào)x’(n)即為倒譜,已經(jīng)和原始的時(shí)域信號(hào)x(n)不一樣,但是可以把時(shí)域信號(hào)的卷積關(guān)系轉(zhuǎn)化為了線性加關(guān)系。倒譜分析已經(jīng)將兩部分對(duì)應(yīng)的時(shí)域信號(hào)的卷積關(guān)系轉(zhuǎn)化為了線性加關(guān)系,所以只需要將倒譜通過(guò)一個(gè)低通濾波器即可獲得包絡(luò)部分對(duì)應(yīng)的時(shí)域信號(hào)h’(t)。

梅爾頻率倒譜系數(shù)MFCC

通常,計(jì)算MFCC之前,還會(huì)通過(guò)預(yù)加重、分幀和加窗、短時(shí)FFT等手段將原始原始聲音信號(hào)的spectrogram聲譜圖,MFCC對(duì)聲譜信號(hào)進(jìn)行分析。

提取MFCC特征的過(guò)程:

1)先對(duì)語(yǔ)音進(jìn)行預(yù)加重、分幀和加窗;

2)對(duì)每一個(gè)短時(shí)分析窗,通過(guò)FFT得到對(duì)應(yīng)的頻譜;

3)將上面的頻譜通過(guò)Mel濾波器組得到Mel頻譜;

4)在Mel頻譜上面進(jìn)行倒譜分析(取對(duì)數(shù),做逆變換,實(shí)際逆變換一般是通過(guò)DCT離散余弦變換來(lái)代替上文的IDFT,取DCT后的第2個(gè)到第13個(gè)系數(shù)作為MFCC系數(shù)),獲得Mel頻率倒譜系數(shù)MFCC。

[x fs]= audioread ('test.wav');bank=melbankm(24,256,fs,0,0.4,'t');%Mel濾波器的階數(shù)為24,fft變換的長(zhǎng)度為256,采樣頻率為16000Hz%歸一化mel濾波器組系數(shù)bank=full(bank);bank=bank/max(bank(:));for k=1:12 %歸一化mel濾波器組系數(shù) n=0:23; dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));endw=1+6*sin(pi*[1:12]./12);%歸一化倒譜提升窗口w=w/max(w);%預(yù)加重濾波器xx=double(x);xx=filter([1-0.9375],1,xx);%語(yǔ)音信號(hào)分幀xx=enframe(xx,256,80);%對(duì)x 256點(diǎn)分為一幀%計(jì)算每幀的MFCC參數(shù)for i=1:size(xx,1) y=xx(i,:); s=y'.*hamming(256); t=abs(fft(s));%fft快速傅立葉變換 t=t.^2; c1=dctcoef*log(bank*t(1:129)); c2=c1.*w'; m(i,:)=c2';end%求取一階差分系數(shù)dtm=zeros(size(m));for i=3:size(m,1)-2 dtm(i,:)=-2*m(i-2,:)-m(i-1,:)+m(i+1,:)+2*m(i+2,:);enddtm=dtm/3;%求取二階差分系數(shù)dtmm=zeros(size(dtm));for i=3:size(dtm,1)-2 dtmm(i,:)=-2*dtm(i-2,:)-dtm(i-1,:)+dtm(i+1,:)+2*dtm(i+2,:);enddtmm=dtmm/3;%合并mfcc參數(shù)和一階差分mfcc參數(shù)ccc=[m dtm dtmm];%去除首尾兩幀,因?yàn)檫@兩幀的一階差分參數(shù)為0ccc=ccc(3:size(m,1)-2,:);subplot(2,1,1)ccc_1=ccc(:,1);plot(ccc_1);title('MFCC');ylabel('幅值');[h,w]=size(ccc);A=size(ccc);subplot(212) plot([1,w],A);xlabel('維數(shù)');ylabel('幅值');title('維數(shù)與幅值的關(guān)系')

運(yùn)行上段代碼需要用到matlab的語(yǔ)音處理工具箱,voicebox是一個(gè)MATLAB中的語(yǔ)音處理工具箱,支持MATLAB6.5以上的版本。其中包含了對(duì)語(yǔ)音的分幀處理,濾波,加窗,參數(shù)提取等等函數(shù),是語(yǔ)音識(shí)別幾乎不可缺少的一個(gè)工具箱。

官方下載:http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.zip

voicebox的添加

解壓下載的voicebox,把解壓包放在某一個(gè)路徑下d:/…/voicebox

打開(kāi)MATLAB,在命令行設(shè)置MATLAB的搜索路徑

addpath(genpath('d:/…/voicebox'))

或者

path(' d:/…/voicebox',path)

檢驗(yàn)是否設(shè)置成功,在命令行上輸入 which activlev.m,看一下是否顯示正確的路徑。這樣MATLAB就可以使用voicebox的函數(shù)了,

?

總結(jié)

以上是生活随笔為你收集整理的声音处理之-梅尔频率倒谱系数(MFCC)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。