我希望我沒有錯過任何明顯的回答這個問題,但我希望你能幫我解決我的一個小問題。 我目前正在用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