Wykorzystanie technologii.net do identyfikacji rodzaju głosu w aplikacjach mobilnych.

Podobne dokumenty
ż ć ć ć ż ń ć ż ć ż Ę ć ż

Ż ć Ć ć Ś Ś Ż Ć ć ć ć

Wykorzystanie Szybkiej Transformaty Fouriera do strojenia instrumentów gitarowych na urządzeniach mobilnych.

ń

ź ź ŁĄ ź Ę Ę Ę Ę ź ź Ę Ę Ł ź

ę ź ć ź

ź ć

Ł Ń ś ń ć Ź ś ń

Ó Ż ż Ć ż ż ż Ó Ę Ę Ó Ó ż Ó Ł ż Ł

ć ź ć Ó

Ł Ą Ó Ł ć Ą ć ć

Ż Ę Ż Ł Ą ź ć ć ć

ż ć ć ć ć ć ż Ę ż Ę ż Ł Ą ż ń Ą Ł

Ę Ę ć ć Ę Ą Ę Ą Ę Ę Ę Ę Ę Ę ź Ę Ż Ę Ę Ę Ę ć Ę Ę ć Ę ć

Ń ć Ł Ł Ł ź

ż ń ń ń ż ń ń Ę ń ć ń ż ń Ę


Ś Ę ź Ń

ć ź Ż Ń

ć Ą Ą Ł Ą

Ś ć ź ź Ę ź ź Ę Ę Ą Ś Ę Ś Ę ź Ę Ś Ś Ę Ś Ś Ł Ś

Ś Ę ŚĆ Ę ź ź ź Ś Ś Ś ć ź Ś ź Ę Ś Ą ź ź ź Ś Ś Ę ź ź

ż

Ż ź Ś Ż

ć ż Ą ż ż ż ż ż ż ż Ę Ę

ż ń Ł ń ń ż ż ż ż ż

Ł ź Ń

ć Ę ć ć ć Ł ć ń ć ć ć ń ć

ć

ć ż ż ż ź

ń ń ń ń ń Ż ć Ż Ł Ż Ł Ś ć ń Ś Ę Ż ć ń Ż Ż Ż Ą Ż Ż Ł Ż Ś

ś ś ś Ł ś

Ę Ż Ż Ż ś ż Ż

Ż ń ć ć ń Ż ć Ż Ł ń Ż ń ń ń ń

Ń ź ź Ą Ń Ą ć ć ć ć ć Ń Ą

Ś Ę Ą Ł Ś Ł Ł Ł Ł Ł Ś Ś Ł Ł Ł Ą Ł Ł Ł Ł Ł Ą Ą Ł


Ż Ź Ż ż Ś Ś Ź Ż Ż Ż Ż Ż ć ć Ż

Ś

Ó Ó ć


ź źę Ń Ł Ł

Ę

Ś ć ź ź ć ź Ł Ń Ą

Ę ś

IMPLEMENTATION OF THE SPECTRUM ANALYZER ON MICROCONTROLLER WITH ARM7 CORE IMPLEMENTACJA ANALIZATORA WIDMA NA MIKROKONTROLERZE Z RDZENIEM ARM7

ż ć Ś Ń ż ż ż ć ę ę Ą ę ę Ł Ść ż ż ę ź ę ż

ż ć ż ń Ń Ż ń ń ć ż ż ć Ż

ą ą Ź Ą Ó Ó Ó ż ą Ź Ó Ę ą

ń Ą ę ę Ż ę Ó Ó ż żę ę ę ę ę ę ę ę ę ę ę ź ż ż Ż ż ż

Ę Ć Ś Ż ź Ż ć ć ć ć Ś ć ć ż ż Ź ć Ż ć

Ś Ó Ą Ó Ó Ż ć Ó Ż Ó Ą Ź Ź Ó Ó Ó Ź Ó Ź Ó

ó ń ó

ń ć ć ć ć

Ę ś ś ń ź ź Ę ć Ę Ł ń ś ń ś Ż ń Ę ś ń Ę ś Ę ń ś ń ś ś Ż ś Ę ń ś ś ś Ę Ę ś ś ś Ę ś ść ś ść

ż ć Ę ż ż ż Ń Ł ż ż ż ż ż ż ż ż

Ć ć ń Ć ń ć ć Ć

Ść Ł ŁĄ Ł Ł ŁĄ Ą

Ś ć ż ż ż ż Ą Ę Ę Ę

Ł Ż ś ć ż ż ś ś ż ś Ę ś Ę ż ź Ż ść Ż

Ż Ż Ł

ć ć

Ą Ą Ą Ź ś ń ć Ź Ą ś Ą śń ć ć Ń Ą ś ć Ź Ą Ą Ą ś Ą ś Ą Ą Ą Ą

Ł Ł Ę Ż ź

ż ż Ż Ł Ż Ś ć ż ć ż Ś

