読者です 読者をやめる 読者になる 読者になる

ami_GS's diary

情報系大学院生の備忘録。ネットワークの勉強にハマっています。

UDPで音声通信(その1)

UDP Python

いきなりですが、今回はUDPに触れません。

(一応プログラムは書いてはあるのですが、卒論のミス訂正で忙しくて詰めが甘くなっている為また今度)

 

はい、音声通信してみたいですよね?よね?

という訳で何回か(多分次で終わる)に分けてやって行こうと思います。

今回はPyAudioという物を使いました。

PyAudioはPortAudioのPythonラッパで、PortAudioはプラットフォームに依存しない音声APIのライブラリらしい(引用:MacでPyAudioを使ってみる. - miettalの日記

 

インストール(MacPorts

>> ports install py27-pyaudio

で、

>> python2.7

からの、import pyaudioでエラーが出なければインスコ完了

(pip使えって言わないで;;)

 

 

import pyaudio

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 1 #                                                            
p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels = CHANNELS,
                rate = RATE,
                input = True,
                output = True,
                frames_per_buffer = CHUNK
                )

frames = []

for i in range(int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)


for frame in frames:
stream.write(frame, CHUNK)

stream.stop_stream()
stream.close() p.terminate()

こうすると、録音した音が約1秒後に聞こえるはずです。

(1秒録音した後にそれを再生する)

 

streamオブジェクトを用いて録音、再生を行います。

最初のループで、frames配列に1秒で取れるだけの音をつめていくだけです。簡単!

録音されるデータはstringなので、次に行いたいUDP通信にぴったりやな!

 

ってことで、卒論に戻ります。