我想用python(pyaudio)录制声音/对话,之后使用录制的流并使用套接字在没有文件的情况下在另一台计算机上播放(只有python)
我该怎么做?我应该使用哪些模块?
答案 0 :(得分: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)。编码此信息的简单方法可能是作为post请求,其中参数是FORMAT,CHANNELS和RATE,而body是音频字节串。
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地址,然后在接收端(例如使用flask)设置一个简单的Web服务器来处理请求。
然后,用户可以在套接字上解码此信息,并通过在Play示例中创建具有正确参数的新流来使用播放示例。
如果您需要实时流式传输音频,请使用格式通道和速率发出单个请求,然后只需打开原始tcp套接字即可发送原始帧。