logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

dźwięk w dziedzinie częstotliwości

spychu86 06 Sie 2010 00:24 1377 4
  • #1 8369738
    spychu86
    Poziom 2  
    Witam,
    Zależy mi na przedstawieniu dźwięku w dziedzinie częstotliwości.
    Chciałbym wczytać plik dźwiękowy wav i przeanalizować wartości dB w zależności od częstotliwości.
    FFT na wejście potrzebuje próbek o wielkość 2^n.
    To oznacza, że należy podzielić sygnał dźwiękowy na próbki o wielkości np 1024.
    To oznacza, że będę miał wiele przetworzonych przez FFT okien.
    Jak następnie, połączyć te wyniki w całość by otrzymać szukaną zależność wartości dB od częstotliwości?

    Słowem zależy mi otrzymaniu takiego wykresu:
    http://en.wikipedia.org/wiki/File:Voice_waveform_and_spectrum.png
    Kod piszę w javie, wszelkie propozycje bibliotek mile widziane
  • Pomocny post
    #2 8369913
    arturt134
    Poziom 27  
    Odpowiedź masz na własnym rysunku.
    Ten po prawej jest podpisany: Spectrum of voice signal (15 seconds) - czyli jak widzisz jest to średnia z 15 sekund. Musisz tylko pamiętać o tym, żeby uśredniać wartości przed przeliczeniem ich na decybele. na dB przelicz dopiero wynik końcowy.
  • #3 8370656
    spychu86
    Poziom 2  
    Dzięki za odpowiedź.
    Czy wektory z poszczególnych próbek powinienem normalizować przed ich uśrednieniem?
    Wartości po FFT w wektorze są czasem ujemne, co jest kłopotliwe przy przeliczeniu na skalę dB, jak najlepiej rozwiązać ten problem by przeskalować je na wartości większe od zera?
  • #4 8370846
    arturt134
    Poziom 27  
    Cytat:
    Czy wektory z poszczególnych próbek powinienem normalizować przed ich uśrednieniem?

    Niby po co? I względem czego? Przecież chcesz mieć wartość średnią za czas pomiaru....
    Cytat:
    Wartości po FFT w wektorze są czasem ujemne, co jest kłopotliwe przy przeliczeniu na skalę dB, jak najlepiej rozwiązać ten problem by przeskalować je na wartości większe od zera?

    Nie rozumiem jak mogą się pojawić wartości mniejsze od 0. No chyba że są one minimalnie mniejsze, a ich ujemny znak wynika z błędów zaokrągleń / przepełnień. W takim przypadku traktuj to jako 0. Jeżeli amplituda jest ujemna znacznie, to nie wiem co z tym zrobić... może warto sprawdzić algorytm... A może ktoś z kolegów poda jakieś rozsądne rozwiązanie.
  • #5 8371436
    spychu86
    Poziom 2  
    Rzeczywiście błąd był w algorytmie.
    dzięki za pomoc!
REKLAMA