【深度学习】语音,Mel频谱图的前世今生

Mel频谱图的前世今生

背景与基本概念

Mel频谱图是音频信号处理中的一种表示形式,用于将音频信号转换为二维图像,这种表示形式在语音识别、语音合成和音频分类等领域中广泛应用。要理解Mel频谱图,首先需要了解以下几个基本概念:

  1. 频谱图:频谱图(Spectrogram)是显示信号强度(能量或功率)随时间和频率变化的图像。频谱图是通过对信号进行短时傅里叶变换(STFT)得到的。

  2. Mel尺度:Mel尺度(Mel Scale)是一种根据人耳感知频率的非线性尺度。Mel尺度试图将频率变换成一种更符合人类听觉感知的表示。Mel频率与实际频率之间的关系可以通过以下公式表示:

    m = 2595 log ⁡ 10 ( 1 + f 700 ) m = 2595 \log_{10} \left(1 + \frac{f}{700}\right) m=2595log10(1+700f)

https://aistudio.baidu.com/projectdetail/8196592
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

短时傅里叶变换 (STFT)

短时傅里叶变换(STFT)是将信号分割成短时间段,并对每个时间段进行傅里叶变换,从而得到随时间变化的频谱。其数学表达式如下:

S T F T { x ( t ) } ( m , ω ) = X ( m , ω ) = ∑ n = − ∞ ∞ x [ n ] ⋅ w [ n − m ] ⋅ e − j ω n STFT\{x(t)\}(m, \omega) = X(m, \omega) = \sum_{n=-\infty}^{\infty} x[n] \cdot w[n - m] \cdot e^{-j\omega n} STFT{x(t)}(m,ω)=X(m,ω)=n=x[n]w[nm]ejωn

其中:

  • x [ n ] x[n] x[n] 表示离散时间信号。
  • w [ n ] w[n] w[n] 表示时间窗口函数(如汉宁窗、汉明窗等)。
  • m m m 表示时间段的起始位置。
  • ω \omega ω 表示频率。
  • X ( m , ω ) X(m, \omega) X(m,ω) 表示在时间 m m m和频率 ω \omega ω上的STFT值。

通过对每个时间段的信号进行傅里叶变换,得到不同时间段的频率成分,最终得到的频谱图是频率随时间变化的二维图像。

频谱图

频谱图是STFT的结果,通常表示为信号强度(能量或功率)随时间和频率的变化。频谱图的计算过程如下:

  1. 对每一帧信号应用STFT,得到每一帧的频谱。
  2. 将每一帧的频谱值转换为能量或功率谱。

对于第 m m m帧信号,其频谱能量表示为:

P ( m , k ) = ∣ X ( m , ω k ) ∣ 2 P(m, k) = |X(m, \omega_k)|^2 P(m,k)=X(m,ωk)2

其中:

  • P ( m , k ) P(m, k) P(m,k) 表示在时间 m m m和频率 ω k \omega_k ωk上的功率谱。
  • ∣ X ( m , ω k ) ∣ |X(m, \omega_k)| X(m,ωk) 表示STFT结果的幅值。
Mel频谱图

在得到频谱图之后,将频谱图中的频率轴转换到Mel尺度上,计算过程如下:

  1. Mel尺度转换:将线性频率转换到Mel频率。
  2. Mel滤波器组:对频谱进行Mel滤波,得到每个Mel频率上的能量。
  3. 对数变换:对Mel频谱取对数,得到Mel频谱图。

以上步骤的公式如下:

  1. Mel频率变换:

m = 2595 log ⁡ 10 ( 1 + f 700 ) m = 2595 \log_{10} \left(1 + \frac{f}{700}\right) m=2595log10(1+700f)

  1. Mel滤波器输出:

E m = ∑ k = 0 N − 1 ∣ X ( m , k ) ∣ 2 ⋅ H m ( k ) E_m = \sum_{k=0}^{N-1} |X(m, k)|^2 \cdot H_m(k) Em=k=0N1X(m,k)2Hm(k)

其中:

  • E m E_m Em 表示第 m m m个Mel滤波器的输出能量。
  • H m ( k ) H_m(k) Hm(k) 表示第 m m m个Mel滤波器的频率响应。
  1. 取对数:

Mel频谱图 = log ⁡ ( E m ) \text{Mel频谱图} = \log(E_m) Mel频谱图=log(Em)

最终得到的Mel频谱图表示为:

Mel-Spectrogram ( m , ω ) = log ⁡ ( ∑ k = 0 N − 1 ∣ X ( m , k ) ∣ 2 ⋅ H m ( k ) ) \text{Mel-Spectrogram}(m, \omega) = \log\left(\sum_{k=0}^{N-1} |X(m, k)|^2 \cdot H_m(k)\right) Mel-Spectrogram(m,ω)=log(k=0N1X(m,k)2Hm(k))

以上公式和步骤描述了从时域信号到Mel频谱图的完整转换过程。

发展历史

早期发展阶段

