2012-01-03 9 views
6

現在、私はPythonでサウンドを生成することを実験していますが、波形を表す配列(44100 Hzのサンプルレート)をどのように取ることができるのか不思議です。それを再生する。私は純粋なPythonをここで探しています。ただ単に.wavフォーマット以上のものをサポートするライブラリに頼るのではなく、配列に格納された波形からサウンドを再生する

答えて

5

お客様はライブラリを使用してください。純粋なpythonでそれをすべて書くことは、オーディオハードウェアとインターフェースするために、何千ものコード行になる可能性があります。

ライブラリ(例: audiere、それはこのような単純なものになります。

import audiere 
ds = audiere.open_device() 
os = ds.open_array(input_array, 44100) 
os.play() 

、pygameのをpyglet、および多くの他にもあります。..

+0

'audiere'は非常に古いプロジェクトであるように思われる...ラスト2006年にリリースされ、Pythonバインディングのreadmeは2002年であり、Python 2.2を参照しています... –

+0

私はPython 2.7でそれを使っていますが、それでも問題なく動作しています。 audiereモジュールはhttp://pyaudiere.org/です。http://audiere.sourceforge.net/を見ている可能性があります。 pyaudiereはAudiere APIを使用します – wim

+0

pyaudiereのWebサイトは存在しなくなりましたが、audiereは2006年以降更新されていません。これはもはや良い答えです。 – jozzas

3

与えられた音を再生するにはinput_array 16ビットサンプル。これはpyadio documentation page

import pyaudio 

# instantiate PyAudio (1) 
p = pyaudio.PyAudio() 

# open stream (2), 2 is size in bytes of int16 
stream = p.open(format=p.get_format_from_width(2), 
       channels=1, 
       rate=44100, 
       output=True) 

# play stream (3), blocking call 
stream.write(input_array) 

# stop stream (4) 
stream.stop_stream() 
stream.close() 

# close PyAudio (5) 
p.terminate() 
2

又はsounddeviceモジュールを使用し、実施例を変更しています。 pip install sounddeviceを使用してインストールしますが、最初にこれを必要とする:sudo apt-get install libportaudio2

基本的な絶対:もっと

import numpy as np 
import sounddevice as sd 

sd.play(myarray) 
#may need to be normalised like in below example 
#myarray must be a numpy array. If not, convert with np.array(myarray) 

いくつかのオプション:

import numpy as np 
import sounddevice as sd 

#variables 
samplfreq = 100 #the sampling frequency of your data (mine=100Hz, yours=44100) 
factor = 10  #incr./decr frequency (speed up/slow down by a factor) (normal speed = 1) 

#data 
print('..interpolating data') 
arr = myarray 

#normalise the data to between -1 and 1. If your data wasn't/isn't normalised it will be very noisy when played here 
sd.play(arr/np.max(np.abs(arr)), samplfreq*factor) 
+0

Eclipse内でサウンドデバイスが動作しないことに注意してください。 –

関連する問題