gpt4 book ai didi

iPhone 应用程序拾取声音

转载 作者:行者123 更新时间:2023-12-03 20:23:28 24 4
gpt4 key购买 nike

我试图根据用户是否发出响亮的声音来执行某个操作。我不想做任何语音识别或任何事情。只需根据 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));

您将拥有一个为每个音频数据 block 调用的回调例程。在其中,您可以通过以下方式检查当前仪表级别:

//
// 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(表示非常响亮的声音)。在指数范围内。您必须使用它来查看哪些值适合您的特定应用程序。

关于iPhone 应用程序拾取声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436565/

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