Извлечь поток двоичных данных из аудиосигнала

У меня есть двоичные данные в аудиопотоке, и я хочу их декодировать. Вот пример скриншота из Audacity:

скриншот данных

Каждую миллисекунду появляется новый бит данных. Это также означает, что данные кодируются с частотой 1000 Гц и скоростью передачи 1000 бод.

Я также могу сказать, что каждый пакет состоит из 20 бит (это означает, что передача занимает 20 миллисекунд) плюс 3 миллисекунды только высокого уровня сигнала. Это означает, что пакет повторно отправляется каждые 23 миллисекунды.


Итак, вопрос в том, как мне преобразовать это в двоичный файл? Пройти и сделать это вручную не может быть и речи - если, конечно, вы не готовы это сделать :)


person Coder-256    schedule 14.06.2015    source источник


Ответы (1)


Это типичный случай цифровой модуляции, известной как on-off keying (OOK).

Декодировать OOK довольно просто: примените фильтр нижних частот с частотой среза чуть ниже 1/периодичность символа, уменьшите его выход так, чтобы вы получали только 1 значение на длительность символа, а затем используйте экспериментально найденный порог, чтобы решить, что 0 и что такое 1.

Возможно, вам придется сначала найти точную продолжительность символа и начало символа, если вы хотите быть действительно точным. Это классическая проблема синхронизации — в вашем случае кажется, что отправитель следит за тем, чтобы при каждом переходе символа был резкий край, поэтому фильтруйте ваш сигнал фильтром высоких частот, и вы получите тактовый сигнал, который вы можете использовать для настройки. ресемплер, который затем регулирует частоту дискретизации сигнала, поступающего в ваш декодер (как описано выше).

Для этого есть хорошая структура; GNU Radio поставляется со всеми строительными блоками, необходимыми для этого. активное сообщество, есть графический интерфейс, который поможет вам разработать приложение для обработки сигналов, если вы не используете графическую визуализацию в своей цепочке обработки сигналов, полученное приложение будет действительно переносимым, оно высоко оптимизировано и поставляется с большим количеством примеров.

person Marcus Müller    schedule 16.06.2015