MacでPyAudioを使ってみる.

インターバルタイマー的なのが欲しかったのでPythonで音を出そうと思い,PyAudioを使ってみました.
PyAudioっていうのはPortAudioのPythonラッパで,PortAudioはプラットフォームに依存しない音声APIのライブラリらしいです.

インストール

公式サイト http://people.csail.mit.edu/hubert/pyaudio/ にアクセスしてdmgをインストール







Python 2.7の場所にライブラリを置いてくれないので,2.6のところからシンボリックリンクを貼ります.

% sudo ln -s /Library/Python/2.6/site-packages/_portaudio.so /Library/Python/2.7/site-packages/
% sudo ln -s /Library/Python/2.6/site-packages/pyaudio.py* /Library/Python/2.7/site-packages/

サンプルの実行

インストールが終わったら
PyAudioの公式サイトトップページのサンプルを実行してみる.

# vi example.py
""" Play a WAVE file. """

import pyaudio
import wave
import sys

chunk = 1024

if len(sys.argv) < 2:
    print "Plays a wave file.\n\n" +\
          "Usage: %s filename.wav" % sys.argv[0]
    sys.exit(-1)

wf = wave.open(sys.argv[1], 'rb')

p = pyaudio.PyAudio()

# open stream
stream = p.open(format =
                p.get_format_from_width(wf.getsampwidth()),
                channels = wf.getnchannels(),
                rate = wf.getframerate(),
                output = True)

# read data
data = wf.readframes(chunk)

# play stream
while data != '':
    stream.write(data)
    data = wf.readframes(chunk)

stream.close()
p.terminate()

実行

% python example.py sample.wav