簡體   English   中英

錄制和播放從麥克風錄制的音頻流

[英]Recording and play audio stream recorded from microphone

我想用python(pyaudio)錄制聲音/對話,之后使用錄制的流並使用套接字在沒有文件的情況下在另一台計算機上播放(只有python)

我怎樣才能做到這一點? 我應該使用哪些模塊?

只需通過套接字發送原始幀而不是寫入文件。 使用端口音頻網頁上的播放示例。 只需在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套接字即可發送原始幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM