Obecnie pracuję nad projektem, który do tej pory był stosunkowo łatwy. Podstawowym projektem jest przesyłanie danych/wiadomości za pomocą laserów za pomocą transformacji audio. W skrócie proces ten jest obecnie jak toPython Audio Transfer przez lasery
- użytkownik wprowadzi wiadomość
- Wiadomość zostanie przekształcony binarny
- Na każdy 1 i 0 w komunikacie binarnym, odgrywa odpowiedni sygnał do sygnału, który to jest, w moim przypadku 250 Hz dla 1 i 450 Hz dla 0.
- Sygnał wyjściowy jest przesyłany kablem stereo do transformatora audio przymocowanego do lasera. Panel słoneczny działa jak mikrofon i rejestruje przychodzące "dźwięk" jako plik
- Po odtworzeniu pliku odczytuje on sygnały i próbuje dopasować 250 i 450 Hz do 1 lub 0 (na czym polega mój problem).
Aż do faktycznego przetworzenia dźwięku jest w porządku, mój obecny numer jest następujący.
Odtwarzam tony po raz x, na końcu odbiorczym jest nagrywany dla czasu y, czas y jest wycinany próbkowany wielokrotnie, a następnie analizowana próbka według próbki, która następnie rejestruje każdą częstotliwość. Jest to nieskuteczne i niedokładne. Miałem wiele problemów niezależnie od czasu, w którym odtwarzam dźwięki, ponieważ często słyszę dźwięk dwukrotnie lub zupełnie go nie słyszę, co całkowicie odrzuca całe wiadomości.
Próbowałem dopasować szybkość, z jaką pobiera próbki z czasem odtwarzania każdego dźwięku, ale jeśli nie jest odpowiednio wyjustowany, to nie działa. Miałem tylko kilka udanych testów dla wiadomości takich jak "test" i "cześć". Zajrzałem już do bpsk i fsk, ale czuję się tak, jakbym już robił coś takiego, ale mam zły odbiór, żeby to wszystko rozszyfrować.
To wszystko jest napisane w Pythonie i byłbym bardzo wdzięczny za wszelkie wskazówki, sugestie lub możliwe implementacje, które możesz dostarczyć. Również do emisji dźwięku używam pyaudiere
i do nagrywania używam pyaudio
.
Dzięki!
-Steve
Dobre pytanie - jest bardziej powiązane z DSP niż związane z programowaniem, więc możesz spróbować http://DSP.stackexchange.com –
Jak długo jest każdy ton i jakiej metody obecnie używasz do wykrywania? –
możliwy duplikat [Binary Phase Shift Keying w Pythonie] (http://stackoverflow.com/questions/7466715/binary-phase-shift-keying-in-python) –