首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iPhone音频分析

iPhone音频分析
EN

Stack Overflow用户
提问于 2010-01-21 22:42:56
回答 4查看 4.5K关注 0票数 7

我正在研究开发一款iPhone应用程序,它可能会对从标准手机麦克风接收到的音频进行“简单”分析。具体来说,我对麦克风图片的高音和低音感兴趣,而介于两者之间的一切对我来说都是无关紧要的。

有没有应用程序已经做到了这一点(我只是想看看它能做什么)?我应该从哪里开始编写这样的代码呢?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-21 22:50:02

Audio Queue framework中查找。这是我用来获得高水位线的方法:

代码语言:javascript
运行
复制
AudioQueueRef audioQueue; // Imagine this is correctly set up
UInt32 dataSize = sizeof(AudioQueueLevelMeterState) * recordFormat.mChannelsPerFrame;
AudioQueueLevelMeterState *levels = (AudioQueueLevelMeterState*)malloc(dataSize);

float channelAvg = 0;

OSStatus rc = AudioQueueGetProperty(audioQueue, kAudioQueueProperty_CurrentLevelMeter, levels, &dataSize);
if (rc) {
    NSLog(@"AudioQueueGetProperty(CurrentLevelMeter) returned %@", rc);
} else {    
    for (int i = 0; i < recordFormat.mChannelsPerFrame; i++) {
        channelAvg += levels[i].mPeakPower;
    }
}
free(levels);

// This works because one channel always has an mAveragePower of 0.
return channelAvg;

您可以在dB自由刻度(使用kAudioQueueProperty_CurrentLevelMeterDB)中获得峰值功率,也可以简单地将其作为interval 0.0, 1.0中的浮点数。

票数 9
EN

Stack Overflow用户

发布于 2012-10-19 18:09:27

别忘了先开通AudioQueue的电平计量:

代码语言:javascript
运行
复制
UInt32 d = 1;
OSStatus status = AudioQueueSetProperty(mQueue, kAudioQueueProperty_EnableLevelMetering, &d, sizeof(UInt32));
票数 4
EN

Stack Overflow用户

发布于 2010-01-21 22:48:49

检查“SpeakHere”示例代码。它将向您展示如何使用AudioQueue接口录制音频。它还包含一些代码来分析音频实时显示水平仪。

你可能真的能够使用大多数的水平仪代码来响应“高”和“低”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2110009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档