我試圖根據用戶是否發出響亮的聲音來執行某個操作。我不想做任何語音識別或任何事情。只需簡單地根據iPhone是否拾取響亮的聲音來執行操作即可。iPhone應用拾取聲音
任何建議,教程,我找不到蘋果開發者網站上的任何東西。我假設我不在尋找或搜索的權利。
我試圖根據用戶是否發出響亮的聲音來執行某個操作。我不想做任何語音識別或任何事情。只需簡單地根據iPhone是否拾取響亮的聲音來執行操作即可。iPhone應用拾取聲音
任何建議,教程,我找不到蘋果開發者網站上的任何東西。我假設我不在尋找或搜索的權利。
最簡單的事情就是使用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。在指數級上。你必須使用它來看看你的特定應用程序有什麼價值。
蘋果有一些例子,如Speak Here它看起來有分貝的代碼。我會檢查一些米類的例子。我沒有音頻編程的經驗,但希望這會讓你開始,而有人爲你提供更好的答案。
Hi @Joe。我可以在我的項目中使用Speak Here嗎? – 2015-06-03 12:43:50
謝謝,這會幫助我很多。 – Vikings 2011-03-26 04:05:25