python的wave库读取wav文件中的采样点代码
时间: 2023-06-04 16:04:15 浏览: 103
可以这样实现:
```python
import wave
with wave.open('example.wav', 'rb') as f:
# 获取音频文件的参数
params = f.getparams()
num_channels, sample_width, framerate, num_frames = params[:4]
# 读取所有采样点数据
frames = f.readframes(num_frames)
# 转换成可操作的数据类型
data = list(frames)
if sample_width == 1: # 8-bit samples
data = [ord(byte) for byte in frames]
elif sample_width == 2: # 16-bit samples
data = [wave.struct.unpack('<h', frames[i:i+2])[0] for i in range(0, len(frames), 2)]
elif sample_width == 3: # 24-bit samples
data = [wave.struct.unpack('<i', b'\x00' + frames[i:i+3])[0] >> 8 for i in range(0, len(frames), 3)]
elif sample_width == 4: # 32-bit samples
data = [wave.struct.unpack('<i', frames[i:i+4])[0] for i in range(0, len(frames), 4)]
```
这段代码可以读取指定文件(如`example.wav`)中的所有采样点数据,并将它们转换成列表类型的数据。采样点的数据类型可能是8位、16位、24位或32位。这段代码适用于所有这些数据类型。