做了2年半的语音信号处理方面的研究了,主要从事算法方面的研究,从一开始的采用S变换提取语音特征进行说话人识别,到后来的语音增强算法研究,HTK学习,然后又回到语音特征提取分析,感觉学习语音信号处理应该有个循序渐进的过程,总结一下,也希望能有这方面的专业人士批评指正。 语音信号处理知识准备阶段: 基础:
语音信号处理方面必看书籍:离散时间语音信号处理——原理与应用 强烈推荐三本利用MATLAB做语音信号处理的电子书: 1、http://neural.cs./jang/books/dcpr/(Data Clustering and Pattern Recognition (資料分群與樣式辨認)) 2、http:///jang/books/audioSignalProcessing/index.asp(Audio Signal Processing and Recognition (音訊處理與辨識)) 3、MATLAB扩展编程 这三本中有很多语音处理相关的源程序。 学习理解阶段: 1.理解语音的发声机理 语音一般模型
2.熟悉语音分析一般分析的特征,理解各种算法在提取这些特征的实现过程,理解别人的算法时候,试着用其他算法实现,这是个培养兴趣的好方法。总结语音特征提取的方法: 基频提出(pitch): 共振峰:一般来说,语音段的波形重复率比较高,找出一个基本周期,这个基本周期形状和频率的大小分别代表着内容和音色,对它进行FFT,求得频率极大值点,称之为共振峰。共振峰也代表着声带震动后,经过声道这个谐振腔,得到的语言的频谱最大值点,因此也表示声道的谐振频率点,因此也可以通过求LPC间接求得。即先由LPC得到声道系统函数,再求声道频谱响应,接着用峰值检测法(或别的方法)检测峰值点,即为共振峰。 共振峰反映了声道的特征,一般多用来作为情感识别特征。 LPC:自相关法 LPC系数代表声道特征,利用线性预测系数可以求得共振峰,由LPC得到的LPCC可以用来做语音识别,说话人识别等。 MFCC:分帧加窗——FFT——MEL滤波器——DCT MFCC相对LPCC考虑了人的听觉掩蔽效果,即一个强度较小的频率成分可能被邻近的一个较强频率成分所掩蔽(频域掩蔽),或者两个时间上很接近的信号也可能产生掩蔽现象(时域掩蔽)。 过零率(ZCR):1.先将语音转化为整数形式(减小double型运算的误差),2.求取一帧信号ZCR时,可以将信号先减去直流分量,3.然后再点乘新信号向前或者向后移位一个信号点的信号,计算负数个数。 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) 短时功率谱:信号分帧加窗——自相关——FFT
音量:可以理解为每帧信号的能量大小 3.对研究领域的探索 语音增强:做得最多的就属语音增强这块,方法很多,谱减、Decision-director、non-cause、cause、MMSE、logMMES、掩蔽、维纳滤波、LMS等等,一般是将其中的几种方法结合。 对语音增强这块的理解,看了很多人开发的算法,自己也写过一些算法,我将它们分成了两类:谱衰减和非谱衰减,谱衰减就是利用带噪语音乘以谱衰减因子,原理简单,便于实现,从数字信号处理的角度来看就是寻找一个自适应的滤波器,这个滤波器的自适应因子是和每个时刻的噪声联系的,将带噪语音经过这样一个滤波器得到增强语音。非谱衰减理解为利用时频或者小波等方法分解语音,对每个部分去噪,然后再合成,诸如此类的方法。看过我师妹的EMD语音增强方法,效果相当不错,只是计算时间上需要改进。 语音识别: 语音识别根据识别对象和处理语音不同可以分为不同类,按对象分特定人和非特定人,按处理语音分孤立词识别和连续语音识别 接触的是HMM,理解HMM的一些好的网址:http://www.comp./roger/HiddenMarkovModels/html_dev/main.html举例解释说明,适合初学者。 HTKBook里面说的比较清楚,但是也比较多。 HTK:下载地址http://htk.eng./ 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使用过程可以抽象成为 准备阶段:编写语法规则、词典文件、特征参数提取配置文件、HMM原型文件
处理阶段:录音HSLab(训练、识别用数据)——提取特征HCopy(可以同时提取训练、识别数据)—— 说话人识别 这块目前主要采用GMM说话人识别模型。 利用GMM模型,在训练的时候得到特征参数: 端点检测
ZCR和能量结合的检测方法 待续。。。 |
|