sobota, 21 kwietnia 2018

Fizyka instrumentów - badanie charakterystyk różnych dźwięków


W ramach niniejszej pracy została stworzona aplikacja MuzoAnalizator do analizy częstotliwościowej dźwięków muzycznych w postaci cyfrowej. Przy użyciu tej aplikacji można wyznaczyć wartości cech opisanych w podrozdziale 3 dla dźwięków w formacie .snd (.au). W ramach tej pracy magisterskiej przeanalizowano dźwięki oktawy czwartej (w notacji MIDI) następujących instrumentów: skrzypce, fagot, trąbka, klarnet. W badaniach wykorzystano dostępne w internecie nagrania pojedynczych dźwięków instrumentów muzycznych zarejestrowane na Uniwersytecie Iowa [32]. Wnioski płynące z wzrokowej analizy uzyskanych wykresów cech w czasie zaprezentowano w podrozdziale.


 Konstrukcja i funkcjonalność aplikacji
W ramach niniejszej pracy została stworzona aplikacja MuzoAnalizator do analizy częstotliwościowej dźwięków muzycznych w postaci cyfrowej. Przy użyciu tej aplikacji można wyznaczyć wartości cech opisanych w podrozdziale dla dźwięków w formacie .snd (.au). W ramach tej pracy magisterskiej przeanalizowano dźwięki oktawy czwartej (w notacji MIDI) następujących instrumentów: skrzypce, fagot, trąbka, klarnet. W badaniach wykorzystano dostępne w internecie nagrania pojedynczych dźwięków instrumentów muzycznych zarejestrowane na Uniwersytecie Iowa. Wnioski płynące z wzrokowej analizy uzyskanych wykresów cech w czasie zaprezentowano w podrozdziale.

MuzoAnalizator jest aplikacją napisaną w języku C++ i jest aplikacją okienkową, a do tworzenia okien wykorzystuje ona interfejs WinAPI. Aplikacja składa się z okna głównego i menu. Po wybraniu opcji „Otwórz” z menu możliwe jest wskazanie pliku dźwiękowego w formacie .au (.snd), po czym w oknie głównym wyświetlany jest oscylogram wczytanego dźwięku. W przypadku, gdy plik zawiera dane z dwu kanałów (stereo) wyświetlony jest oscylogram obydwu kanałów, jeden pod drugim. Analizy są przeprowadzane w tym przypadku na sygnale powstałym przez uśrednienie wartości z obydwu kanałów za pomocą średniej arytmetycznej.

Kolejna opcja menu umożliwia wyznaczenie FFT zaznaczonego fragmentu dźwięku. Jeśli nie zostanie zaznaczony żaden fragment dźwięku aplikacja wyznaczy FFT dla środkowej ramki dźwięku, gdzie długość ramki wynosi 100 ms. Wybrano tu większą długość ramki, aby zapewnić większą rozdzielczość częstotliwościową wyświetlanego widma. W przypadku FFT liczonego na potrzeby wyznaczania wartości cech długość ramki wynosi 30 ms.

Po wybraniu opcji „Spektrogram” aplikacja oblicza obwiednie widma dźwięku dla kolejnych ramek dźwięku tak jak to zostało opisane w podrozdziale 3.3.1, a następnie wyświetla spektrogram w skali szarości. Kolor biały odpowiada maksymalnym wartościom, natomiast czarny – wartościom bliskim najmniejszej wartości występującej wśród wartości wszystkich obwiedni analizowanego dźwięku. Na osi pionowej spektrogramu są 34 zakresy częstotliwości (zastosowano rozdzielczość częstotliwościową równą ¼ oktawy), a na osi poziomej – kolejne ramki.

 Sekcja menu zatytułowana „Cechy” zawiera szereg elementów umożliwiających wybór cechy do wyliczenia. Osobną podsekcję stanowią tu cechy wyznaczane na podstawie struktury harmonicznej. Wykres wartości wybranej cechy w czasie pojawia się w oknie – dziecku. Na osi poziomej wykresu cechy są numery ramek, natomiast oś pionowa jest dopasowana do wartości danej cechy dźwięku – rozciąga się od wartości minimalnej cechy dla danego dźwięku do jego wartości maksymalnej. Ponadto po prawej stronie osi pionowej wskazana jest wartość cechy najczęściej występująca (moda, dominanta). Dominanta wyznaczana jest w ten sposób, że przedział pomiędzy największą i najmniejszą wartością cechy dzielony jest na tyle sekcji ile wynosi ilość ramek, w których szukana jest moda, a następnie zliczane są liczby wartości należących do poszczególnych sekcji. Jako moda przyjmowana jest średnia wartość spośród należących do sekcji o największej liczebności. W przypadku, gdy rozkład wartości cechy jest wielomodalny (występuje kilka dominant) wybierana jest moda najmniejsza co do wartości.

