折腾了好几天,看了很多资料,终于把语音特征参数MFCC搞明白了,闲话少说,进入正题。

一、MFCC概述

在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients,简称MFCC)。根据人耳听觉机理的研究发现,人耳对不同频率的声波有不同的听觉敏感度。从200Hz到5000Hz的语音信号对语音的清晰度影响对大。两个响度不等的声音作用于人耳时,则响度较高的频率成分的存在会影响到对响度较低的频率成分的感受,使其变得不易察觉,这种现象称为掩蔽效应。由于频率较低的声音在内耳蜗基底膜上行波传递的距离大于频率较高的声音,故一般来说,低音容易掩蔽高音,而高音掩蔽低音较困难。在低频处的声音掩蔽的临界带宽较高频要小。所以,人们从低频到高频这一段频带内按临界带宽的大小由密到疏安排一组带通滤波器,对输入信号进行滤波。将每个带通滤波器输出的信号能量作为信号的基本特征,对此特征经过进一步处理后就可以作为语音的输入特征。由于这种特征不依赖于信号的性质,对输入信号不做任何的假设和限制,又利用了听觉模型的研究成果。因此,这种参数比基于声道模型的LPCC相比具有更好的鲁邦性,更符合人耳的听觉特性,而且当信噪比降低时仍然具有较好的识别性能。

梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients,简称MFCC)是在Mel标度频率域提取出来的倒谱参数,Mel标度描述了人耳频率的非线性特性,它与频率的关系可用下式近似表示:

式中f为频率,单位为Hz。下图展示了Mel频率与线性频率的关系:

图1 Mel频率与线性频率的关系

二、语音特征参数MFCC提取过程

基本步骤:

图2 MFCC参数提取基本流程

1.预加重

预加重处理其实是将语音信号通过一个高通滤波器:

(2)

式中μ的值介于0.9-1.0之间,我们通常取0.97。预加重的目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱。同时,也是为了消除发生过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰。

2.分帧

先将N个采样点集合成一个观测单位,称为帧。通常情况下N的值为256或512,涵盖的时间约为20~30ms左右。为了避免相邻两帧的变化过大,因此会让两相邻帧之间有一段重叠区域,此重叠区域包含了M个取样点,通常M的值约为N的1/2或1/3。通常语音识别所采用语音信号的采样频率为8KHz或16KHz,以8KHz来说,若帧长度为256个采样点,则对应的时间长度是256/8000×1000=32ms。

3.加窗(Hamming Window)

将每一帧乘以汉明窗,以增加帧左端和右端的连续性。假设分帧后的信号为S(n), n=0,1…,N-1, N为帧的大小,那么乘上汉明窗后

,W(n)形式如下:

(3)

不同的a值会产生不同的汉明窗,一般情况下a取0.46

4.快速傅里叶变换

由于信号在时域上的变换通常很难看出信号的特性,所以通常将它转换为频域上的能量分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每帧还必须再经过快速傅里叶变换以得到在频谱上的能量分布。对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。设语音信号的DFT为:

(4)

式中x(n)为输入的语音信号,N表示傅里叶变换的点数。

5.三角带通滤波器

将能量谱通过一组Mel尺度的三角形滤波器组,定义一个有M个滤波器的滤波器组(滤波器的个数和临界            带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,...,M。M通常取22-26。各                f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示:

图3 Mel频率滤波器组

三角滤波器的频率响应定义为:

(5)

式中

三角带通滤波器有两个主要目的:

对频谱进行平滑化,并消除谐波的作用,突显原先语音的共振峰。(因此一段语音的音调或音高,是不会呈现在 MFCC 参数内,换句话说,以 MFCC 为特征的语音辨识系统,并不会受到输入语音的音调不同而有所影响) 此外,还可以降低运算量。

6.计算每个滤波器组输出的对数能量为:

(6)

7.经离散余弦变换(DCT)得到MFCC系数:

(7)

将上述的对数能量带入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数,通常取12-16。这里M是三角滤波器个数。

8.对数能量

此外,一帧的音量(即能量),也是语音的重要特征,而且非常容易计算。因此,通常再加上一帧的对数能量(定义:一帧内信号的平方和,再取以10为底的对数值,再乘以10)使得每一帧基本的语音特征就多了一维,包括一个对数能量和剩下的倒频谱参数。

注:若要加入其它语音特征以测试识别率,也可以在此阶段加入,这些常用的其它语音特征包含音高、过零率以及共振峰等。

9.动态差分参数的提取(包括一阶差分和二阶差分)

标准的倒谱参数MFCC只反映了语音参数的静态特性,语音的动态特性可以用这些静态特征的差分谱来描述。实验证明:把动、静态特征结合起来才能有效提高系统的识别性能。差分参数的计算可以采用下面的公式:

(8)

式中,dt表示第t个一阶差分,Ct表示第t个倒谱系数,Q表示倒谱系数的阶数,K表示一阶导数的时间差,可取1或2。将上式的结果再代入就可以得到二阶差分的参数。

总结:

因此,MFCC的全部组成其实是由:

N维MFCC参数(N/3 MFCC系数+ N/3 一阶差分参数+ N/3 二阶差分参数)+帧能量(此项可根据需求替换)

MATLAB实现

[x fs]=wavread('8.wav');

bank=melbankm(24,256,fs,0,0.4,'t');%Mel滤波器的阶数为24,fft变换的长度为256,采样频率为16000Hz

%归一化mel滤波器组系数

bank=full(bank);

bank=bank/max(bank(:));

for k=1:12%归一化mel滤波器组系数

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);%对x 256点分为一帧

