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

时间:2015-06-14 19:39:00

标签: audio converter signal-processing audacity software-defined-radio

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

screenshot of data

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

我还可以判断每个数据包有20位(意味着传输需要20毫秒)加上3毫秒只是一个高信号。这意味着数据包每隔23毫秒重新发送

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

1 个答案:

答案 0 :(得分:3)

这是典型的数字调制案例,称为开关键控(OOK)。

解码OOK相当容易:应用一个截止频率刚好低于1 /符号周期的低通滤波器,对其输出进行抽取,以便每个符号持续时间只获得1个值,然后使用实验找到的阈值决定什么是0,什么是1。

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

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