python - Python - 将浮点音频数据数组转换为 wav 文件
问题描述
我有像这样从麦克风录制的音频数据:(浮点数数组)
> print(data)
[-0.00762939 -0.00817871 -0.00714111 ... 0.0265511 0.02484207 0.02377392]
这是我的代码:
while(recording):
frames.append(data)
waveFile = wave.open(WAVE_OUTPUT_FILENAME + "_" + str(COUNT_FILE) + ".wav", 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.wr(b''.join(frames))
waveFile.close()
但是当我播放音频时它变得破碎,只有噪音......如何将其转换为 .wav 音频文件?
解决方案
您需要先使用 struct 打包数据
用这个替换你的 waveFile.writeframes
data=struct.pack( 'h' * len(frames), *frames )
waveFile.writeframes(data)
并且可能还将您的数据转换为整数,因为我认为 wav 文件仅使用整数值