morsecode.world 译码器的自适应实现
2022-05-28 本文已影响0人
alue
查看了 morsecode.world 里译码器的自适应参数调整机制,这里记录一下。
难点
- 怎么确定dit的duration?
- 怎么找到最佳频带?
- 怎么确定幅度的门限值
解决办法
最佳频带的自适应
每个tick做fft之后,都会更新 averageVolume
, 令其等于最近 bufferSize
的频谱之和。然后找到最大值对应的频带作为最佳频带。
dit的duration自适应
每一次flush之后,都会调用 timings2morse
方法,完成di-da字符的转换。然后执行 addDecode
方法,在这个方法内部,完成dit片元时间的自适应调整。
但这个方法严重依赖于初始字符的解调正确性。一旦初始参数与实际差距过大,就会出现一直无法解调的问题。
幅度门限值
并没有给出自适应的算法。
后续研究
- 完成初始wpm的估计。
- 完成幅度门限值的自适应调整。