簡體   English   中英

Pyaudio從流式Python錄制音頻

[英]Pyaudio Recording audio from streaming Python

我想在python中使用pyaudio進行錄制,音頻通過套接字流傳輸並保存在* .wav文件中。 我希望將所有內容保存在wave中,以便我可以按照自己的意願處理它。 現在我已經嘗試編寫這段代碼了,但是經過一段時間我編譯后總是會失敗。

錯誤是

wf.writeframes(b''.join(data1))
TypeError: sequence item 0: expected bytes, int found

我的client.py代碼是:

import pyaudio, sys, socket, wave
port = 5000
ip = "192.168.1.110"
chunk = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 49000
WAVE_OUTPUT="output.wav"

p = pyaudio.PyAudio()
stream = p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input =True,output = True, frames_per_buffer = chunk)

#Create a socket connection for connecting to the server:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((ip, port))
print ("***Registrazione in corso***")
frames=[]
for i in range (0,int(RATE/chunk*20)):
data1=client_socket.recv(chunk)
frames.append(data1)
while True:
#Recieve data from the server:
#data = client_socket.recv(1024)
stream.write(data1,chunk)
wf=wave.open(WAVE_OUTPUT,"wb")
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(data1))
#print data
wf.close()   
socket.close()

您得到一個TypeError因為打開的wav文件需要一個字節流,並且您傳遞一個int值。 我想你想把整個幀寫到文件而不只是data1中的塊。 試試wf.writeframes(b''.join(frames)) 另外不要忘記在最后關閉流。

stream.stop_stream() stream.close()

暫無
暫無

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

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