%计算每帧的MFCC参数

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

%求取一阶差分系数

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,:);

end

dtm=dtm/3;

%求取二阶差分系数

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,:);

end

dtmm=dtmm/3;

%合并mfcc参数和一阶差分mfcc参数

ccc=[m dtm dtmm];

%去除首尾两帧,因为这两帧的一阶差分参数为0

ccc=ccc(3:size(m,1)-2,:);

ccc

% 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('维数');

% ylabel('幅值');

% title('维数与幅值的关系')

HTK实现:

运行:

HCopy config 8.wav 8.mfcc

其中,涉及mfcc的参数为:

TARGETKIND=MFCC_E_D_A

-目标是MFCC文件,以及energy(E), delta(D),delta-delta(A)

TARGETRATE=100000

-窗间隔为10ms

WINDOWSIZE=250000

-窗长为25ms

注:HTK中时间单位为100ns

ZMEANSOURCE=T

-将来源文件取zero mean,即去掉DC值

USEHAMMING=T

-使用hamming window

PREEMCOEF=0.97

-预加重系数0.97

NUMCHANS=31

-在MEL刻度下等分成31个频带

USEPOWER=F

-不使用c(0)参数

以上即是语音特征参数MFCC的提取过程详解,希望能够帮助到大家!

java audio 分帧_语音特征参数MFCC提取过程详解相关推荐

  1. MFCC特征提取过程详解

    一.MFCC概述 在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequency ...

  2. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  3. Java单机部署,Nacos docker单机模式部署实现过程详解

    Nacos 的部署,我使用的时docker 部署(单机模式 mysql),官网文档:https://nacos.io/zh-cn/docs/quick-start-docker.html 拉取代码: ...

  4. java判断颜色合法_判断颜色是否合法的正则表达式(详解)

    判断颜色是否合法的正则表达式(详解) "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; 意思是:以#开头,后面是数字和a-f的字符(大写或小写),这个值是 ...

  5. java g1的并行_「g1」JVM G1详解 - seo实验室

    g1 当我们调优java程序时,通常的目标有两个: 响应能力 或者 吞吐量 响应能力 响应能力指一个程序或者系统对请求的是否能够及时响应. 比如: 一个桌面UI能多快的响应一个事件: 一个网站能够多快 ...

  6. java正则表达式 匹配次数_正则表达式教程之重复匹配详解

    本文实例讲述了正则表达式教程之重复匹配.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法 ...

  7. 我的世界Java版最大村庄_我的世界19w11a:详解MC全新村庄机制,我已经准备好重开存档了!...

    已经两周没见到JAVA版的快照了,难道Mojang在憋大招么?没错,本周快照19w11a确实是憋了一个大招! 我的世界19w11a:正式版发布不远了!村庄大改完成,全新交易来袭我的世界19w11a:详 ...

  8. mel滤波matlab,MFCC(Mel Frequency Cepstral Coefficient)提取过程详解

    MFCCs是一个在语音识别和说话者识别领域被广泛运用的特征,由Davis和Mermelstein在1980年提出,可以说从那以后,MFCCs就一直占据这声音特征方面的state-of-the-art. ...

  9. java 二叉树的高度_最全二叉树:完整详解二叉树的遍历以及完全二叉树等6种二叉树...

    树在数据结构中占据了非常重要的位置,尤其是二叉树.经常是在java面试中必问的一个环节,而且二叉树的应用场景真的非常普遍,需要重点掌握好. 但是一直以来,很多同学对于二叉树的掌握都是不太全面.今天我就 ...

  10. java正则表达式匹配路径_正则表达式教程之位置匹配详解

    本文实例讲述了正则表达式教程之位置匹配.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法 ...

最新文章

  1. html h 不换行,css 强制不换行
  2. iOS开发那些事--自定义单元格实现
  3. jsp连接mysql显示404,SpringBoot+jsp项目启动出现404的解决方法
  4. SDNU 1406.A+B问题(水题)
  5. 仿真模拟,需要注意这几点!
  6. logback slf4j_强制Tomcat通过SLF4J / Logback登录
  7. HDU 1048 [The Hardest Problem Ever] 字符串处理
  8. VMware——虚拟机的安装
  9. python程序基本结构总结_python总结
  10. zabbix监控tomcat服务
  11. 网页中引用两个css冲突怎么办
  12. 手机号 验证函数 C++
  13. (转)王小川湖畔大学演讲:人工智能最具商业价值的是什么?
  14. SpreadJS 2021 V14.1 Crack
  15. 国家多部委发布13份“十四五”规划,115项重大工程​
  16. 采购与供应链管理 读书笔记一
  17. 涂抹oracle扩库,涂抹oracle
  18. Android Studio-开发少年强国App(一)
  19. 使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误
  20. 苹果小白笔记本_【电脑】外媒评选年度办公/学生笔记本榜单 快看有你需要的吗...

热门文章

  1. (可能是)最后一次参加同学婚礼了
  2. matlab可见光通信,可见光通信研究工作matlab代码
  3. CryEngine技术讲解
  4. 3 Linux虚拟机创建修改删除文件和文件夹
  5. linux拷贝文件夹内所有,linux拷贝文件夹下所有文件
  6. (转)转给入职新人得体会
  7. c语言 fflush stdin,C语言函数:fflush(stdin)
  8. 算法——Locker doors
  9. 基于ThinkPHP6搭建的后台管理系统
  10. Week8 CSP模拟 T2 HRZ学英语