import os
import librosa
import librosa.display
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image


# 定义函数将音频信号转化为MFCC图像并保存为png格式
def audio_to_mfcc(audio_path, save_path):
    # 读取音频文件
    y, sr = librosa.load(audio_path, sr=None)
    # 计算MFCC系数
    mfcc = librosa.feature.mfcc(y=y, sr=sr)
    # 绘制MFCC图像
    plt.figure(figsize=(10, 4))
    librosa.display.specshow(mfcc, x_axis='time')
    plt.colorbar()
    plt.title('MFCC')
    image = Image.fromarray(np.uint8(plt.gcf().canvas.renderer.buffer_rgba()))
    image = image.resize((224, 224))
    # 保存MFCC图像为png格式
    save_name = os.path.splitext(os.path.basename(audio_path))[0] + '.png'
    save_path = os.path.join(save_path, os.path.dirname(os.path.relpath(audio_path, start=data_path)))
    if not os.path.exists(save_path):
        os.makedirs(save_path)
    plt.savefig(os.path.join(save_path, save_name))
    plt.close()


# 设置数据集路径和MFCC图像保存路径
data_path = 'D:/论文代码/casia汉语情感语料库/'
save_path = 'D:/论文代码/MFCC/'

# 遍历数据集中的所有音频文件,并转化为MFCC图像
for root, dirs, files in os.walk(data_path):
    for file in files:
        if file.endswith('.wav'):
            audio_path = os.path.join(root, file)
            audio_to_mfcc(audio_path, save_path)
            print('Convert audio to MFCC:', audio_path)

代码解读:

  1. 导入库: 代码首先导入必要的库,包括os、librosa、numpy、matplotlib.pyplot和PIL。
  2. audio_to_mfcc函数: 该函数接受音频文件路径和保存路径作为参数,并执行以下操作:
    • 读取音频文件
    • 计算MFCC系数
    • 绘制MFCC图像
    • 将图像转换为数组并缩放为(224, 224)
    • 保存MFCC图像为png格式
  3. 设置路径: 代码设置数据集路径和MFCC图像保存路径。
  4. 遍历数据集: 代码使用os.walk()函数遍历数据集中的所有音频文件,并调用audio_to_mfcc函数将每个音频文件转换为MFCC图像。

代码说明:

  • 代码使用了librosa库进行音频信号处理,包括读取音频文件、计算MFCC系数等。
  • 代码使用了matplotlib.pyplot库绘制MFCC图像,并使用PIL库将图像转换为数组并缩放。
  • 代码使用了os库操作文件和目录,包括遍历数据集、创建保存路径等。

注意事项:

  • 确保已经安装了librosa、numpy、matplotlib和PIL库。
  • 确保数据集路径和保存路径设置正确。
  • 可以根据需要调整MFCC系数的计算参数和图像的大小。

代码使用示例:

假设数据集路径为“D:/论文代码/casia汉语情感语料库/”,保存路径为“D:/论文代码/MFCC/”,那么运行代码后,将在“D:/论文代码/MFCC/”目录下生成相应的MFCC图像。

代码优化:

  • 可以使用进度条显示处理进度。
  • 可以使用多线程或多进程加速处理过程。
  • 可以根据需要调整图像大小和格式。

总结:

该代码实现了将音频信号转换为MFCC图像并保存为png格式的功能,可以用于语音识别、情感分析等领域。

代码示例:

# 示例代码,假设音频文件路径为audio.wav,保存路径为mfcc.png
audio_path = 'audio.wav'
save_path = 'mfcc.png'
audio_to_mfcc(audio_path, save_path)
音频信号转换为MFCC图像并保存为png格式

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

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