Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Raspberry Pi 3上的python2.7-Pyaudio输入溢出_Python_Python 2.7_Raspbian_Raspberry Pi3 - Fatal编程技术网

Raspberry Pi 3上的python2.7-Pyaudio输入溢出

Raspberry Pi 3上的python2.7-Pyaudio输入溢出,python,python-2.7,raspbian,raspberry-pi3,Python,Python 2.7,Raspbian,Raspberry Pi3,我在为一个我至今还没能解决的问题寻求帮助。。。 我用的是覆盆子皮3 B型,上面插着Focusrite Scarlett 2i2 USB声卡,上面插着卡侬话筒。例如,整个过程在《无畏》上运行良好。它可以录制和/或播放声音。 现在,我想使用这个设置在Python中记录一个流,并使用和FFT函数对其进行分析,以实时估计我所听到的声音的音调。当我在Raspberry上使用Python 2.7运行代码时,它会运行4到5秒,然后停止运行,出现以下异常: IOError: [Errno Input overf

我在为一个我至今还没能解决的问题寻求帮助。。。 我用的是覆盆子皮3 B型,上面插着Focusrite Scarlett 2i2 USB声卡,上面插着卡侬话筒。例如,整个过程在《无畏》上运行良好。它可以录制和/或播放声音。 现在,我想使用这个设置在Python中记录一个流,并使用和FFT函数对其进行分析,以实时估计我所听到的声音的音调。当我在Raspberry上使用Python 2.7运行代码时,它会运行4到5秒,然后停止运行,出现以下异常:

IOError: [Errno Input overflowed] -9981
然后它使python控制台崩溃

请注意,这段代码在基本计算机上运行良好,但我需要它在Pi3上运行

我想知道是不是线程导致了数据溢出的问题,所以我回到Pyaudio发布的非常基本的代码来“测试”设置。所以我运行了下面的代码,发现自己面临着完全相同的问题,有着相同的错误

import pyaudio
import wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
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()
但我有一个想法,那就是减小块大小,在运行了几次之后,我发现在1010以上,出现了异常

所以我的问题很简单,有人知道这是从哪里来的吗?如果我想或需要,为什么不能将块大小设置为1024?为什么它能在计算机上正常运行,而不是在Pi上?有解决办法吗

多谢各位,
爱德华

不确定你的问题是否能以你的措辞得到明确的回答。希望我能给你指出几个方向。我一直在用我的型号3做一些音频流的工作,所以我对你的例子很感兴趣

Pi和计算机最大的区别在于CPU速度和内存—1.2GHz CPU和1GB Ram的规格比任何低端计算机都要低。使用解释语言进行流处理可能会增加

看起来你正在把所有的录音都记录到内存中,然后在最后把它写出来。我想那就是溢出发生的地方。我认为块大小只是一个骗局

如果要坚持Python处理,我认为更好的选择是在接收帧数据时编写帧数据

在我看来,我认为更好的选择是直接使用arecord或ffmpeg/avconv将流直接记录到文件中。但是我非常感兴趣的是看看你是否能在Python中做到这一点

您安装了什么操作系统-Raspbian或Raspbia Lite

编辑
只是出于兴趣-您是否尝试添加调试打印 在每次追加之前只是为了在崩溃之前查看帧字符串的大小


不确定你的问题是否能以你的措辞得到明确的回答。希望我能给你指出几个方向。我一直在用我的型号3做一些音频流的工作,所以我对你的例子很感兴趣

Pi和计算机最大的区别在于CPU速度和内存—1.2GHz CPU和1GB Ram的规格比任何低端计算机都要低。使用解释语言进行流处理可能会增加

看起来你正在把所有的录音都记录到内存中,然后在最后把它写出来。我想那就是溢出发生的地方。我认为块大小只是一个骗局

如果要坚持Python处理,我认为更好的选择是在接收帧数据时编写帧数据

在我看来,我认为更好的选择是直接使用arecord或ffmpeg/avconv将流直接记录到文件中。但是我非常感兴趣的是看看你是否能在Python中做到这一点

您安装了什么操作系统-Raspbian或Raspbia Lite

编辑
只是出于兴趣-您是否尝试添加调试打印 在每次追加之前只是为了在崩溃之前查看帧字符串的大小

相关:-检查输入格式(速率和格式),如果不是,则代码处理数据太慢。相关:-检查输入格式(速率和格式),如果不是,则代码处理数据太慢。