输入音频分析并生成特定频率输出

时间:2010-10-15 12:51:37

标签: java audio frequency frequency-analysis

我的目标是拥有一组频率,如2个频率,代表比特(0和1)。我想通过声卡将这些频率发送到音频输出。在另一端,我将线连接到声卡的麦克风。我喜欢从其他计算机感知该信号(生成2个固定频率的系列)并重新形成数据。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

嗯,首先你要产生两个特定频率的正弦波。基本上,您可以了解声卡的当前采样率,并生成一系列浮点数,表示该采样率下特定频率的正弦波。即对于48000赫兹和1000赫兹频率的声卡,每个正弦波(一个山,一个波谷)应由48个样本组成。

请注意,您可以生成的最大频率是采样率的一半。

接下来,使用第二个频率生成第二个正弦波。确保两个频率彼此之间有一定距离。频率因子为一个半音应该足以满足factor >= (1+1/12)

同时确保两个鼻窦的总和不会超过最大振幅。最简单的方法是将两个窦限制为幅度<= 0.5。过冲会剪切信号,从而产生新的频率峰值。

在接收端,对输入信号的短时间片(大约256-1024个样本)进行FFT。为了获得更好的频率分辨率,请采用重叠切片并逐渐淡出末端,然后对光谱切片进行时间平均。在得到的频谱中,您应该清楚地看到两个发送频率的峰值。

如果您对音频知之甚少,这可能是一项非常艰巨的任务。