您好,我正在尝试找出一些假设通过网络发送语音的代码。我发送的音频有问题,但它只是一系列响亮的哔哔声,而不是我输入的音频
哔声结束后,我得到一个 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()