【发布时间】: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