Traceback (most recent call last): File "D:\eda\789.py", line 17, in <module> librosa.display.waveshow(librosa.power_to_db(S, ref=np.max), axis='time', y_axis='mel')
时间: 2024-02-25 08:58:38 浏览: 65
这个错误提示表明在调用 librosa.display.waveshow() 函数时,传递的参数有误。可能是输入的 S 矩阵的维度不正确导致的。建议检查代码,确保 S 矩阵的维度正确。
另外,该函数需要传递一个二维数组作为输入,表示音频信号的频谱。如果 S 矩阵不是二维数组,需要将其转换成二维数组。可以使用 numpy.reshape() 函数来进行转换。例如:
```
import librosa
import matplotlib.pyplot as plt
import librosa.display
import numpy as np
filepath = 'D:\\360se6\\bishe\\古筝\\'
filename = filepath + 'gz1.wav'
# 加载音频文件并转换为 numpy 数组
y, sr = librosa.load(filename)
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
plt.figure()
# 计算音频文件的梅尔频谱
S = librosa.feature.melspectrogram(y=y, sr=sr)
# 将 S 矩阵转换成二维数组
S = librosa.power_to_db(S, ref=np.max)
S = np.reshape(S, (S.shape[0], -1))
# 绘制音频波形和频谱图
ax = plt.subplot(2, 1, 2)
librosa.display.waveshow(S, axis='time', y_axis='mel')
plt.subplot(2, 1, 1, sharex=ax)
librosa.display.waveshow(y_beat_times, sr=sr, label='Beat clicks')
plt.legend()
plt.xlim(15, 30)
plt.tight_layout()
```
这样就可以避免这个错误了。
阅读全文