Я создал небольшую программу, которая кодирует двоичные данные в звук. Например, следующий бинарный вход:Как интерпретировать двоичные данные, закодированные аудио?
00101101
будет производить звук «», как это:
################..S.SS.S################
где каждый символ представляет собой постоянную единицу времени. #
обозначает синусоидальную волну 880 Hertz, которая используется для определения начала и конца передачи, .
обозначает тишину, представляющую нули, а S
обозначает 440 Hertz синусоидальную волну, представляющую собой. Очевидно, что часть в середине намного практичнее.
Суть моего вопроса: как я могу инвертировать эту операцию?
Звуковой файл передается получателю посредством простого воспроизведения и записи звука. Это означает, что я не пытаюсь декодировать оригинальный звуковой файл, который был бы легким.
Очевидно, что мне приходится анализировать записанные данные по частоте. Но как? Я немного прочитал о преобразовании Фурье, но я здесь совсем потерялся.
Я не уверен, с чего начать, но я знаю, что это не тривиально и, вероятно, требует достаточно знаний об обработке сигналов. Может кто-нибудь указать мне в правильном направлении?
BTW: Я делаю это в Ruby (я знаю, это медленно - это просто доказательство концепции), но сама проблема не является языком программирования, поэтому любые ответы очень приветствуются.
Вы описываете [Audio Shift Keying.] (Http://en.wikipedia.org)./wiki/Frequency-shift_keying # Audio_FSK) –
http://stackoverflow.com/questions/3714321/open-source-fsk-decoder-library –
ah great, почему бы не изобретать велосипед? :) спасибо за подсказки! –