MFCC特征提取

MFCC语音特征值提取算法 MFCC意为梅尔频率倒谱系数,顾名思义,MFCC语音特征提取包含两个关键步骤;将语音信号转化为梅尔频率,然后进行倒谱分析。梅尔频谱是一个可用来代表短期音频的频谱,梅尔刻度(Mel Scale)则是一种基于人耳对等距的音高变化的感官判断而确定的非线性频率刻度。梅尔频率和正常的频率f之间的关系:当梅尔刻度均匀分布,则对应的频率之间的距离会越来越大。梅尔刻度的滤波器组在低频部分的分辨率高,跟人耳的听觉特性比较相符,这也是梅尔刻度的物理意义。 阅读详情

一、MFCC概述

    在语音处理领域里,梅尔频率倒谱(mel-frequency cepstrum简称MFC)表示一个语音的短时功率谱,是一个语音的对数功率谱在频率的一个非线性梅尔刻度上进行线性余弦转换所得,而所有的梅尔频率倒谱系数(Mel-frequency cepstral coefficients  简称MFCC)共同的组成一个MFC。

    mfcc是为了完成声音识别而开发出来的一套算法,基于人是如何识别声音的。首先明确四点:

  1.语音信号的大部分信息包含在低频分量中;

  2.语音信号的大部分信息包含在低幅部分中;

  3.人耳听到的声音高低与声音频率不成线性关系,但是与该声音频率的对数近似成线性正比关系;

  4.人并不能区分所有频率分量,只有两个频率分量相差一定带宽时(1000hz以下,带宽恒定100hz;1000hz以上,带宽与中心频率成指数关系),人类才能区分,否则人就会把两个音调听成一个,这称为屏蔽效应,带宽称为临界带宽;(中心频率:声音高低主要与频率有关,由于可听声的声频太宽(从20Hz到20000Hz),为便于进行频率分析,将其分为若干段,称为频程。每频程的上限与下限频率的几何平均值称为该频程的中心频率)

 MFCC在一定程度上模拟了人耳对语音的处理特点,应用了人耳听觉感知方面的研究成果,采用这种技术语音识别系统的性能有一定提高。如果现在给我们一段语音,我们首先得到它的频谱包络(连接所有共振峰值点的平滑曲线,共振峰值携带了声音的辨识属性,如同人的身份证),但是对于人类来说,人类听觉的感知至聚焦在某些特定的区域而不是整个频谱包络,而MEL频率分析就是基于人类听觉感知实验的。实验观测发现人耳就像一个滤波器组一样,它只关注某些特定的频率分量。它在低频区域有很多的滤波器,在高频区域则较少。

梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients,简称MFCC)与频率的关系可用下式近似表示:


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

              

人耳的听觉特性与Mel频率的增长一致。与实际频率在1000Hz以下呈现线性分布,1000Hz以上呈现对数增长。

二、 MFCC的提取过程

基本流程图如下所示:

                    

首先对象信号进行预加重,分帧,加窗,以及FFT傅里叶变换。然后在计算功率谱,将得到的功率谱通过三角带通滤波器,滤波输出的结果利用mel域与线性频率的关系式转为对数形式。最后进行DCT变换,得到MFCC系数。N/3 MFCC系数+ N/3 一阶差分参数+ N/3 二阶差分参数)+帧能量(此项可根据需求替换)就构成了N为的MFCC特征。

2.1. 预加重

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

                  

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


2.2.三角带通滤波器

  三角形带通滤波器组的设计过程如下:

    假设语音信号的采样频率,帧长N=256,滤波器个数K=22
    由此可得语音信号的最大频率为:

              

根据公式:

           

 

可以求得出最大的Mel频率为:   

 由于在Mel刻度范围内,各个三角滤波器的中心频率是相等间隔的线性分布。由此,可以计算两个相邻三角滤波器的中心频率的间距为:

        

因此,各三角形滤波器在mel刻度上的中心频率可以由Mel频率与线性频率的关系式求出。

由上面的中心频率可以计算出对应的线性刻度上的频率。如下图所示:

         

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

每一个三角形滤波器的中心频率c(l) 在Mel频率轴上等间隔分布。设o(l),c(l),h(l) 分别是第l 个三角形滤波器的下限,中心,和上限频率,则相邻三角形滤波器之间的下限,中心,上限频率的关系如下:c(l)=h(l-1)=o(l+1);  如图所示:

                                       

2.3 MFCC系数计算

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

     

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

     

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

2.4. 对数能量

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

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

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

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

(8)

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


三、Matlab实现

