gpt4 book ai didi

python - 使用 Python、Numpy 数组和 WAVE 模块编写 WAV 文件

转载 作者:行者123 更新时间:2023-12-05 08:23:34 30 4
gpt4 key购买 nike

我正在尝试实现 Karplus-Strong 算法。

当我播放(通过使用 Audio(y, rate=Fs) 的 Jupyter Notebook)收集的 numpy 数组(代表吉他和弦)时,一切看起来都很好。

不幸的是,使用 WAVE 模块将 numpy 数组:y 写入 wav 文件是不正确的(使用下一个 python 代码):

noise_output = wave.open('k-s.wav', 'w')
noise_output.setparams((1, 4, Fs, 0, 'NONE', 'not compressed'))

for i in range(0, len(y)):
value = y[i]
packed_value = struct.pack('f', value)
noise_output.writeframes(packed_value)

noise_output.close()

y的每个元素都是

<type 'numpy.float64'>

我应该如何修改写入循环才能正确写入 WAV 文件?

有关该问题的更多信息。在写入 WAV 之前,y 数组的第一个元素是:

 [ 0.33659756  0.33659756 -0.43915295 -0.87036152  1.40708988  0.32123558
-0.6889402 1.9739982 -1.29587159 -0.12299964 2.18381762 0.82228042
0.24593503 -1.28067426 -0.67568838 -0.01843234 -1.830472 1.2729578
-0.56575346 0.55410736]

将元素写入 WAV 文件后,关闭 WAV 文件并再次读取,我得到了收集数组的前 20 个元素:

[ 1051481732  1051481732 -1092560728 -1084305405  1068768133  1050966269
-1087349149 1073523705 -1079648481 -1107564740 1074512811 1062371576
1048303204 -1079775966 -1087571478 -1130954901 -1075163928 1067642952
-1089415880 1057872379]

最佳答案

import scipy.io.wavfile
scipy.io.wavfile.write("karplus.wav", Fs, y)

多田! AFAIK 适用于 float64 和 float32,可能还有其他。对于立体声,形状必须是 (nb_samples, 2)。参见 scipy.io.wavfile.write .

关于python - 使用 Python、Numpy 数组和 WAVE 模块编写 WAV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782159/

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