我希望我没有错过任何明显的回答这个问题,但我希望你能帮我解决我的一个小问题。 我目前正在用python编写一个程序来做一些音频处理和反馈预测。到目前为止,我有一个课程,我想以10毫秒的间隔运行,并在包含音频数据的缓冲区上工作。我希望在稍后使用来自microfon的实时输入来填充该缓冲区,但目前我只使用第二个类,每隔10ms将音频数据块传送到缓冲区。至少这是它应该做的。对象变量没有改变
我流类具有以下的功能,这是在一个新的线程使用 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
我oppinion奇怪的行为:
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
我希望你们中的一些可能能够指出我什么我做错了,即使这个最小的代码示例。有趣的是,一个更小的测试用例,它使用一个以特定间隔运行的函数和一个填充缓冲区的不同线程,对我来说工作正常。
非常感谢您的帮助!
Omg * G *好的非常感谢,只是意味着我完全失明。现在感觉更容易受到浪费,而不是浪费更多的时间来搜索! – 2014-10-29 13:44:36