音频信号转化为 MFCC 图像: 使用 Python 将 CASIA 汉语情感语料库音频转换为 PNG 图像
将音频信号转化为 MFCC 图像: 使用 Python 处理 CASIA 汉语情感语料库
本文介绍如何使用 Python 将 CASIA 汉语情感语料库中的音频信号转化为格式为 PNG 的 MFCC 图像,并进行分帧加窗等处理。代码使用了 Librosa 和 Matplotlib 库,实现将 MFCC 图像保存到与数据集子目录相同的目录中,并与音频文件名保持一致。
步骤:
- 导入库:
import os
import librosa
import librosa.display
import numpy as np
import matplotlib.pyplot as plt
- 定义 MFCC 参数:
n_mfcc = 13
hop_length = 256
n_fft = 512
- 设置数据集路径和 MFCC 保存路径:
data_path = 'D:/论文代码/casia汉语情感语料库/'
mfcc_path = 'D:/论文代码/MFCC/'
- 遍历数据集并处理音频文件:
# 遍历数据集中的子目录
for root, dirs, files in os.walk(data_path):
# 遍历子目录中的音频文件
for file in files:
# 如果是音频文件
if file.endswith('.wav'):
# 读取音频文件
y, sr = librosa.load(os.path.join(root, file))
# 计算 MFCC
mfcc = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=n_mfcc, hop_length=hop_length, n_fft=n_fft)
# 绘制 MFCC 图
plt.figure(figsize=(2.56, 2.56))
librosa.display.specshow(mfcc, x_axis='time')
plt.axis('off')
# 获取保存 MFCC 图的路径
mfcc_file = os.path.join(mfcc_path, root.replace(data_path, ''), file[:-4] + '.png')
# 如果保存 MFCC 图的目录不存在,则创建目录
mfcc_dir = os.path.dirname(mfcc_file)
if not os.path.exists(mfcc_dir):
os.makedirs(mfcc_dir)
# 保存 MFCC 图
plt.savefig(mfcc_file, dpi=100, bbox_inches='tight', pad_inches=0)
# 关闭绘图窗口
plt.close()
代码解释:
- 使用
os.walk函数遍历数据集目录,并处理每个音频文件。 - 使用
librosa.load读取音频文件。 - 使用
librosa.feature.mfcc计算 MFCC 特征。 - 使用
librosa.display.specshow绘制 MFCC 图像。 - 使用
plt.savefig保存 MFCC 图像,并设置dpi,bbox_inches和pad_inches参数以控制图像质量和尺寸。 - 使用
os.makedirs创建保存 MFCC 图像的目录。
MFCC 图像大小:
每个 MFCC 图像的大小为 256x256 像素,保存格式为 PNG。
MFCC 图像保存路径:
MFCC 图像存储在与数据集子目录相同的子目录中,文件名与对应的音频文件相同。
总结:
该代码实现了将 CASIA 汉语情感语料库中的音频信号转化为 MFCC 图像,并将其保存到指定路径。该代码可以用于音频特征提取、情感识别等任务。
原文地址: https://www.cveoy.top/t/topic/nJbH 著作权归作者所有。请勿转载和采集!