我需要一种从麦克风获取频率并确定平均频率的方法。有图书馆或其他东西来处理这个吗?
谢谢
如果您的目标是 iOS 4 及更高版本,Apple 现在包含 Accelerate 框架。来自 Apple 的“最新消息”页面:
http://developer.apple.com/technologies/iphone/whats-new.html#api
加速
Accelerate 提供数百个针对 iPhone 和 iPod touch 优化的数学函数,包括信号处理例程、快速傅里叶变换、基本向量和矩阵运算,以及用于分解矩阵和求解线性方程组的行业标准函数。
你会想要使用 FFT,所以我建议你看看这个问答:
您可以使用EZAudio
类来获取频率
在此处下载演示
并使用此方法获取频率
- (void) fft:(EZAudioFFT *)fft updatedWithFFTData:(float *)fftData bufferSize:(vDSP_Length)bufferSize
{
float maxFrequency = [fft maxFrequency];
NSString *noteName = [EZAudioUtilities noteNameStringForFrequency:maxFrequency
includeOctave:YES];
dispatch_async(dispatch_get_main_queue(), ^{
[audioPlotFreq updateBuffer:fftData withBufferSize:(UInt32)bufferSize];
NSLog(@"Frequncy : %f Highest Note : %@",maxFrequency,noteName);
});
}