信号处理——梅尔滤波器(MFCC)

2023-11-18

信号处理——梅尔滤波器(MFCC)


一、概述

在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale FrequencyCepstral Coefficients,简称MFCC)。

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

Mel(f)=2595∗lg(1+f/700)Mel(f)=2595∗lg⁡(1+f/700)

式中f为频率,单位为Hz。下图为Mel频率与线性频率的关系:
在这里插入图片描述


二、基本流程

在这里插入图片描述

1. 预加重

预加重处理其实是将语音信号通过一个高通滤波器:
在这里插入图片描述
式中的值介于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. 加窗

将信号分帧后,我们将每一帧代入窗函数,窗外的值设定为0,其目的是消除各个帧两端可能会造成的信号不连续性(即谱泄露 spectral leakage)。常用的窗函数有方窗、汉明窗和汉宁窗等,根据窗函数的频域特性,常采用汉明窗(hamming window)。

加窗操作:
在这里插入图片描述
窗函数(汉明窗):
在这里插入图片描述
其中a=0.46,N为每一帧的长度。

4. 傅里叶变换FFT

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

设语音信号的DFT为:
在这里插入图片描述

5. 梅尔滤波器组

首先要讲一下什么是梅尔值,这是一个新的量度,相比于正常的频率机制,梅尔值更加接近于人耳的听觉机制,其在低频范围内增长速度很快,但在高频范围内,梅尔值的增长速度很慢。每一个频率值都对应着一个梅尔值,其对应关系如下:
在这里插入图片描述
将能量谱通过一组Mel尺度的三角形滤波器组,定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器。M通常取22-26。各f(m)之间的间隔随着m值的减小而缩小,随着m值的增大而增宽,如图所示:
在这里插入图片描述
三角滤波器的频率响应定义为:
在这里插入图片描述
三角带通滤波器有两个主要目的:

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

6. 对数运算

计算每个滤波器组输出的对数能量为:
在这里插入图片描述

7. 离散余弦变换

经离散余弦变换(DCT)得到MFCC系数:
在这里插入图片描述
将上述的对数能量带入离散余弦变换,求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数,通常取12-16。这里M是三角滤波器个数。

8. 动态差分参数提取

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

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


总结

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信号处理——梅尔滤波器(MFCC) 的相关文章