Przy zamykaniu okienka użytkownik pytany jest o chęć zapisu wartości cechy do pliku tekstowego o nazwie związanej z daną cechą. Plik zapisywany jest w katalogu, z którego odczytany był plik dźwiękowy. W sekcji „Cechy” występuje jeszcze opcja umożliwiająca zapis wszystkich analiz z sekcji „Cechy” do pliku „all.txt”.

Cechy wyliczane w aplikacji to: AudioSpectrumCentroid i AudioSpectrumSpread z MPEG7, SpectrumCentroid i SpectrumSpread w wersji liniowej, SpectralCentroid z MPEG7 (wyznaczany z widma Welcha), AudioSpectrumFlatness z MPEG7, wektor MFCC o 12 składowych, energia, RollOff, Flux, ZCR, częstotliwość podstawowa oraz zależności harmoniczne: Tristimulus1, Tristimulus2, Tristimulus3, jasność, zawartość nieparzystych i parzystych składowych harmonicznych oraz  AudioHarmonicity z MPEG7 (HarmonicRatio i UpperLimitOfHarmonicity).

Do wyznaczania cech spektralnych wykorzystywana jest analiza fourierowska. Zastosowano tu okienkowanie oknem Hamminga, a długość ramki i przesunięcie wynoszą odpowiednio 30 ms i 10 ms. Opis cech znajduje się w podrozdziale 3.3.
Aby lepiej zobrazować zależności pomiędzy poszczególnymi składowymi harmonicznymi w aplikacji dodano funkcjonalność pozwalającą na wyznaczenie wykresu nazwanego histogramem harmonicznym. Przedstawia on w formie wykresu kolumnowego energię przenoszoną przez poszczególne składowe harmoniczne wyrażoną względem energii przenoszonej przez wszystkie składowe harmoniczne razem. Aby ustrzec się przed analizowaniem składu harmonicznego w obszarze ataku, lub wybrzmiewania dźwięku (gdzie skład harmoniczny jest nieustalony) do wyznaczenia tej charakterystyki używane są ramki rozciągające się od 1/3 do 2/3 całego dźwięku. Dodatkowo przy wyznaczaniu histogramu brane są pod uwagę tylko te ramki, w których rozpoznana częstotliwość podstawowa (F0) jest bliska modzie, czyli nie odbiega o więcej niż 50 centów (pół półtonu) w górę lub w dół od dominanty częstotliwości podstawowych z tego zakresu. Przy wyznaczaniu mody stosowana jest poprawka na błędy oktawowe – jeśli sekcja zawierająca częstotliwości o połowę niższe zawiera co najmniej 80% ilości elementów występujących w sekcji najbardziej licznej to jako moda przyjmowana jest sekcja zawierająca częstotliwości o połowę niższe. Aby upewnić się, że histogram jest wyznaczony dla prawidłowej wartości F0 na wykresie histogramu harmonicznego w prawym górnym rogu wyświetlana jest wartość mody, na podstawie której ten wykres został sporządzony. Opcja wyznaczania histogramu harmonicznego występuje jako ostatnia pozycja w menu głównym aplikacji.

Brak komentarzy:

Prześlij komentarz