2

我正在尝试使用 scipy.io.wavfile.write() 创建一个 .wav 文件,但结果是一个嘈杂的 wav 文件,我尝试使用 iNotebook 得到相同的结果,代码如下:

import numpy as np
from scipy.io import wavfile

x= np.arange(25600.0)
sig= np.sin(2*np.pi*(1250.0/10000.0)*x) 

def makewav(data,outfile,samplerate):
    wavfile.write(outfile,samplerate,data)

makewav(sig,'foo.wav',44100)

仅当我尝试生成纯音时才会发生这种情况。使用 scipy.io.wavfile.read() 读取 .wav 并使用 scipy.io.wavfile.write() 再次写入时出现任何问题。

4

1 回答 1

3

根据本文档,您应该输出整数值,并且您有浮点数据,因此您应该首先转换它们。

The method:
    scipy.io.wavfile.write(filename, rate, data)[source]

Argument:
    data is a ndarray A 1-D or 2-D numpy array of integer data-type.

要实际转换您的数据,请尝试使用以下代码:

data=np.int16(sig/np.max(np.abs(sig)) * 32767)

在这个答案中查看更多信息

于 2013-07-23T19:46:36.880 回答