我尝试在两个Raspberry Pi之间进行单工通信(一旦我解决了这个问题就会变成半双工)。
一个通过UDP协议发送音频数据包,另一个接收此数据包并通过它的默认音频输出设备播放。
我正在使用PyAudio库。 我设法使沟通工作,但出来的声音是结巴。 我使用的代码如下:
客户端(IP地址:192.168.1.40)
#!/usr/bin/env python
import pyaudio
import wave
import socket
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
input_device_index=2,
rate=44100,
input=True,
frames_per_buffer=8192)
print("Stream on.")
while True:
try:
data = stream.read(8192)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.connect(("192.168.1.30", 1000))
sock.send(data)
sock.close()
except KeyboardInterrupt:
print("Stream off.")
stream.stop_stream()
stream.close()
p.terminate()
服务器(IP地址:192.168.1.30)
#!/usr/bin/env python
import pyaudio
import wave
import socket
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=1,
input_device_index=2,
rate=44100,
output=True,
frames_per_buffer=8192)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('0.0.0.0', 1000))
while True:
try:
data = s.recv(8192)
if data:
stream.write(data)
except KeyboardInterrupt:
s.close()
print "Exiting code."
stream.stop_stream()
stream.close()
p.terminate()
任何帮助将不胜感激!
答案 0 :(得分:0)
我也面临类似的口吃问题。这是因为在流式传输过程中出现输入溢出错误。如果每次通信的块大小减少到512字节,那么根据我的经验,通信就会很好。