Python语音通信

Python语音通信,python,voip,speex,pyaudio,Python,Voip,Speex,Pyaudio,您好,我正在试图找出一些代码,这是假定发送语音通过网络。我有问题的音频发送,但它只是一系列响亮的哔哔声,而不是我输入的音频 蜂鸣音结束后,我收到一个EOFError 我花了48个小时试图弄明白这一点,任何想法都是非常感谢的 有关守则 import pyaudio import speex import sys chunk = 320 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 5 ### Server

您好,我正在试图找出一些代码,这是假定发送语音通过网络。我有问题的音频发送,但它只是一系列响亮的哔哔声,而不是我输入的音频

蜂鸣音结束后,我收到一个
EOFError

我花了48个小时试图弄明白这一点,任何想法都是非常感谢的

有关守则

import pyaudio import speex import sys chunk = 320 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 5 ### Server function ### def server(): ### Initialize socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(5) ### Start recieve loop while True: ... elif cmd == CMD_AUDIO: d = speex.Decoder() d.initialize(speex.SPEEX_MODEID_WB) p = pyaudio.PyAudio() stream = p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = chunk) #voice = cPickle.loads(decrypt_my_message(msg)) voice = cPickle.loads(msg) print voice for i in range(len(voice)): decdata = d.decode(voice[i])#DECODE my data. (YaY)#DECODE my data. (YaY) stream.write(str(voice), chunk) #Write the data back out to the speakers stream.stop_stream() stream.close() p.terminate() d.destroy() if not msg: break conn.close() ### READ DATA FROM THE MIC ### def sendAudio(): chunklist = [] init_my_audio = speex.Encoder() init_my_audio.initialize(speex.SPEEX_MODEID_WB) p = pyaudio.PyAudio() stream = p.open(format = FORMAT, channels = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = chunk) for i in range(0, 44100 / chunk * RECORD_SECONDS): try: data = stream.read(chunk) except IOError: pass encdata = init_my_audio.encode(data) chunklist.append(encdata) client(chr(CMD_AUDIO), cPickle.dumps((chunklist), 1)) stream.stop_stream() stream.close() p.terminate() init_my_audio.destroy() 导入pyaudio 进口speex 导入系统 区块=320 格式=pyaudio.paInt16 通道=1 费率=44100 记录时间=5秒 ###服务器功能### def服务器(): ###初始化套接字 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s、 绑定((主机、端口)) s、 听(5) ###启动接收回路 尽管如此: ... elif cmd==cmd\u音频: d=speex.Decoder() d、 初始化(speex.speex\u MODEID\u WB) p=pyaudio.pyaudio() 流=p.open(格式=格式, 频道=频道, 比率=比率, 输入=真, 输出=真, 帧(每帧缓冲区=块) #voice=cPickle.load(解密我的消息(msg)) 语音=cPickle.loads(msg) 印刷语音 对于范围内的i(len(语音)): decdata=d.decode(语音[i])#解码我的数据。(耶)#解码我的数据。(耶) stream.write(str(语音)、chunk)#将数据写回演讲者 stream.stop_stream() stream.close() p、 终止() d、 销毁 如果没有消息:中断 康涅狄格州关闭 ###从麦克风读取数据### def sendAudio(): chunklist=[] init_my_audio=speex.Encoder() 初始化我的音频。初始化(speex.speex\u MODEID\u WB) p=pyaudio.pyaudio() 流=p.open(格式=格式, 频道=频道, 比率=比率, 输入=真, 输出=真, 帧(每帧缓冲区=块) 对于范围内的i(044100/块*记录秒): 尝试: data=stream.read(块) 除IOError外: 通过 encdata=init_my_audio.encode(数据) chunklist.append(encdata) 客户端(chr(CMD_AUDIO),cPickle.dumps((chunklist),1)) stream.stop_stream() stream.close() p、 终止() init_my_audio.destroy()
不管我怎么想,斯佩克斯才是问题所在。但是每个人