【问题标题】:Signal-processing (morse code decoding) with Android application使用 Android 应用程序进行信号处理(摩尔斯电码解码)
【发布时间】:2011-11-08 13:04:48
【问题描述】:

我在 Delphi 中制作了一个测试应用程序,它使用 Windows API Beep 函数发出摩斯电码。然后在 Android 中制作了一个应用程序,将这个莫尔斯电码存储在 WAV 文件中。现在我想让 Android 应用程序解码莫尔斯电码。是否有一些声音处理教程或者有人可以发布一些简单的代码(认为这里没有简单性)作为示例?或者也许我需要做一些步骤才能让它工作?

我还下载了 JTransforms 和 jfttw 库,但不知道从哪里开始。

问候, 恶人

【问题讨论】:

  • 您可以首先将任务分离为确定是否存在音调,然后将时间解码为字符。尽管有人可能会争辩说,如果您想跟踪可变条件,则应该从第二个到第一个反馈。您现在的测试数据将非常一致,因此比在现实世界中更容易。

标签: android signal-processing audio-recording


【解决方案1】:

为此,FFT 是多余的 - 您可以使用简单的 Goertzel filter 将莫尔斯电码与背景噪声隔离,然后解码此输出。

【讨论】:

  • 如果您已经知道摩尔斯电码音调的频率,Goertzel 滤波器可能会起作用。
  • 我假设,因为他首先创建了音调,所以他会知道频率。 ;-)
  • @Paul R 是的,没错。 WinAPI 哔声的频率可以在 37 到 32767 Hz 之间。我将 1206 Hz 用于“。” '-' 为 1200 Hz。但仍然无法弄清楚我需要从哪里开始从这个文件中解码莫尔斯。第一步是将文件读入字节数组?
  • @evilone:那不是真正的摩尔斯电码 - 点和破折号应该有相同的频率 - 每个的持续时间是携带信息的 - 点是一个单位的持续时间,破折号是三个单位的持续时间.
  • @e-one :步骤可能包括: 了解如何将 WAV 文件读入内存中的 (PCM) 样本数组。了解样本的含义(数据类型和抽样理论)。以音频样本的形式了解您的哔声波形可能是什么样子。弄清楚如何编写一些 DSP 代码(Goertzel/IIR、FIR 滤波器、DFT/FFT 等)来检测数据中的这些波形。等等。
【解决方案2】:

我认为几年前 QST 杂志的一个较早的问题有一篇关于 DSP 用于 Morse/CW 解码的文章。可能想尝试搜索他们的档案。

基本上,您需要 DSP 代码来确定在任何给定时间点是否存在音调,并估计每个音调的开始和关闭时间。然后为预期的代码速度缩放每个音调的持续时间和音调之间的间隔时间,并与每个摩尔斯电码字母的时序表进行比较,以估计每个或任何字母出现的概率。

在最简单的情况下,您可能有一个点划线空间决策树。在严重的噪音和衰落以及高度个性化的拳头/计时中,您可能需要一些复杂的统计和/或自适应音频模式匹配技术才能获得不错的结果。

【讨论】:

猜你喜欢
  • 2020-02-05
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
相关资源
最近更新 更多