在20世纪60年代,研究人员开始探索如何更好地处理和分析音频信号。傅里叶变换提供了一种将信号从时域转换到频域的方法,使得研究人员可以分析信号的频率成分。然而,直接使用傅里叶变换得到的频谱图在处理人类语音时存在一些问题,因为人耳对频率的感知是非线性的。

Mel尺度的提出

1975年,Stevens等人在研究人耳对不同频率声音的感知时提出了Mel尺度。他们发现人耳对频率的感知并不是线性的,而是对低频更敏感,对高频的变化不那么敏感。这一发现促使研究人员将音频信号转换到Mel尺度上,以更好地模拟人类的听觉感知。

Mel频谱图的形成

在Mel尺度提出后,研究人员将频谱图与Mel尺度结合,形成了Mel频谱图。具体方法是先对音频信号进行短时傅里叶变换(STFT),得到频谱图,然后将频谱图中的频率轴转换到Mel尺度上。这一过程包括以下步骤:

  1. 音频信号预处理:通常包括预加重、分帧和加窗。
  2. 短时傅里叶变换:对每一帧音频信号进行傅里叶变换,得到频谱图。
  3. 应用Mel滤波器:将频谱图中的频率成分通过一组Mel滤波器进行滤波,这些滤波器的中心频率和带宽按照Mel尺度分布。
  4. 取对数:对Mel滤波器输出的能量取对数,得到Mel频谱图。

现代应用与未来发展

现代应用

如今,Mel频谱图在很多领域中有着广泛的应用:

  1. 语音识别:Mel频谱图是许多语音识别系统中的关键特征表示。结合深度学习技术,Mel频谱图可以作为输入特征用于训练模型,提高语音识别的准确性。

  2. 音乐信息检索:在音乐分类、音乐推荐和音频检索中,Mel频谱图用于提取音频特征,帮助系统理解和分类音乐内容。

  3. 语音合成:在文本到语音(TTS)系统中,Mel频谱图可以作为中间表示,将文本转换为语音信号。

  4. 音频分类:在各种音频分类任务中,Mel频谱图提供了有效的特征表示,用于识别和分类不同的音频信号。

未来发展

随着深度学习和人工智能技术的发展,Mel频谱图的应用前景愈发广阔。一些可能的发展方向包括:

  1. 更高效的特征提取方法:研究新的方法以更高效地提取Mel频谱图特征,提升计算效率和特征表示能力。

  2. 多模态融合:将Mel频谱图与其他模态的数据(如图像、文本)结合,提升综合分析和处理能力。

  3. 自监督学习:利用自监督学习方法,在没有大量标注数据的情况下,从大量未标注的音频数据中学习有效的特征表示。

总结

Mel频谱图作为一种有效的音频信号表示方法,从其提出到如今,经历了多年的发展和应用。其在语音识别、语音合成和音频分类等领域中发挥了重要作用。随着技术的进步,Mel频谱图的应用前景将更加广阔,推动音频信号处理领域的发展。

import torch
from vocos import Vocos
import scipy.io.wavfile as wavfile# 加载预训练的Vocos模型
vocos = Vocos.from_pretrained("charactr/vocos-mel-24khz")# 创建随机的Mel频谱图
mel = torch.randn(1, 100, 256)  # B, C, T# 使用Vocos模型解码生成音频
audio = vocos.decode(mel)# 将音频数据从tensor转换为numpy数组,并确保数据格式正确
audio_np = audio.squeeze().cpu().numpy()# 保存音频为WAV文件
sample_rate = 24000
wavfile.write("output.wav", sample_rate, audio_np)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

隆尧县“隆品佳尧”区域公用品牌发布推介会暨地标之都七月选品会成功举办

在国家乡村振兴战略与农业现代化建设的大背景下,隆尧县凭借其得天独厚的地理优势和丰富的自然资源,正在成为区域经济与品牌建设的一颗新星。为了进一步推动隆尧县的农业发展和乡村建设,由隆尧县商务局指导、隆尧县电子商务公共服务中心主办的…

在线医疗系统2024()

下载在最后 技术栈: ssmmysqljsp 展示: 下载地址: CSDN现在上传有问题,有兴趣的朋友先收藏.正常了贴上下载地址 备注:

计算机基础(day1)

1.什么是内存泄漏?什么是内存溢出?二者有什么区别? 2.了解的操作系统有哪些? Windows,Unix,Linux,Mac 3. 什么是局域网,广域网? 4.10M 兆宽带是什么意思?理论…

“等保测评:企业如何构建全面的信息安全管理体系“

随着信息技术的快速发展,企业面临的信息安全威胁日益严峻,信息安全管理体系的构建成为企业保障数据安全、维护业务连续性的关键。本文将围绕“等保测评:企业如何构建全面的信息安全管理体系”这一主题,从以下几个方面展开讨论&…

2024年阿里最新软件测试面试题:Web 测试+接口测试+App 测试

