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

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

我在音频流中有二进制数据,我想解码它。这是来自 Audacity 的示例屏幕截图:

screenshot of data

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

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


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

最佳答案

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

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

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

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

关于audio - 从音频信号中提取二进制数据流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833700/

相关文章:

audio - 给定 MP3,是否可以使用快速傅立叶变换 (FFT) 来分解不同的乐器?

java - 如何在Java中减少信号重叠中的噪声?

javascript - 通过 html 音频标签在移动浏览器上播放音频

iphone - 在 iPhone App 中生成暂停/不连续的蜂鸣声

c++ - 如何播放同时下载的mp3?

sql - 转换 yyyy-mm-dd hh :mm:ss to yyyy-mm-dd in sql

javascript - 将 Actionscript 转换为 Javascript

c# - 在组标题 WPF 中显示 "filled"行的数量

signal-processing - DSP - 使用 DFT 过滤频率

ios - 获取 iPhone 上音频输入的频率