Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序的信号处理(莫尔斯码解码)_Android_Signal Processing_Audio Recording - Fatal编程技术网

Android应用程序的信号处理(莫尔斯码解码)

Android应用程序的信号处理(莫尔斯码解码),android,signal-processing,audio-recording,Android,Signal Processing,Audio Recording,我在Delphi中做了一个测试应用程序,它使用WindowsAPI的Beep函数发出莫尔斯电码的哔哔声。然后在Android上开发了一个应用程序,将摩尔斯电码存储在WAV文件中。现在我想让Android应用程序解码莫尔斯电码。是否有一些声音处理的教程,或者有人可以发布一些简单的代码(认为这里不简单)作为示例?或者我需要做些什么来让它工作 我还下载了JTransforms和jfttw库,但不知道从哪里开始 问候,, eviloneFFT在这方面做得太过分了-你可以用一个简单的方法将莫尔斯电码从背景

我在Delphi中做了一个测试应用程序,它使用WindowsAPI的Beep函数发出莫尔斯电码的哔哔声。然后在Android上开发了一个应用程序,将摩尔斯电码存储在WAV文件中。现在我想让Android应用程序解码莫尔斯电码。是否有一些声音处理的教程,或者有人可以发布一些简单的代码(认为这里不简单)作为示例?或者我需要做些什么来让它工作

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

问候,,
evilone

FFT在这方面做得太过分了-你可以用一个简单的方法将莫尔斯电码从背景噪声中分离出来,然后对其输出进行解码。

我想几年前QST杂志上有一篇关于莫尔斯/CW解码的DSP文章。可能想尝试搜索他们的档案

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


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

您可以先将任务分为确定音调是否存在,然后将计时解码为字符。尽管有人认为,如果你想跟踪可变条件,应该从第二个反馈到第一个反馈。您现在的测试数据将非常一致,因此比现实世界中的测试更容易。如果您已经知道莫尔斯电码音调的频率,Goertzel过滤器可能会工作。我假设,由于他首先创建音调,他将知道频率。;-)@是的,没错。WinAPI蜂鸣音的频率可以在37到32767 Hz之间。我用1206赫兹表示“.”,用1200赫兹表示“-”。但我还是不知道我需要从哪里开始解码这个文件中的莫尔斯。第一步是将文件读取到字节数组?@evilone:那不是真正的莫尔斯电码-点和破折号应该具有相同的频率-每个点的持续时间是携带信息的时间-点的持续时间是一个单位,破折号的持续时间是三个单位。@e-one:步骤可能包括:学习如何将WAV文件读取到(PCM)中内存中的样本数组。了解样本的含义(数据类型和抽样理论)。了解以音频样本的形式显示的嘟嘟声波形。了解如何编写一些DSP代码(Goertzel/IIR、FIR滤波器、DFT/FFT等)来检测数据中的波形。等等。这是正确的吗?@evione:可能有好几篇QST/QEX关于这个主题的文章。《特定常规武器公约》似乎需要一种特殊的发送技术。