看了 morsecode.world 给出的摩斯码音频处理流程,大概思路是滤波+二值化+译码。
大体步骤有四步:
-
做滑动窗口的FFT。这一步是为了找到合适的滤波器参数,找到频率分量最大的那快区域,然后做窄带滤波,能够尽可能的提升信噪比。
这里要注意的是,FFT的点数影响时间分辨率和频率分辨率。如果做256点的FFT,Web Audio采样速率为48khz, 那么频率分辨率是 187.5Hz,也就是 采样率÷FFT点数。时间分辨力为5.3ms, 为FFT点数/采样率 (ms)。如果一个英文单词平均60个时间元, 每个时间元有2~3个采样点,那么256点FFT能够支持的wpm数量为 60x1000/(5.3x60x2.5)≈75 wpm.
所以,我们得到以下结论:
FFT点数越多,频率分辨率越精细,信噪比增益越大,但时间分辨率越模糊,能支持的wpm越小。 -
找到最大的频率分量bin,做滤波。
-
找到合适的幅度阈值,对音频信号,做二值化处理。
-
根据wpm,将二值化后时间序列译码为di-da.
网友评论