2012-05-11 74 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

謝謝,它的工作。 –