import os from random import shuffle import pickle import librosa import tensorflow.keras as keras import librosa.display import numpy as np from pandas import Series from matplotlib import pyplot as plt def load_files(audio_dir): files = os.listdir(audio_dir) wav_files = [] for wav in files: if not wav.endswith('.wav'): continue wav_files.append(wav) if not wav_files: print('未找到数据集') shuffle(wav_files) nfiles = len(wav_files) ntrain = int(nfiles * 0.7) return wav_files[: ntrain], wav_files[ntrain:] andio_dir = '../data/recordings/' dataset_pickle = '../tmp/recordings.pk1' train_files, valid_files = load_files(andio_dir) print('训练集样本数为{}\n验证集样本数为{}'.format(len(train_files), len(valid_files))) wave, sr = librosa.load('../data/recordings/0_Agnes_120.wav') plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False librosa.display.waveshow(wave, sr=sr) plt.xlabel('时间(s)', fontsize = 13) plt.ylabel('振幅', fontsize = 13) plt.title('原始语音波形图', fontsize = 13) plt.show() mfcc = librosa.feature.mfcc(wave, sr) plt.imshow(np.flipud(mfcc.T), cmap=plt.cm.jet, aspect=0.2, 运行不出来热力图extent=[0, mfcc.shape[0], 0, mfcc.shape[1]]) plt.title('MFCC特征热力图') plt.show()
时间: 2024-02-17 10:03:20 浏览: 17
这段代码有一个拼写错误。在 `load_files` 函数中,您声明了函数参数为 `audio_dir`,但是在调用函数时拼写为 `andio_dir`,应该将其改为 `audio_dir`。
另外,在 `mfcc` 函数中,您没有指定 `n_mfcc` 参数,默认值为 `20`。如果您要使用默认值,可以忽略传递该参数,或者显式地指定为 `n_mfcc=20`。如果您要使用其他值,可以手动传递该参数,例如:
```python
mfcc = librosa.feature.mfcc(wave, sr, n_mfcc=40)
```
最后,在 `plt.imshow` 函数中,您将 `extent` 参数拆分成两行,应该将其合并为一行,即:
```python
plt.imshow(np.flipud(mfcc.T), cmap=plt.cm.jet, aspect=0.2, extent=[0, mfcc.shape[0], 0, mfcc.shape[1]])
```
相关问题
import os import pickle import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
这是一个 Python 脚本的开头部分,它引入了一些常用的数据科学和可视化库,包括 os、pickle、numpy、pandas 和 matplotlib。其中 %matplotlib inline 表示将绘图直接嵌入到 Jupyter Notebook 或 IPython 中,而不是弹出一个独立的窗口。这个语句通常放在开头,以确保绘图能够正确显示。
import xml.etree.ElementTree as ET import pickle import os from os import listdir, getcwd from os.path import join import random
您好,这段代码是用Python编写的,主要包含了以下几个模块的引用:
- `xml.etree.ElementTree as ET`:用于解析和操作XML文件的模块。在这段代码中可能被用于读取或者创建XML文件。
- `pickle`:Python的序列化和反序列化模块,用于将Python对象转换为二进制数据以便进行存储或者网络传输。
- `os`:Python的操作系统接口模块,提供了对操作系统的各种操作,如文件操作、进程管理等。
- `random`:Python的随机数生成模块,用于生成随机数或者随机序列。
此外,这段代码还包含了一些函数,但是缺少完整的代码,无法解释其具体作用。