2014-10-29 76 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