首页 > 解决方案 > 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 音频文件?

标签: pythonnumpywavnumpy-ndarraywaveform

解决方案


您需要先使用 struct 打包数据

用这个替换你的 waveFile.writeframes

data=struct.pack( 'h' * len(frames), *frames )
waveFile.writeframes(data)

并且可能还将您的数据转换为整数,因为我认为 wav 文件仅使用整数值


推荐阅读