% MFCC implement with Matlab %
[x fs]=wavread('test.wav');
bank=melbankm(24,256,fs,0,0.4,'t'); %Mel滤波器的阶数为24,FFT变换的长度为256,采样频率为16000Hz
%归一化Mel滤波器组系数
bank=full(bank); %full() convert sparse matrix to full matrix
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);%对xx 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(2,1,2);
plot([1,w],A);
xlabel('维数');ylabel('幅值');
title('维数与幅值的关系');

       

         




MFCC(Mel-Frequency Cepstral Coefficients)特征 声音特征大全 1. MFCC(Mel-Frequency Cepstral Coefficients)特征 MFCC特征提取包含两个关键步骤:线性频谱转化到梅尔频率,然后进行倒谱分析。 由来: 梅尔(Mel)频率是由研究人员跟据人耳听觉机理提出,它与赫兹(Hz)频率成非线性对应关系。MFCC则利用两者之间的非线性关系,计算得到Hz频谱特征。当前MFCC已经广泛应用于语音数据特征提取和降低运算维度。由于Hz频率与Mel频率之间存在非线性的对应关系,使得当频率提高时,MFCC的计算精度随之下降。通常情况下,在应 阅读详情

相关推荐

深度解析MFCC特征提取

MFCC是一个在语音处理和语音识别领域被广泛运用的特征,本篇博客对MFCC算法进行了深度解析,并提供了相应实现代码

weixin_42620109的博客 1万+

语音特征参数MFCC提取过程详解

原来对语音特征参数MFCC的提取过程不是很了解,最近做实验需要自己手动去提取,所以借此机会,深入的学习了一下,所以记录下来,希望能够对日后的学习有一定的帮助。

James Zhang's Blog 16万+

mfcc特征提取_MFCC特征提取

梅尔倒谱系数(MFCC)做为语音信号处理中的常见特征之一,在各个语音任务中都取得了不错的效果,本文将讲解一下MFCC特征的通用的提取过程。与大家一起探讨一下~MFCC特征通用提取过程预设连续语音为 共含有107000个点;预加重系数 帧长为 ,帧移 ;窗函数为 ,fft的个数为 ,采样频率为 预加重、分帧、加窗预加重预加重的目的是为了去除口唇辐射的影响,增加语音的高频分辨率,其具体实现...

weixin_42516882的博客 1301

语音识别:MFCC特征参数提取

记忆力不好,做个随笔,怕以后忘记。网上很多关于MFCC提取的文章,但本文纯粹我自己手码,本来不想写的,但这东西忘记的快,所以记录我自己看一个python demo并且自己本地debug的过程,在此把这个demo的步骤记下来,所以文章主要倾向说怎么做,而不是道理论述。由于python的matplotlib.pyplot库没有下载成功不会画图,文中大部分图片是我网上找的。必备基础知知识:1. 对数指数...

lbaihao的专栏 9608

声音特征提取:MFCC向量

声音是模拟信号,声音的时域波形只代表声压随时间变化的关系,不能很好的代表声音的特征,因此,必须将声音波形转换为声学特征向量。目前有许多声音特征提取方法,如梅尔频率倒谱系数MFCC、线性预测倒谱系数LPCC、多媒体内容描述接口MPEG7等,其中MFCC是基于倒谱的,更符合人的听觉原理,因而是最普遍、最有效的声音特征提取算法。在提取MFCC前,需要对声音做前期处理,包括模数转换、预加重和加窗。

叶剑杰的专栏 2万+

声音特征提取-MFCC详解

*********************************************************废话**************************************** 近日一直想找一篇能够讲解比较详细的文章,奈何不是纯原理就是读不懂代码(对于小白有注释那也是天书级别),经过多日酝酿,终于能够大概看懂一些,在这里希望能够做一些笔记,顺便给接下...

tobebest_lah的博客 8948

语音识别之MFCC特征提取

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ** MFCC特征提取 ** 前言 兜兜转转看了一些文献,总结出自己的一些理解,总结如下(若有错误之处,烦请指点一二): 一、为什么要做MFCC 语音识别的第一步是特征提取,目的是可以给模型提供更加高质量的输入以此获得更好的识别效果。常用的特征提取包括线性预测倒谱系数(LPCC)和梅尔频率倒谱系数(MFCC)。 LPCC:是根据声管模型建立的特征参数,是对声道响应的特征表征 MFCC:基于人类的听觉特征提取出来的特征参数,是对人耳听觉

DurIaN1023的博客 8536

MFCC特征提取详细计算过程

