【问题标题】:iPhone App Pick Up SoundiPhone App 拾音
【发布时间】:2011-03-25 18:26:24
【问题描述】:

我正在尝试根据用户是否发出响亮的声音来执行特定操作。我不想做任何语音识别或任何事情。只需根据 iPhone 是否听到响亮的声音进行操作即可。

任何建议、教程,我在苹果开发者网站上都找不到任何东西。我假设我没有寻找或搜索正确。

【问题讨论】:

    标签: iphone objective-c ios4 iphone-sdk-3.0


    【解决方案1】:

    对您来说最简单的事情是使用 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 表示非常响亮的声音。在指数范围内。您必须使用它来查看哪些值适用于您的特定应用程序。

    【讨论】:

    • 谢谢,这对我有很大帮助。
    【解决方案2】:

    Apple 有诸如Speak Here 之类的示例,它看起来有与分贝相关的代码。我会检查一些仪表类的例子。我没有音频编程经验,但希望能在有人为您提供更好的答案时帮助您入门。

    【讨论】:

    • 嗨@Joe。我可以在我的项目中使用 Speak Here 吗?
    • 嘿@GajendraKChauhan,IANAL,所以我将向您推荐the source 中的免责声明。如果您有任何问题,请咨询律师 :) 我希望我能提供更多帮助。
    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多