加载record.wav文件,在第一个子图中绘制时域的波形图,将采样率调整为原来的1/4,在第二个子图中绘制时域的波形图,采用截图工具保存完整图像
时间: 2024-02-24 19:00:50 浏览: 38
好的,我理解了你的要求。以下是实现该功能的代码:
```python
import wave
import numpy as np
import matplotlib.pyplot as plt
# 读取WAV文件
with wave.open('record.wav', 'rb') as f:
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = f.readframes(nframes)
# 将二进制数据转换为数组
wave_data = np.frombuffer(str_data, dtype=np.short)
# 绘制原始波形图
plt.subplot(2, 1, 1)
plt.plot(wave_data)
plt.title('Original Waveform')
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 降低采样率并绘制新的波形图
new_framerate = framerate // 4
new_wave_data = wave_data[::4]
plt.subplot(2, 1, 2)
plt.plot(new_wave_data)
plt.title('New Waveform')
plt.xlabel('Time')
plt.ylabel('Amplitude')
# 保存完整图像
plt.savefig('waveform.png')
```
在这段代码中,我们使用了Python标准库中的`wave`模块来读取WAV文件,并将二进制数据转换为数组。接着,我们使用Matplotlib库中的`plot`函数来绘制波形图,并将图像保存为PNG格式。在第二个子图中,我们通过将数组的采样率降低为原来的1/4来实现了降采样。
阅读全文