python – PyAudio输入溢出-9981 – 没有解决方案正常工作
发布时间:2020-12-20 11:30:13 所属栏目:Python 来源:网络整理
导读:请不要将此问题报告为重复,因为现有的解决方案都没有为我工作,我对它们进行了全部测试 所以, 我试图在我的RaspberryPi模型B板上运行PyAudio示例录制程序, 这是我得到的错误, Traceback (most recent call last): File "/home/pi/pyaudio/test/testing.py",li
请不要将此问题报告为重复,因为现有的解决方案都没有为我工作,我对它们进行了全部测试
所以, Traceback (most recent call last): File "/home/pi/pyaudio/test/testing.py",line 23,in <module> data = stream.read(chunk) File "/usr/local/lib/python2.7/dist-packages/pyaudio.py",line 605,in read return pa.read_stream(self._stream,num_frames) IOError: [Errno Input overflowed] -9981 有一些解决方案可以解决许多用户的问题,在我看来,这是不正确的. 这是我试过的, 首先,这是代码, """PyAudio example: Record a few seconds of audio and save to a WAVE file.""" import pyaudio import wave CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() stream = p.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,frames_per_buffer=CHUNK) print("* recording") frames = [] for i in range(0,int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("* done recording") stream.stop_stream() stream.close() p.terminate() wf = wave.open(WAVE_OUTPUT_FILENAME,'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() 如果支持或不支持当前配置,我也尝试过, import pyaudio p = pyaudio.PyAudio() if p.is_format_supported(48000.0,input_device=1,input_channels=1,input_format=pyaudio.paInt16): print 'True!' 44,000和44,100都是支持,但我仍然一次又一次地得到同样的错误. 这是我的USB音频卡设备信息, p.get_device_info_by_index(1) {'defaultSampleRate': 44100.0,'defaultLowOutputLatency': 0.011609977324263039,'defaultLowInputLatency': 0.011609977324263039,'maxInputChannels': 1L,'structVersion': 2L,'hostApi': 0L,'index': 1,'defaultHighOutputLatency': 0.046439909297052155,'maxOutputChannels': 2L,'name': u'Generic USB Audio Device: USB Audio (hw:1,0)','defaultHighInputLatency': 0.046439909297052155} 有没有人知道为什么我仍然会收到错误? 解决方法
您是否尝试将exception_on_overflow设置为False?从Pyaudio文档:
read(num_frames,exception_on_overflow=True) 从流中读取样本.使用非阻塞模式时请勿呼叫. 参数:num_frames – 要读取的帧数.exception_on_overflow – 指定是否应在输入缓冲区溢出时抛出(或无提示忽略)IOError异常.默认为True.引发IOError:如果stream不是输入流或者读取操作不成功.返回类型:串 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |