我呼籲爲我迄今未能解決的問題尋求幫助... 我使用樹莓派3模型B上我插上了一個Focusrite Scarlett 2i2 USB聲卡,插上一個XLR麥克風。例如,Audacity的整體工作正常。它可以錄製和/或播放聲音。 現在我想用這個設置在Python中記錄一個流,並使用FFT函數對它進行分析,以獲得我正在聽的聲音的音高的實時估計。當我對樹莓運行與Python 2.7的代碼,它的工作原理爲4歐5秒鐘,然後它停止與以下異常:python2.7樹莓派3 - Pyaudio輸入溢出
IOError: [Errno Input overflowed] -9981
然後崩潰蟒蛇控制檯。
請注意,此代碼工作正常,基本的計算機上,但我需要它的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的CHUNK大小,如果我想要或需要?爲什麼它可以在計算機上正確運行,而不是在Pi上運行?有解決方案嗎?
很多感謝, 愛德華
相關:http://stackoverflow.com/questions/10733903/pyaudio-input-overflowed - 檢查輸入格式(速率和格式),如果不是這樣,代碼太慢,無法處理數據。 – Caramiriel