今天,我们来用人工智能算法识别语音通信中的呼号。

系统设置

  • 一台普通的手持对讲机
  • 一根自制的接收天线
  • 一台SDR,将无线电信号解调成语音音频
  • Google的云语音到文本服务,实现语音识别
  • Smith-Waterman算法实现序列比对,在数据库中找出可能性最高的呼号
  • 通过http服务器输出文本。

系统框图如下:

这是演示。它成功地监测通联的内容,并从数据库中找到过程中出现的呼号。

硬件(天线、USB型SDR、调频对讲机):

我把0.5米(约四分之一波长)长的铜导线连接到连接器上,形成天线。零件都是从淘宝淘的。

我使用手持调频对讲机发射。NooElec SDR用来接收来自天线的信号并发送到我的笔记本电脑。

完整的硬件设置如下所示。

软件定义无线电/数字信号处理:

软件无线电(SDR)是一种实现无线通信的新概念和体制,那些原先使用硬件实现的组件(例如混频器、滤波器、放大器、调制器/解调器、检波器等),可以通过软件手段在个人计算机上或嵌入式系统上实现。

我用SDRSharp做所有的信号处理和转换。下面显示了一个正在工作的SDRSharp的屏幕截图

语音识别:

我使用谷歌的云语音到文本服务API进行语音识别。

以下是片段。

但正如演示中所示,谷歌的云语音到文本服似乎有点困难,并产生了一些错误。这可能是由于背景噪音造成的。改进的方法是用从真正的业余无线电联络中收集的训练集来训练网络。

Smith-Waterman算法:

语音识别系统很可能会出现一些错误。我通过呼号数据库来改善这个问题。数据库可以使用各种来源的数据创建。例如,对于飞机无线电通信,dump1090是一个很好的程序,它可以通过解码1090MHz上发送的消息来获取飞机的信息。或者,我们可以简单地使用经常使用本地中继器那些人的日志来存储人们的呼号。

一旦我们有了一个呼号数据库,我们就可以使用Smith-Waterman对齐算法来找到最佳匹配。

以下是片段。

AJAX

对于实时更新,我使用AJAX。AJAX让你从包含呼号/演讲/时间戳的文件中自动获取信息。

通过在终端中键入以下命令,我在本地使用了一个简单的httpserver。

网页片段如下所示。

网页截图如下所示。

结束语

有很多有趣的事情可以用业余无线电来做,特别是当它与更新的技术相结合的时候(如人工智能)。所以,我决定做这个项目,并与大家分享。我希望你能从中找到乐趣。