我正在尝试使用pyaudio录制长麦克风会话。但是,一段时间后我收到内存错误。我设法使用线程拆分它,并记录3分钟,然后将其处理为文件,但这并没有解决问题。我还尝试在录制时将其直接写入文件,但我无法弄清楚如何附加到wav文件(使用wave模块)。
这是我的代码:
CHUNK = 1024
THRESHOLD = 100
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
wf = wave.open("Test.wav", "wb")
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
rec_started = False
num_silent = 0
r = array('h')
while num_silent < 6:
r.extend(array('h', stream.read(CHUNK)))
silent = is_silent(r)
if silent and rec_started:
num_silent += 1
print num_silent
elif not silent and not num_silent:
rec_started = True
data = pack("<" + ("h"*len(r)), *r)
wf.writeframes(data)
wf.close()
我的问题是:如何防止此代码在一段时间后出现内存错误?