我希望我已经没有错过这个问题的任何明显答案,但我希望你能帮助我解决我的一个小问题。 我目前正在python中编写一个程序来进行一些音频处理和反馈预测。到目前为止,我有一个类,我希望以10毫秒的间隔运行,并在包含音频数据的缓冲区上工作。我想在稍后使用来自微缩模型的实时输入来填充该缓冲区,但是目前我只使用第二类,每隔10ms将一大块audiodata流入缓冲区。至少这是应该做的。
我的流类具有以下功能,该功能在新线程中启动使用
start_new_thread(audioStreamer.streamAudio())
def streamAudio(self):
while not self.done:
chunk = self._readTestChunk()
self.feedbackPred.audioStreamCallback(chunk, np.size(chunk), None, None)
time.sleep(0.01)
self.feedbackPred
是对主类的引用,它每隔10ms对主方法使用一个计时器。然而,这也是有效的,上面提到的audioStreamCallback
在我的观点中表现得很奇怪:
def audioStreamCallback(self, in_data, frame_count, time_info, status_flags):
print "chunk_s:", self.chunk_s
result = np.fromstring(in_data, dtype=np.float32)
if frame_count == self.chunk_s:
self.audioBuf = result
print "setting audiobuf size to chunk_s"
self.aduioBufSize = self.chunk_s
print "after setting, self.audioBufSize:", self.audioBufSize
忽略那些丑陋的调试打印和过于复杂的标题,我需要将该标题用于麦克风案例。我的输出很不幸:
chunk_s: 160
setting audiobuf size to chunk_s
after setting, self.audioBufSize: 0
我希望你们中的一些人能够指出我做错了什么,即使是这个最小的代码示例。有趣的是,一个较小的测试用例,它使用一个以特定间隔运行的函数和一个填充缓冲区的不同线程,对我来说很好。
非常感谢你的帮助!
答案 0 :(得分:0)
问题是:
self.aduioBufSize = self.chunk_s
且确切地aduio..
。只是一个错字