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()
不管我怎么想,斯佩克斯才是问题所在。但是每个人