3

numpyおよびscipyライブラリを使用してPythonで.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)
4

1 に答える 1

5

ウェーブファイルの作成に使用しているベクトルにはfloatが含まれていますが、scipy.ioこれらは64ビットintとして解釈されます(ドキュメントに記載されています)。これはほとんどのプレーヤーでサポートされていません。

最後の行をに変更します

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

正しく再生できるファイルを作成する必要があります。

于 2012-05-11T23:02:16.637 に答える