我正在研究开发一款iPhone应用程序,它可能会对从标准手机麦克风接收到的音频进行“简单”分析。具体来说,我对麦克风图片的高音和低音感兴趣,而介于两者之间的一切对我来说都是无关紧要的。
有没有应用程序已经做到了这一点(我只是想看看它能做什么)?我应该从哪里开始编写这样的代码呢?
谢谢你的帮助。
发布于 2010-01-21 22:50:02
在Audio Queue framework中查找。这是我用来获得高水位线的方法:
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中的浮点数。
发布于 2012-10-19 18:09:27
别忘了先开通AudioQueue的电平计量:
UInt32 d = 1;
OSStatus status = AudioQueueSetProperty(mQueue, kAudioQueueProperty_EnableLevelMetering, &d, sizeof(UInt32));
发布于 2010-01-21 22:48:49
检查“SpeakHere”示例代码。它将向您展示如何使用AudioQueue接口录制音频。它还包含一些代码来分析音频实时显示水平仪。
你可能真的能够使用大多数的水平仪代码来响应“高”和“低”。
https://stackoverflow.com/questions/2110009
复制相似问题