2014-10-29 7 views
1

이 질문에 대한 명백한 답변을 이미 놓치지 않았 으면 좋겠습니다.하지만 제 생각에는 약간의 문제가 있음을 알려주세요. 저는 현재 파이썬에서 오디오 처리 및 피드백 예측을 수행하는 프로그램을 작성 중입니다. 지금까지 10ms 간격으로 실행하고 오디오 데이터가 포함 된 버퍼에서 작동하는 클래스가 있습니다. 나중에 마이크로폰에서 라이브 입력을 사용하여 해당 버퍼를 채우고 싶지만 현재는 두 번째 클래스 만 사용합니다. 즉, audiodata의 청크를 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 * Ok, 많이 감사합니다. 나는 완전히 눈이 멀었다는 것을 의미합니다. 더 많은 시간을 낭비하는 것보다 지금은 많이 싫어하는 느낌을주는 것이 더 좋습니다! –

관련 문제