Dekodowanie dźwięku

0

Witam.
Rozpoczynam pracę nad programem, którego celem będzie odczytanie danych zakodowanych w krótkim sygnale dźwiękowym. Jest to temat związany z krótkofalarstwem, a dokładniej z systemem APRS. Projekt w skrócie można opisać następująco:
Na pewnej częstotliwości radiowej odbywa się transmisja cyfrowa (Packet Radio). Transmisja ta odbywa się za pomocą protokołu AX.25. Jeśli dźwięk jest nadawany z częstotliwością 1200Hz to mamy logiczne '0' natomiast na 2200Hz oznacza logiczne '1'. Moim celem jest stworzenie programu, który będzie potrafił przekształcić częstotliwości dźwiękowe na kod binarny. Docelowo program będzie pisany na raspberry pi (z zewnętrzną kartą dźwiękową), ale na początku dla ułatwienia planuję taki program napisać pod windowsa. Niestety nie wiem jak się za to zabrać. Nigdy nie pisałem programów, które musiałby wykorzystywać dźwięk. Język programowania nie ma znaczenia. Chcę poznać samą ideę dekodowania dźwięku.

0

A co to za dźwięk? Czy to zwykła sinusoida? Czy coś bardziej skomplikowanego?

0

Jeżeli chcesz tylko wyszukiwać obecność częstotliwości w sygnale, możesz wykorzystać algorytm Goertzela. Kiedyś się tym bawiłem, implementacja w C# wyglądała następująco:

private static double GoertzelFilter(float[] samples, double freq, int start, int end)
{
    double sPrev = 0.0;
    double sPrev2 = 0.0;
    int j;
    double normalizedfreq = freq / SIGNAL_SAMPLE_RATE;
    double coeff = 2 * Math.Cos(2 * Math.PI * normalizedfreq);
    for (j = start; j < end; j++)
    {
        double s = samples[j] + coeff * sPrev - sPrev2;
        sPrev2 = sPrev;
        sPrev = s;
    }
    double power = sPrev2 * sPrev2 + sPrev * sPrev - coeff * sPrev * sPrev2;
    return power;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1