MFCC
在语音识别研究领域,音频特征的选择至关重要。在这里介绍一种非常成功的音频特征——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的更多相关文章
- MFCC特征提取(C语言版本)
音频分析中,MFCC参数是经典参数之一.之前对于它的计算流程和原理,大体上是比较清楚的,所以仿真的时候,都是直接调用matlab的voicebox工具或者开发的时候直接调用第三方库.最近想整理一个纯C ...
- MFCC可视化
大多数文章和博客介绍都是MFCC的算法流程,物理意义,这里仅仅从数据分布可视化的角度,清晰 观察MFCC特征在空间中的分布情况,加深理解. MFCC处理流程: MFCC参数的提取包括以下几个步骤: 1 ...
- MFCC matlab code
%function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filen ...
- 语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient)
语音识别之梅尔频谱倒数MFCC(Mel Frequency Cepstrum Coefficient) 原理 梅尔频率倒谱系数:一定程度上模拟了人耳对语音的处理特点 预加重:在语音信号中,高频部分的能 ...
- 语音频谱语音信号处理之(四)梅尔频率倒谱系数(MFCC)
今天一直在查找语音频谱之类的问题,今天正好有机会和大家共享一下. 语音信号处置之(四)梅尔频率倒谱系数(MFCC) zouxy09@qq.com http://blog.csdn.net/zouxy0 ...
- mfcc的特征提取python 代码实现和解析
#!/usr/bin/python # -*- coding: UTF-8 -*- import numpy import scipy.io.wavfile from matplotlib impor ...
- MFCC特征参数提取流程概述
一 概念概述: 在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequenc ...
- MFCC/Filter Bank的提取流程
预加重:通过一个一阶有限激励响应高通滤波器,使信号的频谱变得平坦,不易受到有限字长效应的影响. 分帧:根据语音的短时平稳特性,语音可以以帧为单位进行处理,实验中选取的语音帧长为32ms,帧移为16ms ...
- HTK计算mfcc/filter_bank源码解析
HTK计算mfcc/filter_bank源码解析 HTK可以用简单的 HCopy -C config -s scp 求取mfcc或者filter_bank 关于mfcc的原理在 http://my. ...
- 语音笔记:MFCC
一,传统语音识别体系结构 二,MFCC特征提取 MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数.梅尔频率是基于人耳听觉特性提出来的, 它与Hz频率 ...
随机推荐
- 血的教训:Protocol http not supported or disabled in libcurl
报错显示:http not supported or disabled in libcurl 查看配置 curl -V ---------------------------------------- ...
- YII2中使用控制台命令
有些时候我们需要通过crontab在后台跑一些定时脚本,这时候就需要用到控制台命令了. 我们在commands目录下创建TestController.php,当然脚本的位置是可以随意指定的,只需要在c ...
- c#程序设计原则
单一职责 开闭原则:对扩展开放,对修改封闭. 方法 的职责,一个方法做的事越多,造成问题的可能性会增加. 解决的方法1:就是分拆2:写单独类
- oracle 直接复制表内容到新表
不知道为什么,刚建的oracle数据库删除数据很慢,表里面有120多万数据,非常地慢 于是采用的复制的方法,命令如下: create table students_backup as select * ...
- hdu 5691(状压DP) Sitting in Line
题目http://acm.hdu.edu.cn/showproblem.php?pid=5691 状态DP,dp[i][j],i 表示的是一种状态,这个状态指的是当前这个数取或不取,j表示的是以第j个 ...
- hdu 5493 (2015合肥网赛) Queue
题目;http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意,t组数据,n个人,n行每行分别是人的身高和这个人的左边或右边比他高的人的个数,输出符合条件 ...
- 网页定时器setTimeout( )
不斷重複執行的 setTimeout( ) setTimeout( ) 預設只是執行一次, 但我們可以使用一個循環方式, 使到一個setTimeout( ) 再啟動自己一次, 就會使到第二個 setT ...
- springmvc+mybatis 构建cms+UC浏览器文章功能
最近公司在模拟UC浏览器做一个简单的cms系统,主要针对于企业内部的文章浏览需求,这边考虑用户大多用mobile浏览文章内容,故使用原生的ios和android进行开发,后面也会集成html5. 1. ...
- pselect 函数
<unix网络环境编程> 中20-7 的示例理解. #include "unp.h" static void recvfrom_alarm(int); void dg_ ...
- Spring ConversionService 类型转换(一)Converter
Spring ConversionService 类型转换(一)Converter Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.h ...