2011-12-13 68 views
-2

我想開發一些語音檢測方法。如何在iPhone應用程序中檢測語音?

例如,

就像在PragDuck應用程序,當用戶開始說話duck開始其動畫。

如何檢測用戶聲音?

+3

這類似於詢問如何「寫iOS中的應用程序「。你已經嘗試了什麼?如果您不要求社羣爲您解決整個相當複雜的問題,那麼您將得到更好的答案。 – ABach

+1

你有沒有開始過任何你不知道如何猜測的第一步?沒有人要求你給他一個應用程序。就像@pinxue的回答 - 向正確的方向推進一點。 –

回答

5

使用AVAudioRecorder - 音頻測量 - 結帳本教程 - dettect當用戶吹進麥克風http://mobileorchard.com/tutorial-detecting-when-a-user-blows-into-the-mic/

簡單的例子:

_audioRecorder.meteringEnabled = YES;

//1. This method will get the current mic activity and will format it to a 0 - 1 scale. 

-(void)checkRecordingMeters:(NSTimer *)timer 
{ 
     [_audioRecorder updateMeters]; 

     const double ALPHA = 0.2; 
     float peakPower = [_audioRecorder peakPowerForChannel:0]; 

     double peakPowerForChannel = pow(10, (0.05 * peakPower)); 
     lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults; 

     NSLog(@"Meters: %f" , peakPower); 
     NSLog(@"lowPassResults: %f \n" , lowPassResults); 
} 


//2. Call this method to run a loop timer to check the current mic activity 
-(void)enableMettering:(BOOL)enable 
{ 

    if(enable) 
    { 
     levelTimer = [[NSTimer scheduledTimerWithTimeInterval:0.03 
                target:self 
               selector:@selector(checkRecordingMeters:) 
               userInfo:nil 
               repeats:YES] retain]; 
    } 
    else 
    { 
     [levelTimer invalidate]; 
     [levelTimer release]; 
    } 
} 
+0

它不工作?總是打印lowPassResults == 0.00000,但是如何檢測用戶在麥克風上吹奏的聲音。請告訴我 –

1

您可以使用AudioQueue記錄並添加一個簡單的閾值過濾器來忽略環境噪聲。爲了降低延遲,您可以使用AudioUnit。

+0

嘿,在你的回答中提供一些鏈接或樣本。 – Devang

+4

@Devang:嘿,你自己做一些研究,不要指望別人爲你免費工作。 –

+0

@JoshCaswell:我正在研究谷歌,但沒有找到任何解決方案,因此要求鏈接。 – Devang

相關問題