Vik*_*ngs 2 iphone objective-c iphone-sdk-3.0 ios4
我试图根据用户是否发出响亮的声音来做某个动作.我不是想做任何语音识别或任何事情.只需根据iPhone是否发出响亮的声音来做一个动作.
任何建议,教程,我在苹果开发者网站上找不到任何东西.我假设我不正确或正确搜索.
最简单的方法是使用AudioQueue服务.这是手册: Apple AQ手册
基本上,查找使用AudioQueueNewInput()初始化事物的任何示例代码.像这样的东西:
Status = AudioQueueNewInput(&_Description,
Audio_Input_Buffer_Ready,
self,
NULL,
NULL,
0,
&self->Queue);
Run Code Online (Sandbox Code Playgroud)
完成后,您可以启用声级计量,如下所示:
// Turn on level metering (iOS 2.0 and later)
UInt32 on = 1;
AudioQueueSetProperty(self->Queue,kAudioQueueProperty_EnableLevelMetering,&on,sizeof(on));
Run Code Online (Sandbox Code Playgroud)
您将拥有一个为每个音频数据块调用的回调例程.在其中,您可以使用以下内容检查当前的仪表级别:
//
// 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];
}
Run Code Online (Sandbox Code Playgroud)
或者,在您的情况下,您可以检测分贝水平是否超过某个值足够长的时间而不是沉默.请注意,您将看到的分贝值范围从大约-70.0(对于死静音)到高达0.0db(非常响亮的事物).在指数范围内.您必须使用它来查看哪些值适用于您的特定应用程序.
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |