홈>
NAO 프로그래밍에 익숙하지 않고 ALAudioDevice API와 관련하여 문제가 있습니다. 내 문제는 다음과 같습니다. 전면 마이크에서 원시 데이터를 기록 해야하는 파이썬 모듈을 작성했습니다. ALAudioDevice API의 문서에 따르면 "subscribe (...)"메소드가 "process"함수를 자동으로 호출한다고합니다. 그리고 입력으로 마이크의 원시 데이터를 정기적으로 사용합니다. 이 프로세스를 실행하는 코드를 작성했습니다 (아래 참조). 에러 플래그. 그러나 구독이 "프로세스"기능을 무시하고 모듈에 오디오가 전혀 표시되지 않습니다. 누군가 같은 문제가 있었습니까?
import qi
class AudioModule(object):
def __init__(self):
super(AudioModule, self).__init__()
self.moduleName = "AudioModule"
try :
self.ALAudioDevice = ALProxy("ALAudioDevice")
except Exception, e:
self.logger.error("Error when creating proxy on ALAudioDevice:")
self.logger.error(e)
def begin_stream(self):
self.ALAudioDevice.setClientPreferences(self.moduleName, 16000, 3, 0)
self.ALAudioDevice.subscribe(self.moduleName)
def end_stream(self):
self.ALAudioDevice.unsubscribe(self.moduleName)
def processRemote( self, nbOfChannels, samplesByChannel, altimestamp, buffer ):
nbOfChannels = nbOfChannels
mylogger = qi.Logger("data")
mylogger.info("It works !" + str(nbOfChannels))
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self, False)
self.audio = AudioModule()
def onLoad(self):
self.serviceId = self.session().registerService("AudioModule", self.audio)
pass
def onUnload(self):
if self.serviceId != -1:
self.session().unregisterService(self.serviceId)
self.serviceId = -1
pass
def onInput_onStart(self):
self.audio.begin_stream()
self.onInput_onStop()
pass
def onInput_onStop(self):
self.audio.end_stream()
self.onUnload
self.onStopped()
pass
- 답변 # 1
관련 자료
- Clojure에서 고차 함수를 사용하여 변경 목록 처리
- typescript - 함수 매개 변수의 typeof를 사용하는 조건부 유형
- r - 파이프 연산자와 함께 filter () 함수를 사용하여 평균과 반올림 찾기
- python - if 문을 사용하여 함수를 호출 한 다음 if 문 안에 반환 된 값을 인쇄하려면 어떻게해야합니까?
- python - 여러 if 문을 사용하여 함수의 복잡성을 줄이는 방법
- swift - Codable을 사용하여 사이에 함수를 사용하여 문자열에서 정수로 인코딩/디코딩
- c - 함수를 사용하여 행렬 nxn의 행렬식 계산
- PHP를 사용하여 mysql 데이터베이스 데이터를 javascript 함수에 전달하는 방법은 무엇입니까?
- python - strcontains 함수를 사용하여 열 곱하기
- typescript - jest를 사용하여 함수를 반환하는 함수를 모의하는 방법
- c++ - Gmock을 사용하여 operator ==없이 함수 인수를 모의하는 방법
- javascript - 조건이 충족 될 때 setInterval 및 clearInterval을 사용하여 함수를 실행합니까?
- javascript - promise를 사용하여 자신을 호출하도록 함수를 지연 시키나요?
- c - 함수를 사용하여 문장의 모든 단어를 대문자로 바꾸려면 어떻게해야합니까?
- Lua의 스크립트에 정의 된 함수를 사용하지 않고 함수를 실행하는 방법
- python - 사용자 지정 손실 함수 사용시 modelfit () 오류
- wget을 사용하여 bash 함수를 powershell로 변환
- C의 구조체에 저장된 함수 배열의 함수 사용
- python - 가져 오기를 사용하는 동안 함수가 정의되지 않음 오류
- javascript - ''또는""또는`${}`를 사용하는 JS 함수 다른 출력에 대한 인수
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
안무 상자에서 오디오를 구독하고있는 것 같습니다. 제대로 작동하는지 잘 모르겠습니다.
그러나이 구성에서 Python 코드는 ALAudioDevice 서비스와 동일한 프로세스에서 실행됩니다. 따라서 "processRemote"대신 콜백의 이름을 "process"로 지정해야합니다.그렇지 않으면 별도의 Python 스크립트에서이를 수행 할 수 있습니다.