数据读取:从文件ex03.dat_中读取数据(16bit量化、采样频率44100Hz)。
时间: 2024-09-25 18:12:45 浏览: 50
在Python中,我们可以使用numpy库配合wave模块来读取二进制音频文件,例如16位量化、44100Hz采样的WAV格式。以下是一个基本的例子:
```python
import wave
import numpy as np
# 打开音频文件
with wave.open("ex03.dat_", "rb") as w:
# 获取采样率和通道数等信息
params = w.getparams()
n_channels, sampwidth, framerate, nframes = params[:4]
# 确保是单声道(1 channel),16位量化
assert n_channels == 1 and sampwidth == 2
# 读取所有样本,转为numpy数组
audio_data = w.readframes(nframes)
audio_samples = np.frombuffer(audio_data, dtype=np.int16)
# 根据采样频率将样本转换为时间序列
time_axis = np.arange(0, nframes) / framerate
audio_samples = audio_samples.astype(np.float32) / 32768 # 将16位整数归一化到0-1范围
print(f"Audio data shape: {audio_samples.shape}")
print("Data loaded from ex03.dat_.")
# 可视化波形
plt.plot(time_axis, audio_samples)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Waveform from ex03.dat_')
plt.show()
```
这段代码首先打开文件,然后检查其属性以确保我们正在处理的是正确的数据类型。接着,它将音频数据读入numpy数组,并转换为浮点形式方便后续处理。最后,利用时间轴对音频波形进行绘制。
阅读全文
相关推荐













