在python

时间:2016-11-23 02:41:51

标签: python numpy audio

我是Python的新手,也是一般的编程,所以请不要对我太过刻意

我目前正在尝试弄清楚如何使用字符串(从另一个wave文件的数据派生)编写新的wav文件

我对该文件的数据执行了傅立叶变换,所以现在我试图将傅立叶变换中的值写入新的wav文件中。

我只能使用numpy和包含的Python库,而不是scipy

根据文档,我必须使用wave_write(),但我不知道该函数的代码应该是什么样的。

我想我应该做一些与

有关的事情
wave_write.writeframesraw(data)

然后再次,不完全确定该怎么做。 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

NumPy中的两个功能可以帮助您:astypetostring

如果您有一组声音样本,请说X,然后您可以使用astype将其转换为正确的格式。这取决于wav文件中使用的数据类型以及用于保存它的库。但是让我们举个例子说你想把它存储为16位整数。您需要根据所选的数据类型缩放X - 因此在这种情况下,对于带符号的16位int,范围将为-32768到32767。如果您的样本从-1.0到1.0,那么您可以简单地乘以32767。

下一部分只是使用tostring将其转换为字符串,它可能看起来如下:

scaled = X * 32767
scaled.astype('<i2').tostring()

您可以在此处找到这些功能的文档: https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.astype.html https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tostring.html