2014-10-29 73 views
1

我希望我没有错过任何明显的回答这个问题,但我希望你能帮我解决我的一个小问题。 我目前正在用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 

我希望你们中的一些可能能够指出我什么我做错了,即使这个最小的代码示例。有趣的是,一个更小的测试用例,它使用一个以特定间隔运行的函数和一个填充缓冲区的不同线程,对我来说工作正常。

非常感谢您的帮助!

回答

0

的问题是:

self.aduioBufSize = self.chunk_s 

,准确aduio..。只是一个错字

+0

Omg * G *好的非常感谢,只是意味着我完全失明。现在感觉更容易受到浪费,而不是浪费更多的时间来搜索! – 2014-10-29 13:44:36