【问题标题】:Android Microphone To Pick Up A Specific ToneAndroid 麦克风拾取特定音调
【发布时间】:2011-06-18 02:23:35
【问题描述】:

您好,我想知道是否可以使用 android 音调生成器类在一个设备中创建音调并在另一台设备中收听相同的音调。如果可能的话,我还有其他一些问题。

考虑到背景噪音是否可以只听这种特定的音调?

这个过程会占用大量资源吗?

我可以使用人耳听不到或接近人耳听不到的音调吗?

最后,我可以使用只能在距离发送设备几英尺远的地方才能听到的音调吗?

非常感谢你们的时间男孩和女孩:)

编辑 > 感谢您添加音频处理标签 sabastian。更好的描述。

【问题讨论】:

    标签: android microphone audio-processing


    【解决方案1】:

    这将是 CPU 密集型的,是的。 方法很简单:您需要一个永久记录器,将接收到的数据放入 FFT(快速傅立叶变换)。 FFT 基本上只做一件事:将音频分成频率/功率等级。有了这个“清除背景噪音”的结果,您可以检查诸如“是否有 1000Hz 的音调播放至少 2 秒”之类的东西 - 并采取相应的行动。 这里有一个合理的速度 FFT 实现:http://www.badlogicgames.com/wordpress/?p=449 FFT 也可用于(实际上是使用 IS)检测双音拨号 (DTMF) - 同时使用 2 个频率比仅使用一个要好得多(因为错误率显着下降,并且您可以缩短发送音调的持续时间/检测)。

    “听不见”是不可能的,因为 (a) 扬声器无法发出这样的声音 (b) 您的采样率受到限制 - 因此在产生和录制如此高的频率方面也受到限制。

    “几英尺”自然会被强加(不是很响亮的扬声器,不是很好的麦克风)。

    【讨论】:

    • 如果适用于Android 2.3,系统中似乎已经有FFT,请查看stackoverflow.com/questions/4720512/…
    • 各位非常感谢您的回复。我现在至少现在可以做到。我对操作的顺序仍然很困惑。如果有人知道它是如何完成的,他们可能有机会编写几行显示步骤顺序的伪代码。感谢您的帮助
    • 这不是“几行伪代码”,抱歉。你想要的是一个非常特殊的东西(坦率地说,一个非常复杂的东西)有特殊需要,所以一些“伪代码”对你没有帮助。如果您在订购“何时做什么(订购)”时遇到问题,那么您最终还没有准备好编写这种代码。
    • 感谢奥利弗。我真正想要的是知道一个设备与另一个设备相距几英尺。 iv 看着使用蓝牙 rssi,但这也没有成功。有什么更简单的方法可以推荐吗?
    • 全球定位系统?至少不是您描述的“音调方法”,它实际上不适用于您想做的事情(电池将在不到 30 分钟内耗尽,因为录音必须始终)。但 GPS 也需要相当多的电量……蓝牙是一种可行的方法。准确度最终不足以让两者都“几英尺”。
    【解决方案2】:

    看看另一个问题:"Android: Need to record mic input"。我认为您可以针对您的任务对其进行修改,然后使用声音字节进行过滤或 FFT。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      相关资源
      最近更新 更多