UserWarning: amplitude_to_db was called on complex input so phase information will be discarded. To suppress this warning, call amplitude_to_db(np.abs(S)) instead. librosa.display.specshow(librosa.amplitude_to_db(C, ref=np.max), sr=sr, x_axis='time', y_axis='cqt_note') Traceback (most recent call last): File "D:\eda\789.py", line 16, in <module> plt.colorbar(format='%+2.0f dB')
时间: 2024-02-25 17:59:01 浏览: 164
1238: UserWarning: findfont: Font family [‘sans-serif’] not found. Falling back to DejaVu Sans.
这个警告是因为在使用`librosa.amplitude_to_db`函数时传入了复数的数据,因此相位信息将被舍弃。为了避免这个警告,你可以使用`np.abs`函数将CQT变换的结果转换为幅度谱,并将其传递给`librosa.amplitude_to_db`函数。修改代码如下:
```
import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
# 读取音频文件
audio_file = 'example.wav'
y, sr = librosa.load(audio_file, sr=None)
# 计算CQT变换
C = librosa.cqt(y, sr=sr)
# 可视化CQT
plt.figure(figsize=(10, 4))
librosa.display.specshow(librosa.amplitude_to_db(np.abs(C), ref=np.max), sr=sr, x_axis='time', y_axis='cqt_note')
plt.colorbar(format='%+2.0f dB')
plt.title('CQT')
plt.tight_layout()
plt.show()
```
这样就可以避免警告,并正确绘制出CQT变换的可视化图像了。
阅读全文