Wojskowa Akademia Techniczna
Systemy dialogowe
Sprawozdanie z laboratorium nr 3
Projekt małego słownika
Prowadzący:
Dr inż. Andrzej Wiśniewski
Chromiński Krzysztof
Grupa: I0M1S1
Założenia:
mały słownik wyrazów rozpoznawanych: 10 słów,
jednostka fonetyczna: całe słowo.
Do rozpoznania wybrałem 10 słów:
Jeden
Dwa
Trzy
Cztery
Pięć
Sześć
Siedem
Osiem
Dziewięć
Dziesięć
Przygotować dane:
sformułować słownik wyrazów rozpoznawanych;
dokonać rejestracji wszystkich słów (każde słowo 15-krotnie, w oddzielnym pliku .wav);
do rejestracji przyjąć: fs = 22050 Hz, 16 bitów/próbka, kodowanie PCM, mono;
W tym celu nagrałem wybrane przeze mnie słowa w oddzielnych plikach, każde słowo 15 razy. Do nagrania dźwięków z określonymi parametrami użyłem programu AudaCity. W celu ujednolicenia nazewnictwa przyjąłem następującą konwencję nazewniczą – Słowo_Nr.wav
Zdefiniować wzór testowy
Wzorzec słów został zdefiniowany, jako wektor, przetrzymujący średnie charakterystyczne wielkości dla poszczególnych słów. Użyte wartości dla każdego słowa to:
Energia sygnału
Długość sygnału L
Liczba przejść przez zero
Wartość maksymalna sygnału MAX
Współczynnik FFT
Współczynnik LPC
WZOR = [L, E, PPZ, MAX, LPC, FFT]
Opracować procedurę uczenia - utworzyć wzorce słów:
zdefiniować wzorzec,
określić ciąg uczący,
dokonać estymacji parametrów wzorców
Procedura uczenia wygląda w następujący sposób. Program wczytuje pierwsze pięć plików dźwiękowych dla każdego ze słów. Dla poszczególnego pliku oblicza charakterystyki sygnału, które reprezentują wzór testowy. Następnie wylicza średnią arytmetyczną dla danego słowa z uzyskanych pięciu wzorów testowych.
Opracować procedurę rozpoznawania
W celu rozpoznania dla każdego z wczytanego pliku dźwiękowego wyliczane są takie same parametry jak użyte do wyznaczenia wzorca dla słów. Następnie te wartości są odejmowane od wzorców, przemnażane przez odpowiednie wagi dla danego współczynnika, zsumowane w jedną wartość dla danego wzorca i zapisywane w wektorze pomocniczym. Wartości poszczególnych wag zostały dobrane prze zemnie metodą prób i błędów w celu zmaksymalizowania rozpoznania podanego dźwięku. Po wyliczeniu wartości wybierana jest najmniejsza wartość z wektora pomocniczego zawierającego wartości wyliczone dla wszystkich wzorców. Jeżeli indeks tej liczby jest zgodny z indeksem wczytywanego słowa to wyraz zostaje zaliczony, jako rozpoznany w przeciwnym wypadku nie został rozpoznany prawidłowo. Do rozpoznawania użyłem pozostałych dźwięków niebiorących udziału w procesie uczenia.
Dokonać weryfikacji i testowania urządzenia:
określić ciąg testowy
wyznaczyć statystyki rozpoznawania (estymatory prawdopodobieństwa poprawnego rozpoznania, analiza błędów rozpoznawania)
zaproponować kierunki zmian w celu poprawienia, jakości zbudowanego urządzenia ARM
Jeden | Dwa | Trzy | Cztery | Pięć | Sześć | Siedem | Osiem | Dziewięć | Dziesięć | Łączne rozpoznanie | |
---|---|---|---|---|---|---|---|---|---|---|---|
Rozpoznane | 10 | 10 | 4 | 8 | 10 | 10 | 9 | 10 | 10 | 10 | 91 |
Nie rozpoznane | 0 | 0 | 6 | 2 | 0 | 0 | 1 | 0 | 0 | 0 | 9 |
Procent rozpoznania | 100% | 100% | 40% | 80% | 100% | 100% | 90% | 100% | 100% | 100% | 91% |
Powyższa tabela zawiera informacje na temat działania wykonanego przeze mnie algorytmu rozpoznawania słow. Dla zdefiniowanego słownika wynosi on, 91% co według mnie jest bardzo dobrym wynikiem biorąc pod uwagę prostotę zastosowanego rozwiązania. Z moich obserwacji wynika, że bardzo ważny jest proces nagrywania dźwięków testowych. Im lepiej nagrane tym większe prawdopodobieństwo rozpoznania wyrazu przez algorytm. Każdy niepożądany dźwięk lub kiepskiej jakości mikrofon może zmniejszyć szanse na poprawne rozpoznanie.
W celu poprawienia urządzenia ARM należałoby zwiększyć ilość dźwięków odpowiedzialnych za tworzenie wzorca, ponieważ z większej ilości można dokładniej wyliczyć wzorzec dla danego wyrazu. Można też by podzielić dźwięki na mniejsze części i wyliczyć dla nich wzorce, co za pewne zwiększyłoby prawdopodobieństwo rozpoznania. Innym sposobem może być zwiększenie ilości składowych wzorca np. dodanie funkcji autokorelacji. Dobrym rozwiązanie mogącym usprawnić ARM wprowadzenie mechanizmu redukującego szumy z otoczenia, usuwającego ciszę z początku i końca dźwięku lub poprawie systemu wag.