【问题标题】:Determine frequency from received audio mic input根据接收到的音频麦克风输入确定频率
【发布时间】:2011-03-18 02:59:40
【问题描述】:

对于通过 Internet 进行搜索,我有足够的代码来记录音频麦克风输入。使用 Apple 示例代码中的 Speak here 示例代码。我想要的是,我想在我的应用程序中显示 (UILabel) 中的频率。我有一个 ipod touch 第 3 代,我使用耳机麦克风录制音频。无论我通过麦克风接收到什么输入,我都想在 UILabel 中显示它的频率范围(hz)。我还下载了代码 aurio touch,但都给出了一些查找频率的提示。没有人给出任何示例代码来确定在 auriotouch 中使用 fft 的频率。我是 iphone 应用程序开发的新手。这是我的第一个任务,所以我想把它做好.所以请指导我一个正确的方法来做到这一点。我也不知道数字信号处理。(我有一个doube,是否只能使用正弦波的绘制区域来确定频率,或者我们自己计算)。

对于长时间冲浪,我还有一个示例名称 SCListener,在 github 中有源代码。当我下载并运行代码时,它会显示标签中显示的平均功率、峰值功率和频率值。在我的代码中使用这个正确的示例吗?而且我也不知道输出应该是 hz 还是 khz。

如何检查标签中记录的频率是否正确?

请帮助我........ 在此先感谢..抱歉我的英语不好。

【问题讨论】:

  • 如果你发布了这样的应用,请告诉我。

标签: iphone audio signal-processing


【解决方案1】:

您需要使用傅里叶变换。我所知道的最好的图书馆是 FFTW。

请记住,您不会获得单一频率;你会得到所有这些的混合,直到 sample_rate/2。您需要一些算法来选择正确的尖峰。

在进一步深入之前,您可能想退后一步阅读奈奎斯特理论和信号处理(特别是 FFT),否则您会犯很多错误。

【讨论】:

    【解决方案2】:

    检查您的频率标签是否显示正确值的一种方法是使用某种经过校准的信号发生器对其进行测试。

    您也许可以找到可以以已知频率播放正弦波的 Mac 或 PC 音频合成/生成器程序。试试看,并使用 iPod Touch 或 iOS 模拟器检查您的应用程序显示的结果。 (不要使用音乐声进行测试,它可能会产生一堆与识别音高非常不同的频率。)

    如果您有音频输入到 FFT 工作,并且正在测量比任何其他频谱内容响亮的正弦波频率,您可以尝试确定最大幅度的 FFT bin(结果索引)。频率的一个非常近似的估计是:

    frequency_estimate = bin_number * sample_rate / fft_length_in_samples;
    

    估计误差将与 (sample_rate / fft_length_in_samples) 成正比。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多