【问题标题】:How to demodulate (audio) morse code如何解调(音频)莫尔斯电码
【发布时间】:2012-06-05 12:07:15
【问题描述】:

我有一个无线电接收器。那台收音机的声音输出到我的电脑。声音输出包含 440 Hz 或大约 440 Hz 的摩尔斯电码。该莫尔斯电码的速度范围可以从 2 到 20 WPM。我有点知道如何判断对方是否在传输,但是我如何将传输/未传输状态转换为文本?我认为可能有比蛮力更好的解决方案。

复杂因素:

  • 我希望程序能够计算出其他电台的传输速度,而不是像大多数摩尔斯电码程序那样由用户指定。
  • 有噪音
  • 莫尔斯电码发射器不会立即打开和关闭。上升和下降时间约为 4 毫秒。
  • 这个莫尔斯电码大部分是由人发送的,因此并不完美:
    • 例如,单词之间的停顿应该由 7 个元素组成,但也可以是 5 到 8 个元素。
    • 一个人的发送速度在一次对话中可能会有大约 20% 的变化
  • 我想或多或少地实时执行此操作。如果程序输出一些东西,意识到这是一个错误并纠正它,那就没关系了。

Source code

到目前为止的程序示例输出。它可以将音频解析为键控/非键控,但无法将其解析为点/破折号。

###########################################################__________________________
_________________________________####################################################
#####################################################################################
#######################################______________________________________________
_____________________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________________________
_____________________________________________________________________________________
_________________________

任何关于决定传输/不传输的代码/建议和/或将其解析为莫尔斯电码的部分都将不胜感激。

【问题讨论】:

  • 也许 Goertzel 过滤器在您的情况下有用吗? stackoverflow.com/questions/7273153/…
  • 速度现在不是真正的问题。 (它比它需要的速度快大约 10 倍。)无论如何我都试过了,结果发现它在检测音调时明显不那么繁琐。谢谢!
  • 听起来很有趣。如果您可以发布示例录音,我很乐意试一试。

标签: python morse-code


【解决方案1】:

关于将点与破折号和空格分开,一个想法是在对话开始时开始收集统计数据,并将所有“XXms of keyed”事件放入一个数组(或其他东西)和所有“YY ms of not keyed”进入另一个数组(或其他东西)。然后,您最终将得到一个直方图概率(t),用于键控和相同的未键控。这些直方图应该有一些最大值和最小值,对人类和某些算法都是可见的。因此,您对曲线进行了一些舍入,将它们拆分为这些最小值,以将左侧的点与右侧的破折号分开,与空格可能不止一个最小值相同。这种方法确实可以很好地融入对话,但不需要调整。

【讨论】:

  • @Nick ODell 是的(在文本中修复)。您很可能会将它们累积为 count(t),而不是概率,而是概念上相同的东西。
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多