2017-11-25 4 views
0

私はnumpyを作成したサウンドデバイスで音色を記録し、wavファイルに書きたいと思います。ここでのコードは次のとおりです。sounddeviceとnumpyをpython3で使ってwavファイルを書く

import numpy 
import sounddevice as sd 
import soundfile as sf 
import sys 

duration = 3 
amplitude = 0.3 
sampling_frequency = 44100 

time = numpy.arange(int(numpy.ceil(duration * sampling_frequency)))/ sampling_frequency 

frequency1 = 500 
tone1 = amplitude * numpy.sin(2* numpy.pi * frequency1 * time) 

frequency2 = 700 
tone2 = amplitude * numpy.sin(2* numpy.pi * frequency1 * time) 
frequency3 = 1500 
tone3 = amplitude * numpy.sin(3* numpy.pi * frequency1 * time) 
frequency4 = 400 
tone4 = amplitude * numpy.sin(4* numpy.pi * frequency1 * time) 

result = tone1 
result2 = tone2 
result3 = tone3 
result4 = tone4 

sd.play(result + result2 + result3 + result4, sampling_frequency) 

filename = 'output.wav' 

mydata = sd.rec(int(result + result2 + result3 + result4),sampling_frequency,channels=2, blocking=True) 
sf.write(filename, mydata, sampling_frequency) 

私はこのエラーを取得する:長さだけ-1配列は、コードと間違って何 Pythonのスカラに変換することができますか?私は、Pythonで初心者だ

+0

にそれを変更する理由はわかりませんエラー。 – Coolness

答えて

0

あなたの最後から2番目の行は、整数にresult1など変数の和をキャストしようと

mydata = sd.rec(int(result + result2 + result3 + result4),sampling_frequency,channels=2, blocking=True) 

です。しかし、timeは配列なので、実際にはnumpyの配列です。配列は複数の値を持つため、単一の整数に変換することはできません。私はあなたがそれをやろうとしている、それがどのラインの歩留まりを指定すると、あなたはおそらく、あなたは完全なエラーメッセージを追加した場合、それが参考になるint()を削除し、

mydata = sd.rec(result + result2 + result3 + result4, sampling_frequency, channels=2, blocking=True) 
関連する問題