繁体   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