- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华南理工大学
《语音信号处理》实验报告
实验名称:MFCC特征提取
姓名:
学号:
班级:10级电信5班
日期:2013年5 月24日
1.实验目的
熟练运用MATLAB软件进行语音信号实验;
熟悉短时分析原理、MFCC的原理;
学习运用MATLAB编程进行MFCC的提取;
学会利用短时分析原理提取MFCC特征序列;
2. 实验原理
MFCC:
语音识别和说话人识别中,常用的语音特征是基于Mel频率的倒谱系数(即MFCC)。MFCC参数是将人耳的听觉感知特性和语音的产生机制相结合。
Mel频率可以用如下公式表示:
在实际应用中,MFCC倒谱系数计算过程如下;
= 1 \* GB3 ① 将信号进行分帧,预加重和加汉明窗处理,然后进行短时傅里叶变换并得到其频谱。
= 2 \* GB3 ② 求出频谱平方,即能量谱,并用M个Mel带通滤波器进行滤波;由于每一个频带中分量的作用在人耳中是叠加的。因此将每个滤波器频带内的能量进行叠加,这时第k个滤波器输出功率谱。
= 3 \* GB3 ③ 将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进行反离散余弦变换,得到L个MFCC系数,一般L取12~16个左右。MFCC系数为
, n=1,2,...,L
= 4 \* GB3 ④ 将这种直接得到的MFCC特征作为静态特征,再将这种静态特征做一阶和二阶差分,得到相应的动态特征。
3. 实验数据及平台
本实验所采用的数据是语音文件phrase.WAV和monologue speech_female,平台是MATLAB。
4. 实验过程(步骤)
(1)实验步骤
= 1 \* GB3 ① 输入样本音频
= 2 \* GB3 ② 给样本音频预加重、分帧、加窗
= 3 \* GB3 ③ 将处理好的样本音频做傅里叶变换
= 4 \* GB3 ④ 进行Mel频率滤波
= 5 \* GB3 ⑤ 进行Log对数能量
= 6 \* GB3 ⑥ 对样本求倒谱
= 7 \* GB3 ⑦ 输出MFCC图像
、MFCC提取程序流程图
s(n) Mel频率滤波组DFT/FFT预加重、分帧、加窗s(n) X(k) X(k)
Mel频率滤波组
DFT/FFT
预加重、分帧、加窗
DCT求倒谱 Log对数能量
DCT求倒谱
Log对数能量
图1 MFCC特征提取
5. 实验结果及讨论
运行附录程序,得到的结果为:
采用语音文件phrase.WAV,得到的MFCC特征提取图像为:
采用语音文件monologue speech_female.wav,得到的MFCC特征提取图像为:
通过计算MFCC参数,获得了声纹识别的特征参数。由于MFCC参数是对人耳听觉特征的描述,因此,可以认为,不同声纹的MFCC参数距离,能够代表人耳对两个语音听觉上的差异,可以为声纹的识别提供可靠的依据。
6. 实验总结
在上一次做了LPC特征提取的实验之后,对这方面已经有了一定的认识,这次通过课堂的学习和资料的查找,对MFCC特征提取进行探究和验证,真正把课堂知识用到实验之中,对相关知识的理解和掌握起了比较好的作用。
7. 实验代码
close all
clear
clc
[x]=wavread(E:\yuuyin\monologue speech_female.wav);
bank=melbankm(24,256,8000,0,0.5,m);
bank=full(bank);
bank=bank/max(bank(:));
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));
end
w = 1 + 6 * sin(pi * [1:12] ./ 12);
w = w/max(w);
% 预加重滤波器
xx=double(x);
xx=filter([1 -0.9375],1,xx);
% 语音信号分帧
xx=enframe(xx,256,80);
% 计算每帧的MFCC参数
for i=1:size(xx,1)
y = xx(i,:);
s = y .* hamming(256);
t = abs(fft(s));
t = t.^2;
c1=dctcoef * log(bank * t(1:129));
c2 = c1.*w;
m(i,:)=c2;
end
figure
plot(m);xlabel(帧数);ylabel(幅度);title(MFCC);
文档评论(0)