2012-05-11 143 views
2

我想在Python中使用numpy和scipy库创建一个.wav文件,其中播放多个音调,我打算这样做的方式是将我的频率存储在一个数组中然后所产生的信号被存储在另一个中。我已经成功创建了具有所需播放时间的文件,但它不会播放任何声音。我错过了什么吗?.wav文件不播放任何声音

谢谢。

import numpy as np 
from scipy.io import wavfile 

freq =np.array([440,493,523,587,659,698,783,880]) #tone frequencies 

fs=22050 #sample rate 
duration=1 #signal duration 
music=[] 
t=np.arange(0,duration,1./fs) #time 

for i in range(0,len(freq)): 

    x=10000*np.cos(2*np.pi*freq[i]*t) #generated signals 
    music=np.hstack((music,x)) 

wavfile.write('music.wav',fs,music) 

回答

3

您正在使用创建波形文件包含浮动的载体,但scipy.io它们解释为64位整数(如the docs提到),这是不被大多数玩家的支持。

更改最后一行

wavfile.write('music.wav',fs,music.astype(np.dtype('i2'))) 

应该产生可以正常播放的文件。

+0

谢谢,它的工作。 –