Python Audio Transfer Through Lasers

В настоящее время я работаю над проектом, который до сих пор был относительно простым. В основе проекта лежит передача данных / сообщений через лазеры с использованием преобразования звука. Вкратце, процесс в настоящее время выглядит следующим образом

  1. Пользователь вводит сообщение
  2. Сообщение превращается в двоичное
  3. Для каждого 1 и 0 в двоичном сообщении, он воспроизводит соответствующий тон для сигнала, который, в моем случае 250 Гц для 1 и 450 Гц для 0.
  4. Исходящий тон отправляется по стереокабелю на установленный звуковой трансформатор. к лазеру
  5. Солнечная панель действует как микрофон и записывает входящий «звук» в виде файла
  6. . Они воспроизводят файл, считывают тоны и пытаются сопоставить каждые 250 и 450 Гц с 1 или 0 (в этом и заключается моя проблема).

До тех пор, пока фактическая обработка звука не налажена, моя текущая проблема заключается в следующем.

Я проигрываю каждый тон в течение x раз, на приемной стороне он записывается в течение y времени, время y сокращается , выборка много раз, а затем анализируется выборка за выборкой, которая затем регистрирует каждую частоту. Это неэффективно и неточно. У меня было много проблем, независимо от того, когда я играю тоны, потому что он часто слышит тон дважды или не слышит его вообще, что полностью отбрасывает целые сообщения.
Я попытался сопоставить частоту дискретизации со временем воспроизведения каждого тона, но, если не выровнять его соответствующим образом, это не сработает. У меня было всего несколько успешных тестов на сообщения типа «тест» и «привет». Я уже изучал bpsk и fsk, но мне кажется, что я уже делаю что-то подобное, но у меня плохой приемник, чтобы все это расшифровать.

Все это написано на Python, и я был бы очень благодарен за любые советы, предложения или возможные реализации, которые вы можете предоставить. Также для излучения тона я использую pyaudiere , а для записи я использую pyaudio .

Спасибо!

-Steve

5
задан pradyunsg 22 February 2013 в 09:14
поделиться