【问题标题】:Audio Frequency in AndroidAndroid中的音频
【发布时间】:2011-09-19 05:10:04
【问题描述】:

我编写了一个获取音频频率的代码。
我使用过零算法将短数组转换为频率(int)。 它工作正常。
每当我在我的 PC 中播放 2500Hz 音频时,它都给了我完美的价值。
例如2500Hz=1400
如果我播放 2500Hz 音频 10 秒,它会给我 1400 10 秒
所以我可以说它工作正常,没有任何问题。代码没有任何问题。

但现在我的问题是,每当我更改设备时,输出也会更改。
例如,当我使用 Samsung GT-i5700.(Android 2.2)
时得到以上输出 但是当我使用 Micro-max A-60(Android 2.1) 时,它会给我类似 2500Hz=771 的输出。

找不到原因,为什么更换设备后输出会改变?
我该如何解决这个问题?
安卓版本和音频有关系吗?
注意:
我有将 PC 扬声器输出到设备 MIC 的电缆。所以我可以在 PC 上播放 Tone 并直接发送到 Device MIC。

【问题讨论】:

  • 也许两个设备的采样率不同?但是请注意,使用过零是一种非常不可靠的频率测量方法 - 它仅适用于零噪声的纯音(正弦曲线)。添加滞后可能会有所帮助,但绝不会是一个很好的解决方案。
  • 请将您的代码粘贴到这里,我们希望看到它以帮助您,如果您已经拥有它,请与我们分享,谢谢VanPersie

标签: android audio frequency android-sdk-2.1


【解决方案1】:

在 Android 上使用这个implementation,我发现它也很少能获得正确的频率。但是,当它听到一个音调而不是随机语音时,它确实会产生一个“一致”的值,这仍然很有用。

【讨论】:

    【解决方案2】:

    如果在您更换手机时计算的频率发生变化,那么我预计您的代码实际上并不好。您是否尝试过第三部手机并观察它给出的结果是否与前两部手机中的一部匹配?

    如果您正在寻找可能更准确的解决方案(说 2500Hz 音调输出 1400 对我来说似乎很奇怪),请查看 How do you analyse the fundamental frequency of a PCM or WAV sample? 以获取选项。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多