hibitekitou
PyAudioを入れてみた
pc |2014-11-28
PyAudio。PortAudioっていう音関係のライブラリをPythonにバインドしたもんってことらしい。インストーラが各プラットホーム向けに出ているからインストールは簡単でございました。
いれたはいいものの音に関しては全くの素人。さっぱり分かりません。
とりあえず既存のwaveファイルを再生するというのは、PyAudioのドキュメントに書かれているサンプルコードで出来ました。
import pyaudio import wave import sys import time if len(sys.argv) < 2: print("Plays a wave file. \n\nUsage:%s "%sys.argv[0]) sys.exit(-1) wf = wave.open( sys.argv[1], 'rb') p = pyaudio.PyAudio() def callback( in_data, frame_count, time_info, status ): data = wf.readframes(frame_count) return (data, pyaudio.paContinue) stream = p.open( format=p.get_format_from_width(wf.getsampwidth()),\ channels = wf.getnchannels(),\ rate = wf.getframerate(),\ output=True,\ stream_callback=callback ) stream.start_stream() while( stream.is_active() ): time.sleep(0.1) stream.stop_stream() stream.close() wf.close() p.terminate()
続いて録音です。入力デバイスがどんだけあるか調べたり、各々のデバイスがどんなものかの情報を得るにはこんな感じに書けばいいようです。
import pyaudio p = pyaudio.PyAudio() apiCnt = p.get_host_api_count() print("Host API Count: %d"%apiCnt) for cnt in range(apiCnt): print(p.get_host_api_info_by_index(cnt))
これを走らせると、僕のMacBook Proではこんな風に返事が返ってきました。
Host API Count: 1
{'index': 0, 'name': u'Core Audio', 'defaultOutputDevice': 1L, 'type': 5L, 'deviceCount': 5L, 'defaultInputDevice': 0L, 'structVersion': 1L}
入力デバイスは一つしかなく、そのインデックスは0と。ということで、こちら [工作と競馬] をほぼ丸写しで、input_device_indexの値だけ0にする事で、MacBook Proのマイクからの音を録音したファイルを作成する事が出来ました。
import pyaudio import wave import time wf = wave.open('text.wav', 'w') wf.setsampwidth(2) wf.setframerate(44100) wf.setnchannels(2) p = pyaudio.PyAudio() input_device_index = 0 def callback(in_data, frame_count, time_info, status): wf.writeframes(in_data) return (None, pyaudio.paContinue) stream = p.open( format = p.get_format_from_width(wf.getsampwidth()),\ channels = wf.getnchannels(),\ rate = wf.getframerate(),\ input_device_index = input_device_index,\ input = True,\ stream_callback = callback) stream.start_stream() time.sleep(5) stream.stop_stream() stream.close() wf.close() p.terminate()
まずはとりあえず…。
コメント ( 0 )|Trackback ( )
コメント(10/1 コメント投稿終了予定) |
コメントはありません。 |
![]() |
コメントを投稿する |
![]() |
ブログ作成者から承認されるまでコメントは反映されません |