使用 Python 生成音频文件梅尔谱图并调整图像大小

本文档介绍如何使用 Python 代码生成音频文件的梅尔谱图,并将图像大小调整为 (224, 224),以便用于深度学习模型。

代码示例:

import os
import librosa
import librosa.display
import numpy as np
from PIL import Image

# 设置数据集路径
dataset_dir = 'D:/论文代码/casia汉语情感语料库/'

# 循环遍历所有子目录
for subdir, dir, files in os.walk(dataset_dir):
    for file in files:
        filepath = os.path.join(subdir, file)
        # 如果是音频文件,则进行处理
        if filepath.endswith('.wav'):
            # 加载音频文件
            y, sr = librosa.load(filepath, sr=None)
            # 计算对数梅尔谱图
            S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128)
            log_S = librosa.power_to_db(S, ref=np.max)
            # 画图并保存
            plt.figure(figsize=(12,4))
            librosa.display.specshow(log_S, sr=sr, x_axis='time', y_axis='mel')
            plt.title('Mel power spectrogram')
            plt.colorbar(format='%+02.0f dB')
            plt.tight_layout()
            plt.savefig(os.path.join(subdir.replace(dataset_dir, 'D:/论文代码/spectrograms/'), file + '.png'))
            plt.close()
            # 调整图片大小为 (224, 224) 并保存
            img = Image.open(os.path.join(subdir.replace(dataset_dir, 'D:/论文代码/spectrograms/'), file + '.png'))
            img = img.resize((224, 224), Image.ANTIALIAS)
            img.save(os.path.join(subdir.replace(dataset_dir, 'D:/论文代码/spectrograms/'), file + '.png'))

代码说明:

  1. 导入库: 导入所需的库,包括 librosa、numpy 和 PIL。
  2. 设置数据集路径: 设置音频数据集的路径。
  3. 循环遍历文件: 使用 os.walk() 函数遍历所有子目录,找到所有音频文件。
  4. 加载音频文件: 使用 librosa.load() 函数加载音频文件。
  5. 计算梅尔谱图: 使用 librosa.feature.melspectrogram() 函数计算梅尔谱图。
  6. 绘制梅尔谱图: 使用 librosa.display.specshow() 函数绘制梅尔谱图。
  7. 保存图像: 使用 plt.savefig() 函数保存生成的梅尔谱图图像。
  8. 调整图像大小: 使用 PIL 库的 Image.resize() 函数调整图像大小为 (224, 224)。
  9. 保存调整后的图像: 使用 img.save() 函数保存调整后的图像。

注意:

  • 代码示例中使用的是 CASIA 汉语情感语料库,请根据您的数据集路径进行修改。
  • 您可以根据需要调整梅尔谱图的参数,例如 n_mels 的值。
  • 如果您需要使用其他图像处理库,例如 OpenCV,请根据您的需求进行修改。

更多信息:

  • librosa 库文档:https://librosa.org/doc/latest/
  • PIL 库文档:https://pillow.readthedocs.io/en/stable/
音频文件梅尔谱图生成并调整图像大小为 (224, 224)

原文地址: https://www.cveoy.top/t/topic/nLcC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录