当前位置: 首页 > news >正文

MFCC--学习笔记

  1. 使用原因:
    1. 200Hz到5000Hz的语音信号对语音的清晰度影响最大。
    2. 频率不相等会有影响,所以从低频到高频按临界带宽由密到疏安排一组带通滤波器,对输入信号进行滤波。
  2. 将每个带通滤波器输出的信号能量作为信号的基本特征。
  3. mfcc提取的基本流程:预加重->分帧->加窗->FFT->mel 滤波器组 ->对数运算->DCT
    1. 预加重:将语音信号通过一个高通滤波器,目的是提升高频部分。使信号的频谱变得平坦,保持在低频和高频的整个频带中,使其能用同样的信噪比求频谱。
    2. 分帧:
      1. 帧:N个采样点集合成的一个观测单位。N一般为256或512。涵盖的时间约20-30ms左右。
      2. 为避免相邻两帧变化过大,会让两帧之间有一段重叠区域,包含M个采样点(通常M≈N/2或N/3)
        1. 通常语音识别的采样频率约为8KHz或16KHz。
        2. 8KHz:若每个帧长度为256个采样点,则对应的时间长度为32ms
      3. 将信号分成短时帧,原理:信号中的频率随时间变化,在大多数情况下,对整个信号进行傅里叶变换没有意义。因为随着时间的推移会丢失信号的频率轮廓。所以假设信号中的频率在很短的时间内是平稳的。通过在短时帧内进行傅里叶变换,可以通过连接相邻帧来获得信号的频率轮廓的良好近似。
    3. 加窗:将每一帧乘上汉明窗,以增加帧左端和右端的连续性。为抵消FFT假设的数据是无限的,并减少频谱泄露。
    4. 快速傅里叶变换 FFT:
      1. 将在时域上的信号转为频域上的能量分布。不同的能量分布代表不同语音特性。
      2. 对分帧加窗后的各帧信号进行快速傅里叶变换得到各帧的频谱。
      3. 对频谱取模平方得到语音信号的功率谱。
    5. 三角带通滤波器的两个目的:对频谱进行平滑化,并消除谐波,突出原先语音的共振峰。(即一段语音的音调或音高不会呈现在MFCC参数中(wsy:所以这就是autovc未选择mfcc作为特征,而是通过自编码器学习特征来进行语音转换,因为音调和音高在语音转换是重要特性,不可忽略))
    6. 计算每个滤波器组输出的对数能量
    7. 将对数能量带入离散余弦变换求出L阶的Mel-scale Cepstrum参数。L阶指MFCC系数阶数,通常取12-16。这里M是三角滤波器个数。
      1. 应用离散余弦变换DCT去 相关滤波器组系数,并产生滤波器组的压缩表示。
      2. 通常对于自动语音识别ASR,得到的倒谱系数2-13被保留,其余被丢弃。
    8. 对数能量:一帧内信号的平方和,再取以10为底的对数值,再乘以10.
    9. 动态差分参数的提取(包括一阶差分和二阶差分):标准的倒谱参数MFCC只反映了语音参数的静态特性,语音的动态特性可以用这些静态特征的差分谱来描述。

相关文章:

  • 领航杯2022年-Crypto-rsa
  • 黄北断裂和渤南2号断裂
  • JS逆向之巨量算数signature与data解密
  • 网站收录查询-批量网站收录查询软件
  • Docker - 镜像的分层 - busybox镜像制作
  • 每日三题 9.02
  • RabbitMQ 26问,基本涵盖了面试官必问的面试题
  • 轻取软考45分之软考信息系统项目管理师范围管理​章节学习笔记
  • C#实现二叉树的最大深度
  • 用Python实现广度优先搜索
  • bitset位集学习
  • Modbus协议介绍
  • 我赢助手之引流篇:短视频私域、自有鱼塘背后的底层逻辑是什么?
  • 搬砖神器 VScode
  • 【SpringMVC笔记12】SpringMVC集成Thymeleaf模板引擎
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • PAT A1017 优先队列
  • Vim Clutch | 面向脚踏板编程……
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 技术胖1-4季视频复习— (看视频笔记)
  • 日剧·日综资源集合(建议收藏)
  • 使用Swoole加速Laravel(正式环境中)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 栈实现走出迷宫(C++)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 阿里云服务器购买完整流程
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​TypeScript都不会用,也敢说会前端?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $refs 、$nextTic、动态组件、name的使用
  • (31)对象的克隆
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (初研) Sentence-embedding fine-tune notebook
  • (动态规划)5. 最长回文子串 java解决
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)setTimeout 和 setInterval 的区别
  • (转)visual stdio 书签功能介绍
  • (转)关于多人操作数据的处理策略
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .naturalWidth 和naturalHeight属性,
  • .NET 8.0 中有哪些新的变化?
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .net和php怎么连接,php和apache之间如何连接
  • @staticmethod和@classmethod的作用与区别
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [APIO2012] 派遣 dispatching