2017-05-02 6 views
0

私はudpサーバーをPythonで生のフォーマット、バイト配列のクライアントから連続的に受信します。リアルタイムでサーバー側で音声を再生するにはどうすればよいですか?推奨するライブラリや方法はありますか?必要に応じて生のオーディオファイルをリアルタイムでPythonで再生する

はここで良いかもしれないコールバックメソッドを使用する方法があります(私は疑っている)

import socket 

UDP_IP = "192.168.1.105" 
UDP_PORT = 5005 

sock = socket.socket(socket.AF_INET, # Internet 
        socket.SOCK_DGRAM) # UDP 
sock.bind((UDP_IP, UDP_PORT)) 

while True: 
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 
    #what to do to stream the incoming voice packets? 

答えて

2

PyAudio https://people.csail.mit.edu/hubert/pyaudio/

import pyaudio 

p = pyaudio.PyAudio() 

stream = p.open(format=pyaudio.paFloat32, 
       channels=1, 
       rate=44100, 
       output=True) 

data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 

while data != '': 
    stream.write(data) 
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 

stream.stop_stream() 
stream.close() 

p.terminate() 

私の非常に単純なサーバーコードです。

+0

これは受信ストリームを受信して​​PyAudioオブジェクトに保存するだけです。それともそれも同じですか? –

+1

生データをスピーカーから再生します。マイクからオーディオデータを取得するには 'output = True'の代わりに' input = True'を使わなければなりません。 – HashSplat

+0

オーディオデータの種類に合わせて、データフォーマット、チャンネル数、サンプルレートを変更する必要があります。また、十分に速くストリーミングしていることを確認してください。 'data、addr = sock.recvfrom(1024)'が返すには時間がかかり過ぎると、おそらくオーディオデータのスキップが発生します。 – HashSplat

関連する問題