做了2年半的語音信號處理方面的研究了,主要從事算法方面的研究,從一開始的采用S變換提取語音特征進行說話人識別,到后來的語音增強算法研究,HTK學(xué)習(xí),然后又回到語音特征提取分析,感覺學(xué)習(xí)語音信號處理應(yīng)該有個循序漸進的過程,總結(jié)一下,也希望能有這方面的專業(yè)人士批評指正。
語音信號處理知識準(zhǔn)備階段:
基礎(chǔ):
語音信號處理方面必看書籍:離散時間語音信號處理——原理與應(yīng)用
強烈推薦三本利用MATLAB做語音信號處理的電子書:
1、http://neural.cs.nthu.edu.tw/jang/books/dcpr/(DataClustering and Pattern Recognition (資料分群與樣式辨認(rèn)))
2、http://mirlab.org/jang/books/audioSignalProcessing/index.asp(AudioSignal Processing and Recognition (音訊處理與辨識))
3、MATLAB擴展編程
這三本中有很多語音處理相關(guān)的源程序。
學(xué)習(xí)理解階段:
1.理解語音的發(fā)聲機理
語音一般模型
2.熟悉語音分析一般分析的特征,理解各種算法在提取這些特征的實現(xiàn)過程,理解別人的算法時候,試著用其他算法實現(xiàn),這是個培養(yǎng)興趣的好方法??偨Y(jié)語音特征提取的方法:
基頻提出(pitch):
共振峰:一般來說,語音段的波形重復(fù)率比較高,找出一個基本周期,這個基本周期形狀和頻率的大小分別代表著內(nèi)容和音色,對它進行FFT,求得頻率極大值點,稱之為共振峰。共振峰也代表著聲帶震動后,經(jīng)過聲道這個諧振腔,得到的語言的頻譜最大值點,因此也表示聲道的諧振頻率點,因此也可以通過求LPC間接求得。即先由LPC得到聲道系統(tǒng)函數(shù),再求聲道頻譜響應(yīng),接著用峰值檢測法(或別的方法)檢測峰值點,即為共振峰。
共振峰反映了聲道的特征,一般多用來作為情感識別特征。
LPC:自相關(guān)法
LPC系數(shù)代表聲道特征,利用線性預(yù)測系數(shù)可以求得共振峰,由LPC得到的LPCC可以用來做語音識別,說話人識別等。
MFCC:分幀加窗——FFT——MEL濾波器——DCT
MFCC相對LPCC考慮了人的聽覺掩蔽效果,即一個強度較小的頻率成分可能被鄰近的一個較強頻率成分所掩蔽(頻域掩蔽),或者兩個時間上很接近的信號也可能產(chǎn)生掩蔽現(xiàn)象(時域掩蔽)。
過零率(ZCR):1.先將語音轉(zhuǎn)化為整數(shù)形式(減小double型運算的誤差),2.求取一幀信號ZCR時,可以將信號先減去直流分量,3.然后再點乘新信號向前或者向后移位一個信號點的信號,計算負(fù)數(shù)個數(shù)。
1.wave=wave*2^(bit-1);
2.frameMat(:,i)=frameMat(:,i)-round(mean(frameMat(:,i)));
3.zcr1=sum(frameMat(1:end-1, :).*frameMat(2:end,:)<0);
一般噪聲和清音的過零率高,濁音的過零率低,過零率和音量配合可以用作端點檢測
語譜(短時頻譜):分幀加窗——FFT——平方
這個程序小點,上傳上來
function[x,y,L]=sogram(Data,Winsiz,Shift,Base,Mode,Gray,Fs)
Sg=Data;
n=floor((length(Sg)-Winsiz)/Shift)+1;
A=zeros(Winsiz/2+1,n);
for i=1:n
end
L0=(A>Base);
L1=(A<Base);
B=A.*L0+Base*L1;
L=(B-Base)./(max(max(B))-Base);
y=[0:Winsiz/2]*Fs/Winsiz;
x=[0:n-1]*Shift./Fs;
subplot(235);
% flipdim(L,1);
imagesc(x,y,B);
% set(gca,'ydir','reverse')
axis xy;
axis tight;
if Mode==1
else
end
短時功率譜:信號分幀加窗——自相關(guān)——FFT
音量:可以理解為每幀信號的能量大小
3.對研究領(lǐng)域的探索
語音增強:做得最多的就屬語音增強這塊,方法很多,譜減、Decision-director、non-cause、cause、MMSE、logMMES、掩蔽、維納濾波、LMS等等,一般是將其中的幾種方法結(jié)合。
對語音增強這塊的理解,看了很多人開發(fā)的算法,自己也寫過一些算法,我將它們分成了兩類:譜衰減和非譜衰減,譜衰減就是利用帶噪語音乘以譜衰減因子,原理簡單,便于實現(xiàn),從數(shù)字信號處理的角度來看就是尋找一個自適應(yīng)的濾波器,這個濾波器的自適應(yīng)因子是和每個時刻的噪聲聯(lián)系的,將帶噪語音經(jīng)過這樣一個濾波器得到增強語音。非譜衰減理解為利用時頻或者小波等方法分解語音,對每個部分去噪,然后再合成,諸如此類的方法??催^我?guī)熋玫腅MD語音增強方法,效果相當(dāng)不錯,只是計算時間上需要改進。
語音識別:
語音識別根據(jù)識別對象和處理語音不同可以分為不同類,按對象分特定人和非特定人,按處理語音分孤立詞識別和連續(xù)語音識別
接觸的是HMM,理解HMM的一些好的網(wǎng)址:http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html舉例解釋說明,適合初學(xué)者。
HTKBook里面說的比較清楚,但是也比較多。
HTK:下載地址http://htk.eng.cam.ac.uk/
HTK安裝http://blog.sina.com.cn/s/blog_61c485330100iki0.html
HTK使用http://blog.sina.com.cn/s/blog_61c485330100ilpx.html
利用HTK做簡單的YES/NO語音識別http://blog.sina.com.cn/s/blog_61c485330100in91.html
HTK使用過程可以抽象成為
準(zhǔn)備階段:編寫語法規(guī)則、詞典文件、特征參數(shù)提取配置文件、HMM原型文件
處理階段:錄音HSLab(訓(xùn)練、識別用數(shù)據(jù))——提取特征HCopy(可以同時提取訓(xùn)練、識別數(shù)據(jù))——
說話人識別
這塊目前主要采用GMM說話人識別模型。
利用GMM模型,在訓(xùn)練的時候得到特征參數(shù):
端點檢測
ZCR和能量結(jié)合的檢測方法
待續(xù)。。。