又到了一年一度的金九银十,互联网行业竞争是一年比一年严峻,作为软件测试工程师的我们唯有不停的学习,不断提升自己才能保证自己的核心竞争力从而拿到更好的薪水,进入心仪的企业(阿里,字节跳动,…

第三方支付平台接口通道有什么优势及弊端?

目前,第三方支付是指支付机构通过互联网向用户提供在线支付服务。主要有两种支付方式:预付卡和信用卡支付。预付卡是指通过银行卡接受支付业务的银行卡。信用卡支付是指通过信用卡(包括在线支付)使用银行卡、手机通过POS等方式实现…

C#/WinFrom TCP通信+ 网线插拔检测+客服端异常掉线检测

Winfor Tcp通信(服务端) 今天给大家讲一下C# 关于Tcp 通信部分,这一块的教程网上一大堆,不过关于掉网,异常断开连接的这部分到是到是没有多少说明,有方法 不过基本上最多的两种方式(1.设置一个超时时间,2.…

SpringDataJPA(一):ORM思想和hibernate以及JPA的概述和基本操作

传统jdbc引出的问题: 主要目的:操作实体类就相当于操作数据库表 建立两个映射关系: 实体类和表的映射关系实体类中属性和表中字段的映射关系不再重点关注:sql语句 一、ORM概述 ORM(Object-Relational Mapping&#…

YOLO v8目标检测(三)模型训练与正负样本匹配

YOLO v8目标检测 损失函数理论 在YOLO v5模型中,cls, reg, obj代表的是三个不同的预测组成部分,对应的损失函数如下: cls: 这代表类别预测(classification)。对应的损失是类别预测损失(loss_cls&#xff…

简单快速收集_安居客二手房小区数据

安居客二手房小区全国实时数据,含小区名称、价格、地区、地址、商圈、标签、经纬度、物业类型、交易权属、竣工时间、产权年限、开发商、总户数、总建面积、绿化率、容积率、统一供暖 供水供电、停车位、停车费、物业费、物业公司 车位管理费、在售房源、在租房源 …

供销集团探索元宇宙:传统农业与现代科技的融合之旅

随着元宇宙这一概念的兴起,越来越多的行业开始探索与这一新兴技术的融合可能性。作为一个历史悠久且在农业领域拥有深厚底蕴的供销集团,也正在积极探索如何将元宇宙技术应用于农业领域,以期为传统农业带来新的生机与活力。 ### 一、背景与意…

B端:导航条就框架提供的默认样式吗?非也,看过来。

导航条不一定必须使用框架提供的默认样式,你可以根据项目需求和设计风格进行自定义。通过使用框架提供的自定义选项、CSS样式覆盖、自行设计或者使用其他UI库或组件,你可以实现独特且符合需求的导航条样式。 下面发一些参考给友友们,可以让设…

mac 如何给默认终端(zsh)装插件,使得更美观易用

要给 Zsh 安装插件并使其更美观和易用,最常用的方法是使用 Oh My Zsh,这是一款开源的 Zsh 配置管理框架,提供了大量的插件和主题。以下是安装 Oh My Zsh 并配置插件和主题的步骤: 安装 Oh My Zsh 安装 Zsh: 确保你已经…

论文解读:DiAD之SG网络

目录 一、SG网络功能介绍二、SG网络代码实现 一、SG网络功能介绍 DiAD论文最主要的创新点就是使用SG网络解决多类别异常检测中的语义信息丢失问题,那么它是怎么实现的保留原始图像语义信息的同时重建异常区域? 与稳定扩散去噪网络的连接: S…

从零开始:MT4软件下载与初步使用教程

MetaTrader 4(简称MT4)是一款由MetaQuotes开发并广泛使用的在线金融衍生品交易终端。它不仅在外汇市场占据重要地位,还支持各种股指和大宗商品的差价合约(CFD)产品交易。本文将详细指导您如何从零开始下载并初步使用MT…

昇思25天学习打卡营第3天|基础知识-数据集Dataset

目录 环境 环境 导包 数据集加载 数据集迭代 数据集常用操作 shuffle map batch 自定义数据集 可随机访问数据集 可迭代数据集 生成器 MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transfor…

skynet 入门篇

文章目录 概述1.实现了actor模型2.实现了服务器的基础组件 环境准备centosubuntumac编译安装 ActorActor模型定义组成 Actor调度工作线程流程工作线程权重工作线程执行规则 小结 概述 skynet 是一个轻量级服务器框架,而不仅仅用于游戏; 轻量级有以下几…

C语言百分号打印器

目录 开头程序程序的流程图程序输入与输出的效果例1输入输出 例2输入输出 例3输入输出 结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语言编译的百分号打印器和与之相关的一些东西。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <…

Redis数据结构之跳跃表(SkipList)

Redis是一个开源的、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。Redis凭借其高性能、高可用性、丰富的数据结构以及简洁的API而备受青睐。其中&#xff0c;跳跃表&#xff08;SkipList&#xff09;作为Red…

【RabbitMQ】MQ相关概念

一、MQ的基本概念 定义&#xff1a;MQ全称为Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件。它允许应用程序通过读写队列中的消息来进行通信&#xff0c;而无需建立直接的连接。作用&#xff1a;主要用于分布式系统之间的通信&#x…