随机推荐

  • React 组件通讯

    目录 1 组件通讯 概念 1 组件的特点 2 知道组件通讯意义 总结 2 组件通讯 props 基本使用 1 传递数据和接收数据的过程 2 函数组件使用 props 3 类组件使用 props 总结 3 组件通讯 props 注意事项 1
  • Mybatis的缓存(实例)

    目录 概念 实例 Mybatis中的一级缓存 清空一级缓存的时机 Mybatis中的二级缓存 总结 gt 项目源码 概念 缓存 存于内存中的临时数据 使用缓存优点 减少和数据库的交互次数 提高执行效率 缓存适用于 经常查询并且不经常改变的
  • GO连接数据库--踩坑(超详细)

    当使用go语言对数据进行连接时需要几部操作 1 数据库侧 需要允许远程连接 具体操作方法详见 本地主机连接阿里云数据库 自建数据库 排雷 秋为春的博客 CSDN博客 2 GO侧 1 需要引入go sql driver驱动 常见的引入方法有两
  • FPGA同步复位和异步复位的区别以及设计处理

    FPGA复位信号的设计处理 同步复位 同步复位 同步复位信号跟触发器的时钟是同步的 只有在时钟的跳变沿到来之后才会生效 对应verilog代码如下 这种写法会被编译器综合成同步复位 always posedge clk begin if r
  • 5-C语言-三子棋

    问题 用C语言实现三子棋 思路 整体思路 1 肯定先出现菜单 之后在判断 是否退出 出现菜单 肯定就会有选择 不同的选择 进入不同的函数 而选择的话 用switch实现分支选择 2 实现基本思路 选择1 进入游戏 选择2退出游戏 其他情况
  • Altium 不同原理图之间的网络标号没有连线的问题 error:Duplicate Net Names

    今天画板子 发现同一个工程下不同原理图之间的相同网络标号导入到PCB文件之后 pin没有连接在一起 很奇怪 重复导入号几次都是同样的结果 后来发现原理图中会报错 error Duplicate Net Names 搜索后发现 随后在Proj
  • vmware磁盘在线扩容后不显示扩容后的空间(无需重启)

    简单粗暴 增加磁盘容量后无法显示增加的空间容量 查看磁盘空间 饶了三圈寻他千百度 我用的是这条命令 分区名称自行对应sda sdb echo 1 gt sys block sda device rescan 通过总线标识刷新 ll sys
  • 找了一堆Python教程自学,为何还是看不进去!那是因为你根本没找对方法

    Python学不进 这个系列我今天就再带着大家梳理一遍 虽然我之前也讲过这系列 因为 有人还是不会啊 我想说的就两个点 第一 学Python以实用性为导向 第二 理解和运用 学Python死记硬背作用不大的 从来没听过哪个程序员是靠背学会编
  • 什么是机器学习

    转载 博文计算机的潜意识之从机器学习谈起 原文请点击链接 https www cnblogs com subconscious p 4107357 html 强烈推荐一篇关于机器学习入门导论的博文 里面的内容非常详实 加上作者的理解和感悟精
  • Windows7上安装pytorch1.11后报api-ms-win-core-path-l1-1-0.dll错误的解决方法

    在Windows7上通过Anaconda安装PyTorch v1 11 0后 执行程序时报如下图所示错误 无法启动此程序 因为计算机中丢失api ms win core path l1 1 0 dll 尝试重新安装该程序以解决此问题 此Wi
  • Java爬虫与Python爬虫有什么区别

    Java爬虫和Python爬虫是两种常见的网络爬虫实现方式 它们在语言特性 开发环境和生态系统等方面存在一些区别 1 语言特性 Java是一种面向对象的编程语言 而Python是一种脚本语言 Java较为严谨 需要明确定义类 方法和变量 而
  • MDT 2013 从入门到精通之软件自动化部署设置

    因为工作时间原因已经很长一段时间没有更新博客 还请大伙见谅哈 有关MDT系列文章也是很久没有更新了 今天就来谈谈一些常规技巧内容 我们在日常使用MDT部署过程中 很多新手总是纠结于软件的安装问题 总是通过SkipApplications N
  • h5页面loading丝滑小妙招,vue+vant

    1 v if 使用v if tag 1 在data声明一个变量tag 0 请求到参数后tag 1 我会在created重新初始化tag 0 为了保险我还会加一个setTimeout定时器 div class main div data re
  • java项目的远程调试

    我们在工作中可能会遇到这样的场景 有时候有个问题在本地环境不重现开发或者测试环境的问题 而这个问题需要急需解决的情况 更有部分项目在本地无法启动 需要依赖在服务器启动 有时候可以尝试远程调试 我这里用springboot项目 做一下演示 在
  • phpexcel导出

    fileName 亚马逊品类数据 date Y m d fileType xlsx sql select a sku b product typename c category status a gender a sales status
  • 数据库表与表的三种方式

    表和表之间 一般就是三种关系 一对一 一对多 多对多 1 一对一 数据库表中的数据结构 我们用人与车一 一对应的方式来描述一对一的数据表结构 type是区分这条数据是人还是车 master对应是的主人 车的主人是哪个id car对应的是那辆
  • 示波器探头碰人的波形,人碰示波器探头的波形

    如上图所示 如图中 点说明电流恒定 导体切割磁场线 向导线方向切割磁场变强 远离导线切割磁场变弱 则图中 点说明导体不动 但是导线电流增大则磁场强度增加 等效成导体往恒定电流磁场切割 导线电流减小则磁场减小 等效成导体往恒定电流磁场反方向切
  • 「 标准 」NTSC、PAL、SECAM 三大制式简介

    NTSC National Televison System Committee 制式 NTSC 电视标准 每秒 29 97 帧 简化为 30 帧 电视扫描线为 525 线 偶场在前 奇场在后 标准的数字化 NTSC 电视标准分辨率为720
  • KubeVela 正式开源:一个高可扩展的云原生应用平台与核心引擎

    来源 阿里巴巴云原生公众号 美国西部时间 2020 年 11 月 18 日 在云原生技术 最高盛宴 的 KubeCon 北美峰会 2020 上 CNCF 应用交付领域小组 CNCF SIG App Delivery 与 Open Appli
  • 信号处理——梅尔滤波器(MFCC)

    信号处理 梅尔滤波器 MFCC 一 概述 在语音识别 Speech Recognition 和话者识别 Speaker Recognition 方面 最常用到的语音特征就是梅尔倒谱系数 Mel scale FrequencyCepstral