Ę

ż ń ń ź ź ź

ń ż ś

Ł ć Ł ć ć ć ć Ń ć ć

ź Ł Ą Ż Ń Ń Ś Ń ć

Ń Ń ć ć Ł Ć Ń ć Ę


Ł ś ś ś Ą ż Ą Ń Ł Ł

Ą Ó Ź Ą Ź Ź

Ń ź ź ź ź Ś ź ź Ś ź

Ę ź Ż Ę ź ć ź ć Ą ć ć ć ć ć ż ź

Ś ź ź Ł Ó Ń

ć ć Ść ć Ść ć ć ć ć

ć ż Ż Ż Ą Ż Ż Ż

ź Ż Ż Ś ć ć Ł ż Ż Ż Ż Ż Ł Ż Ł Ż Ż Ż ż ż ż ż ż ż Ż ć Ż Ś Ś Ń Ść

Ł Ł ń ć Ą

Ł Ę Ż Ą Ęć Ń Ń Ł Ę

ś ś Ż ś Ń Ń Ę Ł ć ś Ł

ż Ś ż ż ć ć Ś Ź Ą

Ł Ł ż Ś ż Ś Ź ć

Ł ć Ś ć Ś ć ć Ę ź ć ć

Ą ź Ą Ą Ś Ó Ą


Ę ż Ó Ł Ść ą ą ą Ą ć ż ą ż ń ą ć ż ć Ę ą ż ą ą ż ą ź ą ń ą ń ą ą ż ć

Ę

Ł Ś Ę Ł Ś Ś Ś Ą ń ń Ó

ć ć Ą Ź Ż Ą Ż ć Ą Ż Ź

ź ń ń

ć ć Ś Ą Ą ż Ą ź

ć Ś

ń ż ń ń Ą ń ż ż ń ż ż ż Ż ń Ą ń

ń ć Ł Ą

ć ę ę ć ę Ś ę Ń ę ź ę ę ę Ś ę ę ę Ó Ł Ł Ę Ą ę

Ż ć ć Ż ź ć ć ż ć ż ć Ż ć Ą ń Ż ć Ę

Ł Ą Ł Ł ć

Transkrypt:

Wykorzystanie technologii.net do identyfikacji rodzaju głosu w aplikacjach mobilnych. Piotr Opiełka1 1 Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok III Streszczenie Celem niniejszej pracy jest prezentacja sposobu dział ania aplikacji na urządzenia z systemem Windows Phone 8, umożliwiającej identyfikacj ę rodzaju głosu wokalnego. Aplikacja wykorzystuje framework XNA, który służ y do pobierania danych z mikrofonu urządzenia. Niezbędne jest ustalenie dźwię ków wzorcowych oraz zakresów danych rodzajów głosów. Dane wyś piewywane przez użytkownika s ą przetwarzane, by w końcu uzyska ć efekt w postaci wyś wietlonego komunikatu o rodzaju głosu. 1 Wstęp Aplikacja została zaprojektowana z myśl ą o systemie Windows Phone 8, który w mojej opinii jest niedoceniany na rynku systemów operacyjnych na urzą dzenia mobilne. Program ma za zadanie identyfikacj ę rodzaju głosu uż ytkownika, wykorzystując przy tym Szybk ą Transformat ę Fourier'a. Pozwala to wokaliście określić skal ę głosu, co bardzo pomaga w wyborze repertuaru piosenek. 2 Windows Phone 8 Windows Phone 8 to system operacyjny na urzą dzenia mobilne, którego producentem jest firma Microsoft. Jego premiera odbyła si ę jesieni ą 2012 roku, a obecnie mamy ju ż do czynienia z dewelopersk ą wersj ą o numerze 8.1. Siln ą stroną systemu jest jego wydajno ść, spowodowana nałoż onymi przez Microsoft obostrzeniami na producentów sprzętu. Odnosi si ę to zarówno do ilości pamięci RAM i wydajnoś ci procesorów, jak i rozmiarów ekranów urządze ń.[1] Zdecydowanym minusem tego systemu jest mała ilo ść aplikacji dostę pnych do pobrania ze sklepu, co przekłada si ę na ma łą popularno ść systemu wś ród użytkowników, tworząc tzw. błędne koł o. Aplikacja, która jest przedmiotem tej pracy, będzie w jakiej ś części wypełnia ć luk ę, któr ą stanowi ą aplikacje do identyfikacji rodzaju głosu dla Windows Phone 8. 1

