使用matplotlib显示
时间: 2023-10-10 21:09:32 浏览: 74
要使用Matplotlib显示频谱图,可以在上面的代码中添加以下代码:
```python
# 显示频谱图
plt.plot(freqs[:len(freqs)//2], mag[:len(mag)//2])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()
```
这段代码会绘制出音频信号的频谱图,并将其显示在Matplotlib窗口中。其中,`freqs`和`mag`分别是频率和幅度谱。`freqs[:len(freqs)//2]`和`mag[:len(mag)//2]`是为了只显示频率和幅度谱的前一半,因为频谱是对称的。
完整的代码示例:
```python
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt
# 读取音频文件
fs, audio = wavfile.read('audio.wav')
# 预处理音频信号
audio = audio.astype(float)
audio -= np.mean(audio)
window = np.hamming(len(audio))
audio *= window
# 计算频谱
fft = np.fft.fft(audio)
freqs = np.fft.fftfreq(len(fft))
mag = np.abs(fft)
# 查找基频
fund_freq = np.argmax(mag)
if fund_freq == 0:
fund_freq = 1
fund_freq_hz = abs(freqs[fund_freq] * fs)
# 计算音高
pitch = 69 + 12 * np.log2(fund_freq_hz / 440.0)
# 输出结果
print("基频:", fund_freq_hz, "Hz")
print("音高:", pitch, "半音")
# 显示频谱图
plt.plot(freqs[:len(freqs)//2], mag[:len(mag)//2])
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude')
plt.show()
```
阅读全文
相关推荐
















