java - 从麦克风 Java 检测频率

标签 java audio frequency

我想制作一个程序,可以将数据作为特定频率的脉冲传输,但不确定如何检测频率是否存在。

我认为我需要过滤掉所有不需要的频率,但我似乎找不到任何关于如何做到这一点的信息。

是否有任何库已经做到了这一点,或者我必须构建自己的库?有这样做的例子或类似的事情吗?

最佳答案

看起来您正在尝试实现 Modem ,并且强烈建议您查看用于此目的的经过验证的调制技术 - 通常 QPSKQAM 。您在问题中暗示的技术是幅度调制的粗略形式 - 本质上是用比特流调制给定频率的载波。 Heterodyning解调时可能是一个很好的起点。由于加窗的采样效应,使用 FFT 会产生较差的结果,从而导致带宽较差。

解调信号后您将面临的另一个实际问题是时钟恢复。原始比特流时钟很可能与接收器处的采样时钟异步。为了解码数据流,您需要恢复发送者的时钟(也就是说,它与本地时钟之间的关系)。一个Phased Lock Loop是实现这一目标的通常方法。

您还需要弄清楚如何检测比特流的开始 - 例如某种框架。

关于java - 从麦克风 Java 检测频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954144/

相关文章:

java - 为什么我在 Ubuntu 20.04 上从 Aptana 收到运行错误

macos - 如何捕获原生 OSX 音频数据?

javascript - javascript 中有没有类似于 Java 中的 JFugue 的库?

Java - 从 22050 降采样到 8000 给出零字节

google-sheets - 如何在 SPSS 中处理(Google 表单 - 电子表格) "Checkboxes"答案

java - 在 Java 中根据 Xml 模式数据类型验证字符串

java - 检查 wifi 是否启用和共享首选项

java - Android Retrofit 参数化@Headers

audio - Windows Media Foundation中的EVR的自定义演示者

timer - 如何设置16位P&F校正PWM中Timer1的频率和占空比