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

通过对音频信号提取梅尔频谱图并转换为对数梅尔频谱图得到的。它的形状主要由以下参数决定 转换成图片 64*64像素

转换成图片 64*64

在你的代码中,log_mel_spectrogram 是通过对音频信号提取梅尔频谱图并转换为对数梅尔频谱图得到的。它的形状主要由以下参数决定:

  1. n_mels:梅尔频带的数量,决定了频谱图的频率维度。
  2. hop_length:帧移,决定了时间维度的分辨率。
  3. 音频时长:音频的总时长,决定了频谱图的时间维度的长度。

1. 理论计算

假设音频时长为 ( T ) 秒,采样率为 ( sr ) Hz,帧移为 ( hop_length ) 样本。

  • 时间维度:时间维度的长度可以通过以下公式计算:
    [
    \text{时间维度长度} = \left\lfloor \frac{T \times sr}{hop_length} \right\rfloor + 1
    ]
    其中,(\lfloor x \rfloor) 表示向下取整。

  • 频率维度:频率维度由 n_mels 决定,即为 n_mels

因此,log_mel_spectrogram 的形状为 (n_mels, 时间维度长度)

2. 示例计算

假设音频时长为 2 秒,采样率为 16000 Hz,hop_length = int(sr * 0.025)n_mels = 64

  • 时间维度长度
    [
    \text{时间维度长度} = \left\lfloor \frac{2 \times 16000}{400} \right\rfloor + 1 = \left\lfloor \frac{32000}{400} \right\rfloor + 1 = 80 + 1 = 81
    ]

  • 频率维度n_mels = 64

因此,log_mel_spectrogram 的形状为 (64, 81)

3. 验证代码

你可以在代码中添加以下内容来验证计算结果:

import librosa
import numpy as np# 加载音频文件
audio_path = 'K:\\download\\青衫忆笙\\data\\yasuoji\\OK\\%7C05B6SP5UX-3.18R.wav'
y, sr = librosa.load(audio_path, sr=16000)# 提取梅尔频谱图
n_mels = 64
hop_length = int(sr * 0.025)
n_fft = 1024
mel_spectrogram = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=n_mels, hop_length=hop_length, n_fft=n_fft)# 转换为对数梅尔频谱图
log_mel_spectrogram = librosa.power_to_db(mel_spectrogram, ref=np.max)# 打印形状
print("log_mel_spectrogram 的形状:", log_mel_spectrogram.shape)

运行这段代码后,你将看到 log_mel_spectrogram 的实际形状,与理论计算结果进行对比。

4. 注意事项

  • 如果音频时长不是精确的 2 秒,实际计算的时间维度长度可能会略有不同。
  • 如果音频文件有问题(例如文件损坏或格式不支持),可能会导致加载失败或形状异常。

相关文章:

  • 第九天的尝试
  • android property 系统
  • SpringAI(GA版)的Advisor:快速上手+源码解读
  • OCC导入进度显示
  • 一个基于 ESP-IDF 的 RPC over UDP 示例
  • Spring Boot WebFlux流式返回全攻略:从基础到企业级实践
  • Sequelize 表格操作大全
  • Kafka 集群中,Broker和Controller的关系
  • Windows逆向工程提升之IMAGE_EXPORT_DIRECTORY
  • 变量的作用域:全局变量 vs 局部变量——编程思维的核心与实践智慧
  • 大模型部署ollama/vLLM/LMDeploy/SGLang区别
  • 不使用Long.parseLong()将String转成long类型,不使用String.valueOf()将Long转成String类型
  • 解锁C++编辑距离:文本相似度的度量密码
  • [ Qt ] | 常见控件(一)
  • vim快速移动光标
  • 遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之二训练模型
  • 预处理越复杂越好?评估脑电预处理在深度学习应用中的作用
  • Go 语言接口入门指南
  • Flutter 3.32 升级要点全解析
  • go 基础语法 【教程 go tour】
  • css3网站模板/产品线上推广方案
  • 网站的在线客服怎么做的/搜索引擎优化实训
  • 兰州市解封最新消息/seo服务建议
  • 代码怎么做网站/关键词免费下载
  • 乐山网站建设/在线培训app
  • 网站建设语言/在线排名优化