您好,我正在尝试找出一些假设通过网络发送语音的代码。我发送的音频有问题,但它只是一系列响亮的哔哔声,而不是我输入的音频
哔声结束后,我得到一个 EOFError
我花了过去 48 小时试图弄清楚这一点,任何想法都非常感谢
相关代码
导入pyaudio
进口speex
导入系统
块 = 320
格式 = pyaudio.paInt16
频道 = 1
速率 = 44100
RECORD_SECONDS = 5
### 服务器功能###
定义服务器():
### 初始化套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((主机,端口))
听(5)
### 开始接收循环
而真:
...
elif cmd == CMD_AUDIO:
d = speex.Decoder()
d.初始化(speex.SPEEX_MODEID_WB)
p = pyaudio.PyAudio()
流 = p.open(格式 = 格式,
频道 = 频道,
率 = 率,
输入=真,
输出=真,
frames_per_buffer = 块)
#voice = cPickle.loads(decrypt_my_message(msg))
声音 = cPickle.loads(msg)
打印语音
对于我在范围内(len(语音)):
decdata = d.decode(voice[i])#DECODE 我的数据。(YaY)#解码我的数据。(耶)
stream.write(str(voice), chunk) #将数据写回扬声器
stream.stop_stream()
流.close()
p.terminate()
d.destroy()
如果不是味精:休息
conn.close()
### 从麦克风读取数据###
默认发送音频():
块列表 = []
init_my_audio = speex.Encoder()
init_my_audio.initialize(speex.SPEEX_MODEID_WB)
p = pyaudio.PyAudio()
流 = p.open(格式 = 格式,
频道 = 频道,
率 = 率,
输入=真,
输出=真,
frames_per_buffer = 块)
对于范围内的 i (0, 44100 / 块 * RECORD_SECONDS):
尝试:
数据 = 流。读取(块)
除了 IOError:
经过
encdata = init_my_audio.encode(数据)
chunklist.append(encdata)
客户端(chr(CMD_AUDIO),cPickle.dumps((块列表),1))
stream.stop_stream()
流.close()
p.terminate()
init_my_audio.destroy()