在语音识别研究领域,音频特征的选择至关重要。在这里介绍一种非常成功的音频特征——Mel Frequency Cepstrum Coefficient(MFCC),中文名字为梅尔频率倒谱系数。MFCC特征的成功很大程度上得益于心理声学的研究成果,它对人的听觉机理进行了建模。我们知道音频信号从时域信号转化为频域信号之后,我们可以得到各种频率分量的能量分布。心理声学的研究结果表明,人耳对于低频信号更加敏感,对于高频信号less sensitive,具体是一种什么关系?心理声学研究结果表明,在低频部分是一种线性的关系,但是随着频率的升高,人耳对于频率的敏感程度呈现对数增长的态势。这意味着仅仅从各个频率能量的分布设计符合人的听觉习惯的音频特征不是非常合理的。

  MFCC 特征的设计者正式利用了上述人类的听觉特性,使用了梅尔滤波器来对频率分布进行滤波。这里的梅尔滤波器的设计充分体现了上面提到的人的听觉机理的问题。下面我们将详细介绍MFCC特征。

一、作为一种频率域的音频特征,离散傅里叶变换是这些特征计算的基础。一般我们会选择快速傅里叶变换FFT算法。

相关的能量的求取解释可以参考FFT部分,一个比较粗略的流程是这样的。

二、梅尔滤波器

实际上是一种三角形滤波器,首先对frequency通过下面的公式映射到mel 标度

下面这张图充分体现了两者的关系。

在mel scale我们是对其进行等宽度的划分,但是在frequency scale可以看到,随之而变化的幅度确实逐渐变大的,在低频部分刚开始并不是非常明显的,但是随着频率的增大,这种趋势变得愈加明显。

mel三角形滤波器的设计是在mel scale进行的,相邻滤波器之间存在交叉的部分,下一个滤波器的开始位置是上一个滤波器的中心频率位置,假设mel scale的范围为[0,max],假设要划分为N个梅尔滤波器,根据上面的分析,我们要将其等距划分为N+1块,如下所示。我们要获得7个mel filter,则将mel scale等间距划分为了8个区域,使用如图所示的方式可以得到7个filter。每个三角形的中间位置是mel滤波器的中间位置,将其使用上面的公式的反变换,反变换到frequency,可以得到相应的mel滤波器的中心频率。

当然上面这张图的目的只是为了确定mel滤波器的边界,在实际当中的mel滤波器的filter过程是使用了在相对应的频率域的公式来进行的

如下所示,我们可以得到在频率域的mel滤波器。通过上面的计算我们可以得到相应的N+1个三角滤波器的frequency的边界,我们将其记为$f(m),m=0,1,2,...,N$

下面的有的图像引用自http://my.oschina.net/jamesju/blog/193343,在此版权说明

我们会发现上面的公式的分母是一个常数,而且随着frequency的增大,这个常数相对的也增大了,而且增大的幅度更大,所以造成整体的$H_{m}(k)变小$,从而说明随着频率的增大,相应的filter权重会变小,这也说明了对于低频部分的重视。

下面所示为滤波器的一个简单示意图。

上面的滤波的结果,是导致得到了N个值,因为每一个滤波器,会在对相应的频率能量加权之后,进行了求和运算。

三、非线性变换

一般为log对数运算

四、离散余弦变换  (DCT)

参考资料:

http://my.oschina.net/jamesju/blog/193343

MFCC的更多相关文章

  1. MFCC特征提取(C语言版本)

    音频分析中,MFCC参数是经典参数之一.之前对于它的计算流程和原理,大体上是比较清楚的,所以仿真的时候,都是直接调用matlab的voicebox工具或者开发的时候直接调用第三方库.最近想整理一个纯C ...

  2. MFCC可视化

    大多数文章和博客介绍都是MFCC的算法流程,物理意义,这里仅仅从数据分布可视化的角度,清晰 观察MFCC特征在空间中的分布情况,加深理解. MFCC处理流程: MFCC参数的提取包括以下几个步骤: 1 ...

  3. MFCC matlab code

    %function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filen ...

  4. 语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient)

    语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient) 原理 梅尔频率倒谱系数:一定程度上模拟了人耳对语音的处理特点 预加重:在语音信号中,高频部分的能 ...

  5. 语音频谱语音信号处理之(四)梅尔频率倒谱系数(MFCC)

    今天一直在查找语音频谱之类的问题,今天正好有机会和大家共享一下. 语音信号处置之(四)梅尔频率倒谱系数(MFCC) zouxy09@qq.com http://blog.csdn.net/zouxy0 ...

  6. mfcc的特征提取python 代码实现和解析

    #!/usr/bin/python # -*- coding: UTF-8 -*- import numpy import scipy.io.wavfile from matplotlib impor ...

  7. MFCC特征参数提取流程概述

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

  8. MFCC/Filter Bank的提取流程

    预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响. 分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧移为16ms ...

  9. HTK计算mfcc/filter_bank源码解析

    HTK计算mfcc/filter_bank源码解析 HTK可以用简单的 HCopy -C config -s scp 求取mfcc或者filter_bank 关于mfcc的原理在 http://my. ...

  10. 语音笔记:MFCC

    一,传统语音识别体系结构 二,MFCC特征提取 MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数.梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率 ...

随机推荐

  1. JS编程题练习

    JS编程题练习 1. 两个数组合并成一个数组排序返回 先依次比较两个数组,按照小的就传入新的数组.当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可. function ...

  2. 安装git工具在ubuntu系统

    Git is one of the most popular tools used for distributed version control system(VCS). Git is common ...

  3. python 网络下载的三种风格 未完成

    import osimport timeimport sys import requests#依序下载POP20_CC = ('CN IN US ID BR PK NG BD RU JP' 'MX P ...

  4. opencv 双边模糊,膨胀腐蚀 开 闭操作

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; int main(int argc, ...

  5. C++中 左值和右值的区别

    总结: C++11中所有的值属于左值,右值两者之一. 左值引用:指的是可以放在赋值表达式左边的事物——在堆上或者栈上分配的命名对象或者其他对象成员——有明确的内存地址. 对左值的const引用创建临时 ...

  6. HTML与XHTML的差别(转自)http://jingyan.baidu.com/article/597035521c31ed8fc007400a.html

    HTML与XHTML之间的差别,粗略可以分为两大类比较:一个是功能上的差别,另外是书写习惯的差别.关于功能上的差别,主要是XHTML可兼容各大浏览器.手机以及PDA,并且浏览器也能快速正确地编译网页. ...

  7. hdu 5475(2015上海网赛) An easy problem

    题目;http://acm.hdu.edu.cn/showproblem.php?pid=5475 题意就是给X赋初值1,然后给Q个操作,每个操作对应一个整数M:如果操作是1则将X乘以对应的M,如果是 ...

  8. cent 7 安装VNC

    1. yum install tigervnc-server; 2.cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncs ...

  9. codeforces round#509

    博主水平不高, 只能打完$4$题, QAQ什么时候才能变强啊嘤嘤嘤 订正完6题了,  还想打今天下午的CF , 只能迟十分钟了, 掉分预定 A. Heist 输出 $max - min + n - 1 ...

  10. 深浅copy和字符串细节方法

    copy a=[1,2,3]b=aid(a)55499272id(b)55499272 id()就是查看内存地址,是不是同一个对象. c=a.copy()id(c)57940040 可见copy()出 ...