我正在写一个程序来检查电脑记录的音频信号中是否有小故障。在检测到音频后,我想检查数据的前5秒是否有问题(以44.1kHz的采样率对应220500个样本),继续到下一个5秒的数据并检查其中是否有问题,然后接下来的5秒等等。我有一个while循环,在检测到音频后开始,它开始读取音频从一个流采样到一个数组,直到它在数组中有220500个样本,然后它进入一个if语句,开始检查220500个样本中的问题(然后删除数组中的所有元素)。我的问题是,当这种情况发生时,计算机仍在记录音频,但它没有从流读取到数组中,当我退出if语句并重新启动while循环时,我已经错过了几秒钟的音频数据。在while 1:

# little endian, signed short

snd_data = array('h', stream.read(1500))

if byteorder == 'big':

snd_data.byteswap()

r.extend(snd_data)

if len(r) == 220500 or silent:

r = trim(r)

data = pack('

data = np.fromstring(data,dtype=np.int16)

glitch detection carried out here...

我正在使用PyAudio录制音频

^{pr2}$

我想知道有没有办法让我继续从音频流读入阵列,同时执行if语句中的故障检测?如果没有,我还有别的办法吗?在

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