2012-01-22 4 views
1

그래서 앱을 만들고 있는데, 예를 들어 누군가 말하기 시작하면 소리가 나는 것을 감지하고 녹음해야합니다.
이 튜토리얼은 http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/인데 처음에는 녹음을 시작한 다음 녹음을 기반으로 소리를 감지합니다.
실제로 레코더를 실제로 시작하지 않고 사운드를 감지하는 다른 방법이 있습니까? 내가 생각한 것은 2 개의 레코더가 있는데 하나는 감지 용이고 다른 하나는 실제로 소리를 녹음하는 것입니다. 또 다른 해결책은 녹음 된 사운드를 편집 (트리밍)하는 것입니다.
이러한 접근 방식이 어떻게 든 표준입니까 아니면 더 나은 방법으로 소리를 감지 할 수 있습니까?
감사합니다.iPhone 소리를 감지하고 녹음하십시오.

편집 : 누군가가이를 읽는 경우, 나 또한 조금 더러운지고 괜찮다면이 http://bonkel.wordpress.com/2010/03/03/frequency-detection-using-fourier-transform/

답변

4

, 당신의 CoreAudio로, 낮은 수준 아래로 이동하여 밖으로 데이터를 읽을 수 발견 임계 값을 초과하는 값을 볼 때까지 버퍼를 입력하고 해당 입력 버퍼를 기록하거나 높은 수준의 녹음 호출을 트리거합니다. 마찬가지로 일정 기간 동안 녹음을 중지 할 수 있습니다.

CoreAudio를 사용하면 녹음 내용을 제어 할 수 있습니다. 꽤 쉽게 배경 잡음을 걸러 낼 수 있습니다. 또는 묵음 때문에 녹음이 중단되었을 때를 나타내는 삐 소리를 추가하고 나중에 녹음에 맞춰 나중에 사용할 마커를 추가 할 수도 있습니다.

CoreAudio는 더 많은 작업을 수행해야합니다. 적시에 마이크 버퍼를 읽고 사운드 데이터를 떨어 뜨리지 않기 위해 데이터를 상당히 빨리 저장하거나 버려야합니다. 장치가 CPU 및 다른 작업을 동시에 수행 할 수있는 충분한 힘을 가지고 있기 때문에 그리 어렵지 않습니다. CoreAudio에 대해 잘 알고 있어야합니다.

안내 할 수있는 Apple CoreAudio 샘플이 많이 있습니다. WWDC 2010 및 2010 CoreAudio 세션도 꼭보아야합니다.

+0

감사합니다. 내가 자습서를 찾을 수 있는지 확인해 보겠습니다. :) – haluzak

+0

CoreAudio 및 ioRemote의 기능 중 일부를 설명하는 것이 좋습니다. aurioTouch - http://developer.apple.com/library/ios /#samplecode/aurioTouch/Introduction/Intro.html. – mahboudz

0

오디오 대기열 또는 Core Audio (RemoteIO Audio Unit) API를 사용할 수 있습니다. 앱의 대기 시간이 짧지 않다면 Audio Queue API를 사용하는 것이 더 간단 할 수 있습니다.

소리를 감지하기 위해 녹음 API를 시작해야하지만 녹음 콜백에서 얻은 모든 것을 파일로 저장할 필요는 없습니다.

관련 문제