pcm格式裸数据转成wav格式
时间: 2023-07-09 18:05:14 浏览: 43
将 PCM 格式的裸数据转换成 WAV 格式,需要添加 WAV 文件头。以下是 Python 代码实现:
```python
import wave
import struct
# 设置参数
channels = 1
sample_width = 2
sampling_rate = 16000
data_size = 10000
# 打开 PCM 文件
pcm_file = open("input.pcm", "rb")
pcm_data = pcm_file.read()
# 打开 WAV 文件
wav_file = wave.open("output.wav", "wb")
wav_file.setnchannels(channels)
wav_file.setsampwidth(sample_width)
wav_file.setframerate(sampling_rate)
# 添加 WAV 文件头
wav_header = struct.pack("<4sI4s", b"RIFF", data_size + 36, b"WAVE")
fmt_chunk = struct.pack("<4sIHHIIHH", b"fmt ", 16, 1, channels, sampling_rate, sampling_rate * sample_width * channels, sample_width * channels, sample_width * 8)
data_chunk = struct.pack("<4sI", b"data", data_size)
wav_file.writeframes(wav_header + fmt_chunk + data_chunk)
# 写入数据
wav_file.writeframes(pcm_data)
# 关闭文件
pcm_file.close()
wav_file.close()
```
其中,`channels` 表示声道数,`sample_width` 表示采样位宽,`sampling_rate` 表示采样率,`data_size` 表示 PCM 数据大小。代码中使用了 `struct` 模块来构造 WAV 文件头和数据块。最后,将 PCM 数据写入 WAV 文件并关闭文件即可。