检测音频信号中的频率变化点

时间:2015-04-05 14:12:04

标签: android audio fft frequency-analysis

我正在录制带有预备音的fsk信号。采样率为8000(样本/秒),初步音的频率为440Hz(用8192个样本进行重新调整 - 大约播放1秒)。数据信号包含两个频率,934Hz表示'1',510Hz表示'0',编码信息是字符'8'(00111000),每个比特用8192个样本表示,数据信号紧跟在初步基调。我使用以下代码来捕获音频字节,唯一的区别是我将它们写入ByteArrayOutputStream。 https://stackoverflow.com/questions/23432398/audio-recorder-in-android-process-the-audio-bytes

我试图找到频率从初步音调的440Hz变为表示比特“0”(510Hz)的频率的点。我正在做的一般想法是解码消息。我正在使用FFT算法,使用Hann窗口和HPS方法(http://cnx.org/contents/8b900091-908f-42ad-b93d-806415434b46@2/Pitch_Detection_Algorithms)(我知道这不是最好的方法,还有其他算法可以表现得更好,但这些是我现在的指示。)< / p>

有没有办法检测到这一点?我可以用FFT来做吗?

1 个答案:

答案 0 :(得分:0)

长度为8192的3个滑动Goertzel过滤器可以使用。估算频率转换/更改时间,使其位于任何2个滑动滤波器的幅度输出之间的差值的最大值。

同时检查你的音调和麦克风,看看它们是否有频率低的频率响应,这可能就是你检测泛音的原因。