Python - 将数组浮动音频数据转换为wav文件。

问题描述 投票:0回答:1

我的麦克风记录的音频数据是这样的。(ndarray of float)

> 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音频文件?

python numpy wav numpy-ndarray waveform
1个回答
0
投票

你需要先用结构体来打包你的数据

把你的waveFile.writeframes替换成这个。

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

也许还可以将你的数据转换为整数,因为我认为wav文件只使用整数值。

© www.soinside.com 2019 - 2024. All rights reserved.