gpt4 book ai didi

python - 在 python 中创建 32 位浮点 wav 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:03 24 4
gpt4 key购买 nike

我想在 Python (2.x) 中创建 32 位浮点 WAV 文件。虽然“标准”WAV 文件通常使用 int,但许多专业音频应用程序将音频数据处理(和保存)为 float。标准波形模块无法执行此操作:http://bugs.python.org/issue16525有没有人在不使用修补模块的情况下实现这一目标? tnx 寻求任何帮助。

最佳答案

这听起来很有趣(看我的句柄),所以我敲定了一些东西。也许你可以使用它。如果您的 Python 脚本生成数值介于 [-1.0 .. 1.0] 之间的单声道波形,请通过 sample_array 发送该波形并指定 sample_rate(例如,44100或 48000)。这将返回一个数组,您可以将其作为 .wav 文件写入磁盘。

我在 Windows Media Player、Apple QuickTime Player 和 VLC(均在 Windows 7 上)中测试了生成的 .wav 输出。他们都玩过。

def float32_wav_file(sample_array, sample_rate):
byte_count = (len(sample_array)) * 4 # 32-bit floats
wav_file = ""
# write the header
wav_file += struct.pack('<ccccIccccccccIHHIIHH',
'R', 'I', 'F', 'F',
byte_count + 0x2c - 8, # header size
'W', 'A', 'V', 'E', 'f', 'm', 't', ' ',
0x10, # size of 'fmt ' header
3, # format 3 = floating-point PCM
1, # channels
sample_rate, # samples / second
sample_rate * 4, # bytes / second
4, # block alignment
32) # bits / sample
wav_file += struct.pack('<ccccI',
'd', 'a', 't', 'a', byte_count)
for sample in sample_array:
wav_file += struct.pack("<f", sample)
return wav_file

关于python - 在 python 中创建 32 位浮点 wav 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com