0

我想用python(pyaudio)录制声音/对话,然后使用录制的流并使用套接字在另一台计算机上播放(没有文件,只有python)

我怎样才能做到这一点?我应该使用哪些模块?

4

1 回答 1

2

只需通过套接字发送原始帧,而不是写入文件。使用端口音频网页上的播放示例。只需在 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(frames)), FORMAT, CHANNELS, 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 地址,然后在接收端设置一个简单的 web 服务器(例如用flask)来处理请求。

然后,用户可以在套接字上解码此信息并使用播放示例,方法是创建一个具有正确参数的新流(例如播放示例)。

如果您需要实时音频流,请使用格式通道和速率发起单个请求,然后只需打开一个原始 tcp 套接字即可发送原始帧。

于 2013-04-10T14:58:24.183 回答