3 Działanie aplikacji Pierwsz ą rzecz ą jaka zostaje wyświetlona uż ytkownikowi jest pytanie o jego płe ć, by móc rozróżnia ć między męskimi a żeńskimi rodzajami rodzaju. Nastę pnie zostaje wygenerowana częstotliwo ść wzorcowa C4, a uż ytkownik jest zobligowania do wyśpiewywania kolejnych dźwięków w gór ę oraz w dó ł od niej. To pozwala aplikacji po przeanalizowaniu tych częstotliwości na okreś lenie na podstawie wzorców znajdujących si ę w wewnętrznej bazie danych aplikacji nazwy danych dźwięków. Jeż eli kolejne wartości nie odbiegaj ą od nich zbyt mocno (użytkownik nie fał szuje ), analiza trwa do momentu osiągnięcia zbyt słabego sygnału na wejściu (uż ytkownik nie jest w stanie komfortowo osiągn ąć dan ą częstotliwo ść). Działanie aplikacji koń czy wyświetlenie jego rodzaju głosu (patrz rozdzia ł 4), uwzględniając oczywiście moż liwe przesunięcia w gór ę lub w dó ł w ramach danej skali. 4 Rodzaj głosu Jedn ą z podstawowych rzeczy, które powinien zna ć przyszły bąd ź obecny wokalista jest jego skala głosu, któr ą można te ż nazwa ć rodzajem gł osu. Jest to odległo ść między najniższym, a najwyższym dźwię kiem, jaki jest w stanie on wyśpiewa ć. Do przedstawienia tych odległości posłu żę si ę następują cymi nazwami dźwięków z odpowiadającym im zapisie nutowym w notacji naukowej:[2] rys. 1 nazwy dźwięków w notacji naukowej Rozróżniamy rodzaje głosu męskie oraz żeńskie. Główne z mę skich rodzajów głosu to: Tenor rys. 2 tenor zakres dźwięków 2

Baryton rys. 3 baryton zakres dźwięków Bas rys. 4 bas zakres dźwięków Główne rodzaje głosów żeńskich przedstawiaj ą si ę natomiast następująco: Sopran rys. 5 sopran zakres dźwięków Mezzosopran rys. 6 mezzosopran zakres dźwięków Kontralt rys. 7 kontralt zakres dźwięków 3

5 Dźwięk - częstotliwość W nawiązaniu do poprzedniego akapitu warto doda ć, i ż to, co najbardziej interesowało mnie w samej pracy nad aplikacj ą, to konkretne częstotliwości dźwię ku, jakie kryj ą si ę pod ich nazwami. Przykładowe częstotliwości dźwięku i odpowiadają ce mu nazwy to:[3] E2 = 82.407 Hz C4 = 261.63 Hz G4 = 392.00 Hz Znając częstotliwości danych dźwię ków wiemy, w jakich ramach powinny znajdowa ć si ę dźwięki wyśpiewywane przez wokalist ę. Należy jednak przyj ąć peł en margines błędu, poniewa ż prawie niemożliwe jest idealne trafienie w dan ą częstotliwość przez człowieka. 6 Dźwięk, a urządzenia cyfrowe Ważn ą kwesti ą, o której nie można zapomina ć jest fakt, ż e mamy do czynienia z urządzeniem cyfrowym, które przyjmuje dane przychodzą ce z mikrofonu i zapisuje je jako w miar ę proste do zinterpretowania dane. Sygna ł jest próbkowany z pewną częstotliwości ą (w wypadku urządze ń z systemem Windows Phone 8 jest to 16000 Hz), a warto ść jego amplitudy jest zapisywana w postaci wektora danych. W znalezieniu składowych częstotliwości pomoż e nam Szybka Transformata Fouriera (FFT). 7 Szybka Transformata Fouriera Szybka Transformata Fouriera jest zoptymalizowan ą wersj ą Dyskretnej Transformaty Fouriera. Wynikiem jej dział ania jest wektor liczb zespolonych, który przechowuje w części rzeczywistej moc składowej sygnału, a w częś ci urojonej jej przesunięcie fazowe. Ważnym warunkiem wstę pnym, koniecznym do wykonania transformaty jest to, i ż wielko ść pojedynczego wektora danych wejściowych musi być potęg ą dwójki. Algorytm opiera si ę o tzw. operacje motylkowe, a dla transformaty o rozmiarze (2 n ) należy wykona ć n szeregów takich operacji:[4] rys. 8 operacja motylkowa 4

