实验二语音信号的特征提取

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二语音信号的特征提取

一、 实验目的

1、熟练运用MATLAB 软件进行语音信号实验。

2、熟悉短时分析原理、MFCC 的原理。

3、学习运用MATLAB 编程进行MFCC 的提取。

4、学会利用短时分析原理提取MFCC 特征序列。

二、 实验仪器设备及软件

MATLAB

三、 实验原理

1、MFCC

语音识别和说话人识别中,常用的语音特征是基于Mel 频率的倒谱系数(即MFCC )。MFCC 参数是将人耳的听觉感知特性和语音的产生机制相结合。

Mel 频率可以用如下公式表示:

)700/1log(2595f f Mel +⨯=

在实际应用中,MFCC 倒谱系数计算过程如下;

① 将信号进行分帧,预加重和加汉明窗处理,然后进行短时傅里叶变换并得到其频谱。 ② 求出频谱平方,即能量谱,并用M 个Mel 带通滤波器进行滤波;由于每一个频带中分量的作用在人耳中是叠加的。因此将每个滤波器频带内的能量进行叠加,这时第k 个滤波器输出功率谱)('

k x 。

③ 将每个滤波器的输出取对数,得到相应频带的对数功率谱;并进行反离散余弦变换,得到L 个MFCC 系数,一般L 取12~16个左右。MFCC 系数为

∑=-=M

k M n k k x Cn 1

']/)5.0(cos[)(log π, n=1,2,...,L

④ 将这种直接得到的MFCC 特征作为静态特征,再将这种静态特征做一阶和二阶差分,得到相应的动态特征。 2、 LPC

由于频率响应)(jw

e H 反映声道的频率响应和被分析信号的谱包络,因此用

|)(|log jw e H 做反傅里叶变换求出的LPC 倒谱系数。

通过线性预测分析得到的合成滤波器的系统函数为)1/(1)(1

∑=--

=p

i i

i z

a z H ,其冲激响

应为h(n)。h(n)的倒谱为)(^n h ,∑+∞=-=

1

^

^

)()(n n

z

n h z H 就是说)(^

z H 的逆变换)(^

n h 是存在的。

设0)0(^

=h ,将式

∑+∞=-=1

^

^

)()(n n

z n h z H 两边同时对

1-z 求导,得

∑∑+∞=--=--∂∂=-∂∂1^

11

11

)(]11log[n n

p i i z n h z z a z 得到∑∑∑∞

+==-=+-+--=1

1

11

1^1)(n p i i

i p

i i i n z a z

ia z n h n ,于是有 ∑∑∑+∞

=+∞

=+-+-=-=-1

1

11

^

1

1

)()1(n n i i n p i i z ia z

n h n z a 令其左右两边z 的各次幂前系数分别相等,得

到)(^

n h 和i a 间的递推关系

⎪⎪

⎪⎩

⎪⎪⎨⎧

>--=≤≤--+==∑∑=-=p i i n i i n p n n h a n i n h p

n k n h a n i a n h a h 1^^11^^

1^

),1()1()(1),()1()()1( ,按其可直接从预测系数{i a }求得倒谱)(^

n h 。这个倒谱是根据线性预测模型得到的,又称为LPC 倒谱。LPC 倒谱由于利用线性预

测中声道系统函数H (z )的最小相位特性,因此避免了一般同态处理中求复对数的麻烦。

四、 实验步骤及程序

MFCC 特征序列 (1)、实验步骤 ① 输入样本音频

② 给样本音频预加重、分帧、加窗 ③ 将处理好的样本音频做傅里叶变换 ④ 进行Mel 频率滤波

⑤ 进行Log 对数能量 ⑥ 对样本求倒谱 ⑦ 输出MFCC 图像

(2)、MFCC 提取程序流程图

s(n) s(n) X(k) X(k)

图3.1 MFCC 特征提取

(3)、MFCC 特征提取实验源程序

close all clear clc

[x]=wavread('1.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);

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';

预加重、分帧、加窗 DFT/FFT Mel 频率滤波组 Log 对数能量

DCT 求倒谱

相关文档
最新文档