在Raspberry Pi上使用PyAudio干扰音频

时间:2016-02-15 15:15:20

标签: python udp raspberry-pi raspbian pyaudio

我尝试在两个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()

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我也面临类似的口吃问题。这是因为在流式传输过程中出现输入溢出错误。如果每次通信的块大小减少到512字节,那么根据我的经验,通信就会很好。