2011-03-25 3 views
2

사용자가 시끄러운 소리를 내는지 여부에 따라 특정 작업을 수행하려고합니다. 나는 어떤 음성 인식이나 아무것도하려고하지 않고있다. iPhone이 큰 소리를 들었는지 여부에 따라 간단히 조치를 취하십시오.iPhone App Pick Up Sound

제안, 자습서, 사과 개발자 사이트에서 아무 것도 찾을 수 없습니다. 나는 내가 찾고 있거나 찾지 않고 있다고 가정하고 있습니다.

답변

7

가장 쉬운 방법은 AudioQueue 서비스를 사용하는 것입니다. 설명서는 다음과 같습니다. Apple AQ manual

기본적으로 AudioQueueNewInput()을 사용하여 모든 예제 코드를 찾습니다. 이런 식으로 뭔가 : 당신이가는 것을 일단,이 같은 뭔가 사운드 레벨 측정을 활성화 할 수 있습니다

Status = AudioQueueNewInput(&_Description, 
           Audio_Input_Buffer_Ready, 
           self, 
           NULL, 
           NULL, 
           0, 
           &self->Queue); 

:

// Turn on level metering (iOS 2.0 and later) 
UInt32 on = 1; 
AudioQueueSetProperty(self->Queue,kAudioQueueProperty_EnableLevelMetering,&on,sizeof(on)); 

당신은 오디오 데이터의 각 청크에 대해 호출되는 콜백 루틴을해야합니다 . 데시벨 수준이 충분히 오랫동안 특정 값을 초과하는 경우 감지 할 수 대신 침묵, 귀하의 경우,

// 
// Check metering levels and detect silence 
// 
AudioQueueLevelMeterState meters[1]; 
UInt32 dlen = sizeof(meters); 
Status = AudioQueueGetProperty(_Queue,kAudioQueueProperty_CurrentLevelMeterDB,meters,&dlen); 
if (Status == 0) { 
    if (meters[0].mPeakPower > _threshold) { 
     silence = 0.0;  // reset silence timer 
    } else { 
     silence += time;     
    } 
} 

// 
// Notify observers of incoming data. 
// 
if (delegate) { 
    [delegate audioMeter:meters[0].mPeakPower duration:time]; 
    [delegate audioData:Buffer->mAudioData size:Buffer->mAudioDataByteSize]; 
} 

을 또는 : 그것에서는,이 같은으로 현재 미터 수준을 확인할 수 있습니다. 데시벨 값은 무음의 경우 약 -70.0, 매우 시끄러운 경우에는 0.0db까지 다양합니다. 기하 급수적으로 특정 애플리케이션에서 어떤 값이 작동하는지 보려면 해당 기능을 사용해야합니다.

+0

고마워, 이건 내게 많이 도움이 될거야. – Vikings

1

애플은 Speak Here과 같은 코드를 가지고 있으며 데시벨과 관련된 코드를 가지고 있습니다. 몇 가지 미터 클래스에서 예제를 확인합니다. 나는 오디오 프로그래밍 경험이 없지만 누군가가 당신에게 더 나은 대답을 제공하는 동안 당신을 시작할 수 있기를 바랍니다.

+0

안녕하세요. 내 프로젝트에서 여기에서 말하기를 사용할 수 있습니까? –

+1

안녕하세요 @GajendraKChauhan, IANAL이므로 [소스] (https://developer.apple.com/library/ios/samplecode/SpeakHere/Listings/AudioViews_AQLevelMeter_h.html#//apple_ref/doc/)에서 면책 조항을 참조하겠습니다. uid/DTS40007802-AudioViews_AQLevelMeter_h-DontLinkElementID_3). 변호사에게 질문하는 경우 :) 더 도움이 될 수 있기를 바랍니다. – Joe