我是Python的新手,也是一般的编程,所以请不要对我太过刻意
我目前正在尝试弄清楚如何使用字符串(从另一个wave文件的数据派生)编写新的wav文件
我对该文件的数据执行了傅立叶变换,所以现在我试图将傅立叶变换中的值写入新的wav文件中。
我只能使用numpy和包含的Python库,而不是scipy
根据文档,我必须使用wave_write(),但我不知道该函数的代码应该是什么样的。
我想我应该做一些与
有关的事情wave_write.writeframesraw(data)
然后再次,不完全确定该怎么做。 非常感谢任何帮助!
答案 0 :(得分:0)
NumPy中的两个功能可以帮助您:astype
和tostring
。
如果您有一组声音样本,请说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