一、MFCC计算总体流程 1.信号的预处理,包括预加重(Preemphasis),分帧(Frame Blocking),加窗(Windowing)。假设语音信号的采样频率fs=8KHz.由于语音信号在10-30ms认为是稳定的,则可设置帧长为80~240点。帧移可以设置为帧长的1/2. 2.对每一帧进行FFT变换,求频谱,进而求得幅度谱。 3.对幅度谱加Mel滤波器组(Mel滤波

唧唧复歪歪 4903

MFCC 特征提取

HTK以及My_htk数据链接: https://pan.baidu.com/s/1Ajo7d-odrRiAwmCB_CQTzQ 提取码:hqnv 一:文件准备 HTK 和 HTK–samples 下载 HTK 和 HTK–samples 两个压缩文件,保存至 F 盘根目录下。 下载地址:http://htk.eng.cam.ac.uk/download.shtml(注:HTK 官方 网站需要先...

taw19960426的博客 1997

MFCC特征提取的C++实现指南

MFCC(Mel频率倒谱系数)技术是现代语音识别系统中最为关键的特征提取方法之一。通过模拟人类听觉系统的特性,MFCC能够在频域对声音信号进行有效的特征表示。本章将从MFCC的基本原理开始,逐步深入其在语音处理和模式识别领域的应用。首先,我们将讨论MFCC如何通过模拟人耳的非线性感知特性来提取声音特征。人耳对声音频率的感知并不呈线性分布,而是呈对数关系,因此MFCC使用了梅尔刻度来近似这种感知特性。梅尔刻度通过一系列滤波器组来模拟人耳的频率响应,这在后续章节中我们将详细探讨。

weixin_42511373的博客 1208

MFCC特征提取与应用详解

梅尔频率倒谱系数(MFCC)是一种被广泛应用于语音识别中的特征提取技术。它通过模拟人类听觉感知机制,将信号从时域转换到频域,并进一步转换到“梅尔频率”域中,以提取出语音信号的重要特征。MFCC是基于傅里叶变换的频谱,并通过梅尔滤波器组提取频带能量,再进行对数能量计算和离散余弦变换(DCT)得到。其核心在于近似人类的听觉感知特性,通过非线性变换将频率映射到梅尔刻度上。汉明窗(Hamming window):在减少旁瓣泄露和主瓣宽度之间取得较好的平衡。

weixin_42581003的博客 2727

MFCC声纹特征提取

没错,就是你,发现了声音识别的机密!

qq_55041016的博客 7496

mfcc特征提取

代码中的melcepts.m直接可以用来提取MFCC,MFCC是Mel-Frequency Cepstral Coefficients的缩写,顾名思义MFCC特征提取包含两个关键步骤:转化到梅尔频率,然后进行倒谱分析

kaldi中mfcc和pitch特征提取

mfcc 1.先上代码 mfccdir=mfcc for x in train dev test; do steps/make_mfcc.sh --cmd "$train_cmd" --nj 10 data/$x exp/make_mfcc/$x $mfccdir || exit 1; steps/compute_cmvn_stats.sh data/$x exp/make_mfcc/$x...

格桑08的博客 5452

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 449

STM32F103C8T6的PC13-15引脚配置避坑指南:为什么你的IO口不工作?

本文详细解析了STM32F103C8T6的PC13-15引脚作为普通IO口不工作的原因及解决方案。这三个引脚默认关联侵入检测和低速外部时钟等特殊功能,需先禁用TAMPER和LSE,并开启AFIO时钟,才能正确配置为普通GPIO。文章提供了标准外设库和HAL库的配置步骤、常见问题排查方法及硬件设计注意事项。

weixin_29169899的博客 523

mfcc计算 java_语音特征提取技术——MFCC

简介MFCC是一种语音特征提取技术,它产生与20世纪80年代。MFCC为了从人发出的音频中去除噪音和情感的影响,提取特征值便于我们进行进一步的分析。人的发声由很多部位共同影响的结果,如嘴形、牙齿等因素,这种形状可以决定声音的输出。如果我们可以精确的确定形状,那么我们就可以对发出的因素进行科学的表示。这篇文章将带你走进MFCC技术,解释它为什么能够很好的用于语音识别领域以及如何实现它。首先我们来确定...

weixin_29105429的博客 344

手把手教你用LTspice仿真TVS二极管:从选型验证到波形分析全流程

本文详细介绍了如何使用LTspice仿真TVS二极管,从选型验证到波形分析的全流程。通过搭建仿真环境、核心参数验证和系统级防护策略,帮助工程师低成本评估TVS性能,优化电路设计。特别适用于电源设计和接口防护领域,提升工作效率和设计准确性。

weixin_29234239的博客 650
上一篇: webrtc 单通道降噪算法(ANS)简析
下一篇: HMM-GMM——前向算法
audiocool
博客等级 码龄9年 335粉丝 43原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值