将数据集中的音频信号转化为格式为png的MFCC图并进行分帧加窗等处理数据集路径D论文代码casia汉语情感语料库并保存到D论文代码MFCC中要求MFCC图与数据集的子目录相同音频文件在数据集下的子目录
中,MFCC图在MFCC子目录下的相应子目录中。
以下是Python代码实现:
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
# 数据集路径
data_path = 'D:/论文代码/casia汉语情感语料库/'
# MFCC保存路径
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()
MFCC图的大小为256x256像素,保存格式为png,存储在与数据集子目录相同的子目录中,文件名与对应的音频文件相同。在代码中,使用了Librosa库来计算MFCC和绘制MFCC图,使用了Matplotlib库来保存MFCC图。遍历数据集中的子目录时,使用了os.walk函数,支持遍历多级目录。MFCC图保存在与数据集子目录相同的子目录中,使用了os.path.join函数来构造MFCC保存路径,使用了os.makedirs函数来创建保存MFCC图的目录。在保存MFCC图时,使用了plt.savefig函数,指定了dpi参数为100,bbox_inches参数为'tight',pad_inches参数为0,以保证保存的MFCC图不会被压缩或留有空白。保存MFCC图后,使用plt.close函数关闭绘图窗口,以避免内存泄漏
原文地址: https://www.cveoy.top/t/topic/dx5w 著作权归作者所有。请勿转载和采集!