从音频信号中提取二进制数据流

4
我有一串音频流中的二进制数据,我想要解码它。以下是Audacity的一个示例截图:

screenshot of data

每毫秒似乎都会有新的一点数据。这也意味着该数据以1000 Hz的波特率进行编码。每个包含20位(即需要20毫秒传输)再加上3毫秒高电平信号。这意味着数据包每23毫秒被重新发送一次。
因此问题是,我该如何将其转换为二进制文件?逐个手动操作是不可能的,除非你愿意这样做 :)
1个回答

4

这是一种数字调制技术,称为开关键控制(OOK)。

解码OOK相当容易:应用低通滤波器,截止频率略低于每个符号周期的1,降采样输出,以便每个符号持续时间只得到1个值,然后使用经验性阈值来决定什么是0和什么是1。

如果您想要真正精确,可能需要先找到准确的符号持续时间和符号起始点。这是一个经典的同步问题 - 在您的情况下,似乎发送方确保在每个符号转换时都有一个锐利的边缘,因此高通滤波器信号,您将获得一个时钟信号,您可以使用它来调整重新采样器,然后调整进入解码器的信号的采样率(如上所述)。

有一个很好的框架可以做到这一点;GNU Radio带有所有构建块,使其成为可能,它具有活跃的社区,如果您不在信号处理链中使用图形可视化,则生成的应用程序非常便携,高度优化,并且带有许多示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接