加载record.wav文件,在第一个子图中绘制时域的波形图,将采样率调整为原来的1/4,在第二个子图中绘制时域的波形图,采用截图工具保存完整图像。
时间: 2024-02-24 19:56:11 浏览: 18
好的,这里提供一个Python的实现方法,需要用到的库有`numpy`、`matplotlib`和`wave`。
首先,读取`record.wav`文件并获取相应的音频参数:
```python
import wave
import numpy as np
# 打开wav文件
wav_file = wave.open('record.wav', 'rb')
# 获取音频参数
params = wav_file.getparams()
num_channels, samp_width, sample_rate, num_frames = params[:4]
# 读取所有音频数据
wav_data = wav_file.readframes(num_frames)
```
接下来,将音频数据转换为`numpy`数组,并绘制原始波形图:
```python
# 将音频数据转换为numpy数组
wav_array = np.frombuffer(wav_data, dtype=np.short)
# 绘制时域波形图
import matplotlib.pyplot as plt
plt.subplot(2, 1, 1)
plt.plot(wav_array)
plt.title('Original Waveform')
plt.xlabel('Number of Samples')
plt.ylabel('Amplitude')
```
然后,将采样率调整为原来的1/4,并绘制降采样后的波形图:
```python
# 将采样率调整为原来的1/4
downsample_rate = 4
downsampled_wav_array = wav_array[::downsample_rate]
# 绘制降采样后的时域波形图
plt.subplot(2, 1, 2)
plt.plot(downsampled_wav_array)
plt.title('Downsampled Waveform')
plt.xlabel('Number of Samples')
plt.ylabel('Amplitude')
# 显示图像并保存到本地
plt.savefig('waveform.png')
plt.show()
```
最后,使用截图工具保存完整图像即可。完整代码如下:
```python
import wave
import numpy as np
import matplotlib.pyplot as plt
# 打开wav文件
wav_file = wave.open('record.wav', 'rb')
# 获取音频参数
params = wav_file.getparams()
num_channels, samp_width, sample_rate, num_frames = params[:4]
# 读取所有音频数据
wav_data = wav_file.readframes(num_frames)
# 将音频数据转换为numpy数组
wav_array = np.frombuffer(wav_data, dtype=np.short)
# 绘制时域波形图
plt.subplot(2, 1, 1)
plt.plot(wav_array)
plt.title('Original Waveform')
plt.xlabel('Number of Samples')
plt.ylabel('Amplitude')
# 将采样率调整为原来的1/4
downsample_rate = 4
downsampled_wav_array = wav_array[::downsample_rate]
# 绘制降采样后的时域波形图
plt.subplot(2, 1, 2)
plt.plot(downsampled_wav_array)
plt.title('Downsampled Waveform')
plt.xlabel('Number of Samples')
plt.ylabel('Amplitude')
# 显示图像并保存到本地
plt.savefig('waveform.png')
plt.show()
```