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

Имам двоични данни в поток от аудио и искам да ги декодирам. Ето примерна екранна снимка от Audacity:

екранна снимка на данните

Изглежда, че има нов бит данни на всяка милисекунда. Това също означава, че данните са кодирани при 1000 Hz със скорост на предаване 1000.

Също така мога да кажа, че всеки пакет има 20 бита (което означава, че са необходими 20 милисекунди за прехвърляне) плюс 3 милисекунди само висок сигнал. Това означава, че пакетът се изпраща повторно на всеки 23 милисекунди.


Така че въпросът е как да конвертирам това в двоичен файл? Преминаването и извършването на това на ръка е изключено - освен ако не сте готови да го направите :)


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


Отговори (1)


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

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

Може да се наложи първо да намерите точната продължителност на символа и началото на символа, ако искате да сте наистина точни. Това е класически проблем със синхронизацията -- във вашия случай изглежда, че изпращачът се грижи да има остър ръб при всеки преход на символа, така че високочестотният филтрира вашия сигнал и ще получите тактов сигнал, който можете да използвате, за да регулирате resampler, който след това ще коригира честотата на семплиране на сигнала, влизащ във вашия декодер (както е описано по-горе).

Има хубава рамка за това; GNU Radio идва с всички градивни елементи, от които се нуждаете, за да направите това, има активна общност, има GUI, който да ви помогне да разработите вашето приложение за обработка на сигнали, ако не използвате графични визуализации във вашата верига за обработка на сигнали, полученото приложение е наистина преносимо, то е силно оптимизирано и идва с много примери.

person Marcus Müller    schedule 16.06.2015