语音识别中MFCC频谱和如何得到频谱图的图示讲解

2023-11-06 20:59

本文主要是介绍语音识别中MFCC频谱和如何得到频谱图的图示讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于语音识别 音乐识别中 MFCC频谱图如何得到的 最详细的视频
视频链接放在这里,求求你们愿意打开视频的话,就看一眼吧···是在b站上的 要是我入门的时候看到这个视频真的是幸福死了. 😃😃
链接: link
本来不想写关于模数转换、采样、傅立叶变换这些的,但还是记录一下吧。我是一下子get到了这个MFCC图是怎么来的,如果你已经知道了如何分帧,加窗,如何得到整个MFCC频谱图只需要直接看下面两张图,但还是建议看原视频,每一秒都是细节,都有知识点。

在这里插入图片描述

在这里插入图片描述
就是说,我们不会对整段语音信息进行傅立叶变换,所以就采用一个长度为25ms「一般使用的窗口长度,推荐在25ms-30ms」的窗口去截取语音信息,称为第一帧,间隔10ms进行第二帧的采样···这样1s的语音就切分成了100帧,然后分别对每一帧进行傅立叶变换。然后就是这一步!把这100帧的频谱放在一起,这个堆叠的方式之前一直不知道,建议看看视频。

采样

这里关于香农奈奎斯特采样定理{为了不失真地恢复模拟信号,采样频率应该大于模拟信号频谱中最高频率的2倍},所以采样频率选择我们人耳能够听到的最大频率『约20kHz』的2倍即可
在这里插入图片描述
这个采样后的转化过来的是声音的时间域表示,也称为声波图。其中横轴表示时间,纵轴表示声音的振幅或者功率
声音的区分可以看作是频率的不同,虽然振幅大小也会变化,但是本质还是不变的,但是我们从这个声波图中并不能够看出频率信息,因此就需要转换到声音的另一种表述方式,频谱图。其中横轴表示频率,纵轴表示强度。
在这里插入图片描述
从声波图到频谱图的转换就是通过傅立叶变换得到的。
「一个声音信号可以是不同频率和强度信号的叠加」

下图的横坐标表示的是频率,纵坐标表示的是频率分量的强度,强度除了可以用纵坐标表示,也可以用颜色表示,因此就有一个颜色bar
在这里插入图片描述
这样就可以把每个频率对应的强度表示出来
在这里插入图片描述
然后就得到了语谱图,这个图我们经常能够见到。

这里的横坐标表示帧号,纵坐标表示频率,颜色是表示信号的强度。
至此还未结束,上面只是得到了语谱图,我们一般使用MFCC频谱特征,其实就是多加了一些复杂的数学变换。
在这里插入图片描述
我们实际上还要对每一帧傅立叶变换后的结果进行三角滤波,再根据人耳听觉特性取对数,最后进行DCT变换「这整个过程称之为MFCC特征提取」。最终提取出来的效果是一个39维的特征向量「取一阶差分和二阶差分」,这才是我们需要训练的数据。

这个39维的也不知道是怎么算出来的🤷‍♀️🤷‍♂️
看librosa.feture.mfcc是由直接指定n_mfcc参数来弄,默认是20
那取一阶差分和二阶差分是20+19=39?
为什么不是19+18=37? 这部分我还不知道怎么在程序中体现验证?
在这里插入图片描述
看到的关于librosa常用方法的示范,写得也很清楚规范。
https://www.cnblogs.com/LXP-Never/p/10918590.htmlMFCC系数实现

这篇关于语音识别中MFCC频谱和如何得到频谱图的图示讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/359027

相关文章

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve