Просто отправьте необработанные кадры поверх сокета вместо записи в файл. Используйте пример воспроизведения, найденный на веб-странице аудиофайла порта. Просто замените этот код в pyaudio примеров для записи (http://people.csail.mit.edu/hubert/pyaudio/):
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
При отправке через сокет ((B '' Join (кадры)), FORMAT, швеллер, RATE.). Легкий способ кодирования этой информации, вероятно, является почтовым запросом, где параметрами являются FORMAT, CHANNELS и RATE, а тело - это звуковая байтовая последовательность.
import urrllib2
url = '192.168.1.10'
data = urllib.urlencode({'FORMAT' : format,
'CHANNELS' : channels,
'RATE' : rate})
response = urllib2.urlopen(url=url, data= b''.join(frames)).read()
assert(response == "Successfully Played")
Просто измените свой IP-адрес в этом примере, а затем создать простой веб-сервер на приемном конце (например, с помощью колбы), чтобы обработать запрос.
Затем пользователь может декодировать эту информацию на сокете и использовать пример воспроизведения, создав новый поток с правильными параметрами в примере воспроизведения.
Если вам нужна потоковая передача звука в реальном времени, инициируйте один запрос с каналами формата и скоростью, а затем просто откройте необработанный сокет tcp для отправки необработанных кадров.