gpt4 book ai didi

iphone - 在IOS中检测到拍手

转载 作者:行者123 更新时间:2023-12-02 23:58:32 25 4
gpt4 key购买 nike

我正在尝试构建一个掌声的IOS应用程序。我一直在看CoreAudio上的WWDC视频,这个话题似乎太大了,我不确定在哪里看。

我在stackoverflow中发现了类似的问题。这是C#中用于检测门砰的一种:
Given an audio stream, find when a door slams (sound pressure level calculation?)

看来我需要这样做:

  • 将样本分成
  • 部分
  • 计算每个部分的能量
  • 取上一个窗口和当前窗口之间的能量比
  • 如果该比率超过某个阈值,请确定突然有大声噪音。

  • 我不确定如何在Objective-C中完成此操作。
    我已经能够弄清楚如何使用 来采样音频SCListener
    这是我的尝试:
    - (void)levelTimerCallback:(NSTimer *)timer {
    [recorder updateMeters];

    const double ALPHA = 0.05;
    double peakPowerForChannel = pow(10, (0.05 * [recorder peakPowerForChannel:0]));
    lowPassResults = ALPHA * peakPowerForChannel + (1.0 - ALPHA) * lowPassResults;


    if ([recorder peakPowerForChannel:0] == 0)
    totalClapsLabel.text = [NSString stringWithFormat:@"%d", total++];

    SCListener *listener = [SCListener sharedListener];
    if (![listener isListening])
    return;

    AudioQueueLevelMeterState *levels = [listener levels];
    Float32 peak = levels[0].mPeakPower;
    Float32 average = levels[0].mAveragePower;


    lowPassResultsLabel.text = [NSString stringWithFormat:@"%f", lowPassResults];
    peakInputLabel.text = [NSString stringWithFormat:@"%f", peak];
    averageInputLabel.text = [NSString stringWithFormat:@"%f", average];

    }

    尽管我看到了建议的算法,但是我不清楚如何在Objective-C中实现它。

    最佳答案

    您没有提到要寻找哪种检测保真度?老实说,仅检查某种声音的“压力”变化可能就完全可以满足您的需求。

    但是请记住,电话的撞击最终可能是频率非常低且功率较高的脉冲,即使它不是真正的拍手,它也会触发您的检测器。同上也用于不太高频的声源,也不太可能拍手。

    这样可以满足您的需求吗?

    如果不是,并且您希望获得更高的保真度,我认为您最好对输入信号进行频谱分析(FFT),然后在更窄的频带中寻找尖锐的信号尖峰,类似于您已经有。

    我没有仔细研究此源,但是这里有一些可能的开源FFT代码,您可以原样将其用于iPhone应用程序:

    编辑:
    https://github.com/alexbw/iPhoneFFT

    绘制频谱结果曲线图的妙处在于,它应该很容易调整您实际关心的频率范围。在我使用某些笔记本电脑软件进行的测试中,我的拍手在1kHz-2kHz左右有一个很强的尖峰。

    可能会满足您的需求,但是如果您需要更高保真度的东西,那么我怀疑您一开始不知道哪个频率范围会导致信号尖峰,仅跟踪信号尖峰将不满意。

    干杯

    关于iphone - 在IOS中检测到拍手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192264/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com