Java 从麦克风检测频率
我想做一个程序,可以传输特定频率的脉冲数据,但不确定如何检测是否存在频率 我想我需要过滤掉所有不需要的频率,但我似乎找不到任何方法Java 从麦克风检测频率,java,audio,frequency,Java,Audio,Frequency,我想做一个程序,可以传输特定频率的脉冲数据,但不确定如何检测是否存在频率 我想我需要过滤掉所有不需要的频率,但我似乎找不到任何方法 是否有任何库已经这样做了,或者我必须建立自己的库?有这样或类似的例子吗?您需要对信号数据应用傅里叶变换,以便在频域中查看它。是一个开源库,您可以使用它来实现这一点 看起来您似乎正在尝试实现一种新的调制方式,建议您查看用于此目的的经验证的调制技术—通常是和。你在问题中暗示的技术是振幅调制的一种粗略形式——本质上是用比特流调制给定频率的载波。在解调时,这可能是一个很好的
是否有任何库已经这样做了,或者我必须建立自己的库?有这样或类似的例子吗?您需要对信号数据应用傅里叶变换,以便在频域中查看它。是一个开源库,您可以使用它来实现这一点 看起来您似乎正在尝试实现一种新的调制方式,建议您查看用于此目的的经验证的调制技术—通常是和。你在问题中暗示的技术是振幅调制的一种粗略形式——本质上是用比特流调制给定频率的载波。在解调时,这可能是一个很好的起点。由于加窗的采样效应,使用FFT将产生较差的结果,这将导致较差的带宽 解调信号后,您将面临的另一个实际问题是时钟恢复。原始比特流时钟极有可能与接收器处的采样时钟异步。为了解码数据流,您需要恢复发送方的时钟(也就是说,它与本地时钟之间的关系)。A是实现这一目标的常用方法
您还需要了解如何检测比特流的开始-例如,某种帧 寻找快速的Fourie转换。Apache数学库中提供了一些方法。您还可以查看tuxguitar项目的源代码,并了解调谐器是如何在那里制作的。(也使用FFT)根据脉冲的宽度和频率,如果OP打算检测频率超过窗口周期两倍的脉冲,DFT是一个糟糕的选择。如果需要任何类型的频率识别,这是一个非常差的比特率。