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 19:03:20 浏览: 171
rizhuti-v2.zip
这段代码有一个拼写错误。在 `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]])
```
阅读全文