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

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

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

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

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


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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам