在语音识别研究领域,音频特征的选择至关重要。在这里介绍一种非常成功的音频特征——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. Asp.net Mvc之Action如何传多个参数

    最近,工作上有一个需要:用户查询日志文件信息,查看某一个具体日志信息,可能同时查看该日志所在日期的其他日志信息列表. 为完成此功能,我打算在URL中传入了两个参数,一个记录此日志时间,另外一个记录日志 ...

  2. AngularJS——第7章 依赖注入

    第7章 依赖注入 AngularJS采用模块化的方式组织代码,将一些通用逻辑封装成一个对象或函数,实现最大程度的复用,这导致了使用者和被使用者之间存在依赖关系. 所谓依赖注入是指在运行时自动查找依赖关 ...

  3. linux命令学习之:ifup/ifdown

    ifup命令网络配置 ifup命令用于激活指定的网络接口.ifdown命令用于禁用指定的网络接口. 实时地手动修改一些网络接口参数,可以利用ifconfig来实现,如果是要直接以配置文件,亦即是在 / ...

  4. 42-字符串到json 的错误 com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String

    json: {"updated_at":1551780617,"attr":{"uptime_h":3,"uptime_m&quo ...

  5. 以太坊测试网络搭建以及RPC服务开启-配置注意事项

    .Eth QA Test环境: 数据文件路径: C:\Users\Administrator\AppData\Roaming\Ethereum console启动参数: --rpc --testnet ...

  6. 【MINA学习笔记】—— 1.体系结构分析[z]

    前言 Apache的MINA框架是一个早年非常流行的NIO框架,它出自于Netty之父Trustin Lee大神之手.虽然目前市场份额已经逐渐被Netty取代了,但是其作为NIO初学者入门学习框架是非 ...

  7. sql 查询某个字段出现的次数

    表名随便起个 testtable 那么有这么一个需求,利用你所学的sql语句 单表查询出下表的结果 也就是统计某个时间某个值出现的次数其实一开始我是很懵,毕竟之前也没做过,只能怪自己学得太浅了.过后我 ...

  8. Linux系统和性能监控之CPU篇

    Linux系统和性能监控之CPU篇 性能优化就是找到系统处理中的瓶颈以及去除这些的过程.本文由sanotes.net站长tonnyom在2009年8月翻译自Linux System and Perfo ...

  9. MyBatis Generator介绍

    MyBatis Generator介绍 MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和 ...

  10. Python配置工具类ConfigParser使用

    ConfigParser模块定义了类ConfigParser,用于实现配置文件解释器.该模块ConfigParser在Python3中,已更名为configparser. 一,函数介绍 1.读取配置文 ...