8 Obsługa mikrofonu w Windows Phone 8 Aplikacja wykorzystuje do obsługi mikrofonu framework XNA. Zosta ł on stworzony przez Microsoft w celu umoż liwienia deweloperom pisania gier na Windows, konsol ę Xbox 360 oraz na system Windows Phone 7. Mimo, i ż firma ta zrezygnował a z jego wsparcia, to nadal dostarcza on kilka przydatnych dla naszych potrzeb klas.[5] Kolejne kroki, jakie należy zrobi ć, by przygotowa ć aplikacj ę do współ pracy z mikrofonem urządzenia:[6] Utworzenie instancji klasy o nazwie Microphone, która pozwala na bezpośredni dostęp do mikrofonu urzą dzenia mobilnego i prosty sposób jego obsługi. Przypisanie tej instancji domyślnego mikrofonu urządzenia za pomoc ą zmiennej statycznej Defaulf, znajdującej si ę w tej klasie. Zapewnienie bufora dla danych przychodzą cych z mikrofonu (dane ładuje si ę do bufora za pomoc ą metody GetData, któr ą wywoł ujemy w momencie wystąpienia zdarzenia sygnalizującego zapełnienie bufora). Wywołanie pętli koniecznej do działania programu, wymaganej równie ż przez framework XNA. 9 Aspekty analizy częstotliwości dźwięku Ważn ą kwesti ą, o której należy w tym momencie wspomnie ć w kontekś cie wykonywania Szybkiej Transformaty Fouriera, jest konieczno ść zapewnienia takiej wielkości bufora, by ta spełniała warunek bycia potęg ą dwójki. Można tego dokonać przez ustalenie odpowiedniej liczby milisekund przeznaczonych na jedno zapeł nienie bufora. By uzyska ć zadowalając ą rozdzielczo ść do ustalenia częstotliwości dźwię ku wyśpiewywanego przez wokalist ę, należy ustawi ć j ą na 250 ms oraz wymusi ć na transformacie stworzenie sobie osobnego bufora, który miałby odpowiedni ą wielkość (czas należy podawa ć z dokładności ą do 10 ms, co uniemożliwia ustawienie go na 256 ms, która to warto ść jest optymalna dla częstotliwości próbkowania 16kHz). Kolejnym zagadnieniem, nad którym należy si ę pochyli ć jest problem pojawiania si ę w analizowanym sygnale dźwięków harmonicznych dla danego dźwięku. Należy to uwzględni ć w analizie podanego sygnału wejściowego. Mówiąc o dźwię kach harmonicznych, mam na myśli częstotliwości będące wielokrotności ą danej częstotliwości. W praktyce oznacza to, i ż w danej analizie możemy zaobserwowa ć na przykład nie tylko częstotliwo ść 100 Hz, ale równie ż 200 Hz, 300 Hz, itd.[7] Tzw. częstotliwo ść bazowa jest zwykle sygnałem o największej mocy. Nie moż na jednak przywiązywa ć si ę do tego, poniewa ż może si ę okaza ć, że ta częstotliwo ść nie będzie w danej próbce sygnałem o takiej mocy. By unikn ąć pomyłki, należ y zanalizowa ć liczb ę wystąpie ń wielokrotności danej częstotliwoś ci i na tej podstawie określi ć częstotliwo ść bazow ą. W przypadku braku tej częstotliwości należy policzyć liczb ę wielokrotności połowy pierwszych dwóch znaczących częstotliwości. 5

Ważnym aspektem analizy, który równie ż trzeba uwzględni ć, jest konieczność ograniczenia możliwego pasma przyjmowanych częstotliwości, by pomin ąć np. szumy i inne niepożądane zakłócenia. Aplikacja nagrywa dźwięk w okreś lonym czasie, w którym liczba wektorów wejściowych nie ogranicza si ę do jednego, wię c aby obliczy ć częstotliwo ść sygnału, bierze ona pod uwag ę średni ą częstotliwo ść jaka wystąpił a w próbkach. Ta średnia częstotliwo ść jest częstotliwości ą właściw ą. 10 Podsumowanie Aplikacja, która jest przedmiotem artykułu jest przede wszystkim rozwią zaniem dla osób, które chciałyby zacz ąć przygod ę z muzyk ą, a nie wiedz ą, które piosenki s ą dla nich stworzone. Można te ż dzięki niej stwierdzi ć, czy użytkownik fał szuje. Możliwości systemu Windows Phone 8 pozwalaj ą na wystarczając ą analiz ę gł osu danej osoby, umożliwiając tym samym określenie jej rodzaju gł osu. Program korzysta z Szybkiej Transformaty Fourier'a, która odpowiada na potrzeb ę szybkiej analizy dźwięku. Mam nadziej ę, że ta aplikacja wniesie swój minimalny wkł ad w rozwój rynku aplikacji Windows Phone 8, będąc alternatyw ą dla podobnych tego typu programów dostępnych na konkurencyjne, bardziej popularne platformy mobilne. Bibliografia rys. 9 przykładowy ekran aplikacji [1] http://www.windowsphone.com/pl-pl/how-to/wp8/basics/windows-phone-8-update-history [2] http://vocalsheetmusic.net/ranges [3] http://www.phy.mtu.edu/~suits/notefreqs.html [4] http://en.wikipedia.org/wiki/fast_fourier_transform [5] http://en.wikipedia.org/wiki/microsoft_xna [6] http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg442302%28v=vs.105%29.aspx [7] http://www.ihear.com/pitch/paradoxical.html 6