1

我有二进制数据在音频流中,我想解码它。这里是无畏的示例屏幕截图:从音频信号中提取二进制数据流

screenshot of data

似乎有数据的每毫秒一个新的位。这也意味着数据编码为1000 Hz,波特率为1000

我还可以告诉每个分组具有20个比特(意味着它需要20毫秒传输)加3毫秒只是一个高信号的。这意味着数据包每23毫秒发送一次


所以问题是,我将如何将其转换为二进制文件?经过手工完成是不可能的 - 除非你愿意这样做:)

回答

2

这是数字调制的一种典型情况,称为开关键控(OOK)。

解码OOK相当容易:应用低于1 /符号周期的截止频率的低通滤波器,抽取它的输出,以便每个符号持续时间只获得1个值,然后使用实验发现的阈值来决定什么是0和什么是1.

如果你想要确切地确切,你可能需要找到确切的符号持续时间和符号开始。这是一个经典的同步问题 - 在你的情况下,似乎发送者确保在每次符号转换时都有一个尖锐的边缘,所以高通滤波你的信号,你会得到一个时钟信号,你可以用它来调整一个重新采样器,然后可以调整进入解码器的信号采样率(如上所述)。

有一个很好的框架来做到这一点; GNU Radio附带您需要实现的所有构建模块,它有一个活跃的社区,还有一个GUI可帮助您开发信号处理应用程序,如果在信号处理链中不使用图形可视化,则生成的应用程序非常便于携带,高度优化,并附带大量示例。