Implementacja głosowego zamka do drzwi w oparciu o ...

54
AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI Praca dyplomowa inżynierska Michał Salasa Imię i nazwisko Inżynieria Akustyczna Kierunek studiów Implementacja głosowego zamka do drzwi w oparciu o mikrokontroler typu ARM Temat pracy dyplomowej Kraków, rok 2013/2014 dr inż. Jakub Gałka ………….. Promotor pracy www.dsp.agh.edu.pl Ocena

Transcript of Implementacja głosowego zamka do drzwi w oparciu o ...

Page 1: Implementacja głosowego zamka do drzwi w oparciu o ...

AKADEMIA GÓRNICZO-HUTNICZA

im. Stanisława Staszica w Krakowie

WYDZIAŁ INŻYNIERII

MECHANICZNEJ I ROBOTYKI

Praca dyplomowa

inżynierska

Michał Salasa

Imię i nazwisko

Inżynieria Akustyczna

Kierunek studiów

Implementacja głosowego zamka do drzwi w

oparciu o mikrokontroler typu ARM

Temat pracy dyplomowej

Kraków, rok 2013/2014

dr inż. Jakub Gałka …………..

Promotor pracy

www.dsp.agh.edu.pl

Ocena

Page 2: Implementacja głosowego zamka do drzwi w oparciu o ...

Kraków, dnia 21.01.2014r.

Imię i nazwisko: Michał Salasa

Nr albumu: 241189

Kierunek studiów: Inżynieria Akustyczna

Profil dyplomowania: -

OŚWIADCZENIE

Świadomy/a odpowiedzialności karnej za poświadczanie nieprawdy

oświadczam, że niniejszą inżynierską pracę dyplomową wykonałem/łam osobiście i

samodzielnie oraz nie korzystałem/łam ze źródeł innych niż wymienione w pracy.

Jednocześnie oświadczam, że dokumentacja praca nie narusza praw autorskich

w rozumieniu ustawy z dnia 4 lutego 1994 roku o prawie autorskim i prawach

pokrewnych (Dz. U. z 2006 r. Nr 90 poz. 631 z późniejszymi zmianami) oraz dóbr

osobistych chronionych prawem cywilnym. Nie zawiera ona również danych i

informacji, które uzyskałem/łam w sposób niedozwolony. Wersja dokumentacji

dołączona przeze mnie na nośniku elektronicznym jest w pełni zgodna z wydrukiem

przedstawionym do recenzji.

Zaświadczam także, że niniejsza inżynierska praca dyplomowa nie była

wcześniej podstawą żadnej innej urzędowej procedury związanej z nadawaniem

dyplomów wyższej uczelni lub tytułów zawodowych.

………………………………..

podpis dyplomanta

Page 3: Implementacja głosowego zamka do drzwi w oparciu o ...

Kraków, dnia 21.01.2014r.

Imię i nazwisko: Michał Salasa

Adres korespondencyjny: os. Tysiąclecia 59/20, 31-610 Kraków

Temat pracy dyplomowej inżynierskiej:

Implementacja głosowego zamka do drzwi w oparciu o mikrokontroler typu ARM

Rok ukończenia: 2014

Nr albumu: 241189

Kierunek studiów: Inżynieria Akustyczna

Profil dyplomowania: -

OŚWIADCZENIE

Niniejszym oświadczam, że zachowując moje prawa autorskie , udzielam Akademii

Górniczo-Hutniczej im. S. Staszica w Krakowie nieograniczonej w czasie nieodpłatnej

licencji niewyłącznej do korzystania z przedstawionej dokumentacji inżynierskiej pracy

dyplomowej, w zakresie publicznego udostępniania i rozpowszechniania w wersji

drukowanej i elektronicznej1.

Publikacja ta może nastąpić po ewentualnym zgłoszeniu do ochrony prawnej

wynalazków, wzorów użytkowych, wzorów przemysłowych będących wynikiem pracy

inżynierskiej2.

Kraków, 21.01.2014r. …………………………..

data podpis dyplomanta

1 Na podstawie Ustawy z dnia 27 lipca 2005 r. Prawo o szkolnictwie wyższym (Dz.U. 2005 nr 164 poz. 1365)

Art. 239. oraz Ustawy z dnia 4 lutego 1994 r. o prawie autorskim i prawach pokrewnych (Dz.U. z 2000 r. Nr

80, poz. 904, z późn. zm.) Art. 15a. "Uczelni w rozumieniu przepisów o szkolnictwie wyższym przysługuje

pierwszeństwo w opublikowaniu pracy dyplomowej studenta. Jeżeli uczelnia nie opublikowała pracy

dyplomowej w ciągu 6 miesięcy od jej obrony, student, który ją przygotował, może ją opublikować, chyba że

praca dyplomowa jest częścią utworu zbiorowego."

2 Ustawa z dnia 30 czerwca 2000r. – Prawo własności przemysłowej (Dz.U. z 2003r. Nr 119, poz. 1117 z

późniejszymi zmianami) a także rozporządzenie Prezesa Rady Ministrów z dnia 17 września 2001r. w

sprawie dokonywania i rozpatrywania zgłoszeń wynalazków i wzorów użytkowych (Dz.U. nr 102 poz.

1119 oraz z 2005r. Nr 109, poz. 910).

Page 4: Implementacja głosowego zamka do drzwi w oparciu o ...

Kraków, dnia 21.01.2014r.

AKADEMIA GÓRNICZO-HUTNICZA

WYDZIAŁ INŻYNIERII MECHANICZNEJ I ROBOTYKI

TEMATYKA PRACY DYPLOMOWEJ INŻYNIERSKIEJ

dla studenta IV roku studiów stacjonarnych

Michał Salasa

imię i nazwisko studenta

TEMAT PRACY DYPLOMOWEJ INŻYNIERSKIEJ:

Implementacja głosowego zamka do drzwi w oparciu o mikrokontroler typu ARM

Promotor pracy: dr inż. Jakub Gałka

Recenzent pracy: prof. dr hab. inż. Mariusz Ziółko Podpis dziekana:

PLAN PRACY DYPLOMOWEJ

1. Omówienie tematu pracy i sposobu realizacji z promotorem.

2. Zebranie i opracowanie literatury dotyczącej tematu pracy.

3. Zaprojektowanie prototypu i implementacja odpowiednich algorytmów

4. Ocena poprawności zaimplementowanych algorytmów

5. Opracowanie redakcyjne.

Kraków, 21.01.2014r. …………………………..

data podpis dyplomanta

TERMIN ODDANIA DO DZIEKANATU: 20 r.

podpis promotora

Page 5: Implementacja głosowego zamka do drzwi w oparciu o ...

Akademia Górniczo-Hutnicza im. Stanisława Staszica Kraków, dnia 21.01.2014r.

Wydział Inżynierii Mechanicznej i Robotyki

Kierunek: Inżynieria Akustyczna

Profil dyplomowania: -

Michał Salasa

Praca dyplomowa inżynierska

Implementacja głosowego zamka do drzwi w oparciu o mikrokontroler typu ARM

Opiekun: dr inż. Jakub Gałka

STRESZCZENIE

Praca dyplomowa przedstawia podstawowe wiadomości dotyczące systemu

kontroli dostępu oraz biometrycznej weryfikacji głosu bazującej na matematycznym

modelu mikstur gaussowskich. Celem pracy było zaprojektowanie prototypu zamka do

drzwi, który przyznawałby dostęp do chronionej strefy na podstawie głosu

użytkownika. Projekt składał się z wybrania odpowiednich elementów elektronicznych,

które zapewniłyby wymaganą funkcjonalność systemu oraz implementacji kluczowych

algorytmów w języku C dokonujących parametryzacji sygnału akustycznego i

dokonujących weryfikacji na podstawie modelów mikstur gaussowskich.

Page 6: Implementacja głosowego zamka do drzwi w oparciu o ...

AGH University of Science and Technology Cracow, the 21st

January 2014

Faculty of Mechanical Engineering and Robotics

Field of Study: Acoustical Engineering

Specialisations: -

Michał Salasa

Engineer Diploma Thesis

Implementation of voice-based door access control system with ARM

microcontroller

Supervisor: dr inż. Jakub Gałka

SUMMARY

This Engineer Diploma Thesis consists information about access control systems and

voice biometrics identification based on Gaussian Mixture Models (GMM). The main

objective of this thesis was to project access control system prototype which uses users

voice for granting access. Author had to choose proper electronic modules to fulfill

desired functionality and implement key algorithms in C language for signal

parameterization and verification based on GMM.

Page 7: Implementacja głosowego zamka do drzwi w oparciu o ...

.

Serdecznie dziękuję promotorowi dr inż.

Jakubowi Gałce oraz mgr inż. Mariuszowi

Mąsiorowi za nieocenioną pomoc w realizacji tej

pracy inżynierskiej, jak i również moim rodzicom,

bez których wsparcia nie mogłaby ona powstać.

Page 8: Implementacja głosowego zamka do drzwi w oparciu o ...

Spis treści

- 8 -

Spis treści

WSTĘP ....................................................................................................................................................... 9

CEL PRACY ............................................................................................................................................ 11

ROZDZIAŁ 1 - WPROWADZENIE ..................................................................................................... 12

1.1 SYSTEM KONTROLI DOSTĘPU ........................................................................................................ 12

1.2 BIOMETRYCZNA GŁOSOWA WERYFIKACJA UŻYTKOWNIKA .......................................................... 15

1.2.1 Parametryzacja .................................................................................................................. 15

1.2.2 Probabilistyczny model GMM mówcy ............................................................................... 16

ROZDZIAŁ 2 - PROTOTYP URZĄDZENIA (HARDWARE) .......................................................... 18

2.1 MIKROKONTROLER STM32F407VGT6 ....................................................................................... 18

2.2 CZYTNIK KART ELEKTROMAGNETYCZNYCH MIFARE – SL018 ................................................... 20

2.3 MIKROFON MEMS – MP45DT02 ................................................................................................ 21

2.4 WYŚWIETLACZ LCD ZE STEROWNIKIEM HD44780 ...................................................................... 23

2.5 KOMPLETNE URZĄDZENIE ............................................................................................................ 24

ROZDZIAŁ 3 - PROTOTYP URZĄDZENIA (SOFTWARE) ............................................................ 25

3.1 PRZYGOTOWANIE ŚRODOWISKA PROGRAMISTYCZNEGO............................................................... 25

3.2 IMPLEMENTACJA SYSTEMU OPERACYJNEGO CZASU RZECZYWISTEGO FREERTOS ....................... 27

3.3 PRZYGOTOWANIE STEROWNIKÓW DO URZĄDZEŃ PERYFERYJNYCH .............................................. 28

3.3.1 SL018 ................................................................................................................................. 29

3.3.2 MP45DT02 ......................................................................................................................... 31

3.3.3 Wyświetlacz LCD ............................................................................................................... 33

3.4 IMPLEMENTACJA ALGORYTMÓW PRZEPROWADZAJĄCYCH PARAMETRYZACJĘ GŁOSU .................. 35

3.4.1 Cykliczny bufor audio ........................................................................................................ 36

3.4.2 Preemfaza, okienkowanie i analiza częstotliwościowa ...................................................... 37

3.4.3 Filtracja bankiem filtrów melowych .................................................................................. 38

3.4.4 Dyskretna transformacja kosinusowa i liftering ................................................................ 40

3.4.5 Współczynniki delta oraz CMS .......................................................................................... 41

3.4.6 Feature Warping ................................................................................................................ 42

3.5 IMPLEMENTACJA ALGORYTMU WERYFIKACJI MÓWCY NA PODSTAWIE MODELU GMM ............... 44

ROZDZIAŁ 4 - OCENA POPRAWNOŚCI ZAIMPLEMENTOWANYCH ALGORYTMÓW ..... 46

4.1 REŻIMY CZASOWE ........................................................................................................................ 46

4.2 PARAMETRYZACJA ....................................................................................................................... 47

4.3 WERYFIKACJA UŻYTKOWNIKA Z WYKORZYSTANIEM MODELU GMM .......................................... 51

PODSUMOWANIE ................................................................................................................................. 52

BIBLIOGRAFIA ..................................................................................................................................... 53

Page 9: Implementacja głosowego zamka do drzwi w oparciu o ...

Wstęp

- 9 -

Wstęp

Nie dająca się powstrzymać ciągła ewolucja nauki, a co za tym idzie również rozwój

dostępnej dla człowieka technologii, powoduje poszerzanie się zakresu w jakim

człowiek może kontrolować swoje naturalne środowisko. Odkrycia na polu szeroko

pojętej elektroniki i informatyki znacząco wpłynęły na zwiększenie bezpieczeństwa

fizycznego, a w szczególności na powstanie nowych metod kontroli dostępu. Zamiast

tradycyjnych, mechanicznych zamków czy też rygli i zasuw, ludzie opanowali sztukę

wykorzystywania odpowiednio zaprojektowanych i zaprogramowanych urządzeń

elektronicznych, które sterują dostępem do pomieszczenia wykonując odpowiednie

procedury.

Wraz z pojawieniem się możliwości wykorzystywania elektronicznych urządzeń,

metody kontrolowania dostępu do chronionych obszarów stawały się coraz bardziej

skomplikowane oraz znacząco zwiększały bezpieczeństwo. Zaczęto projektować

specjalne grupy urządzeń elektronicznych nazywane 'systemami kontroli dostępu'.

Dzięki ich rozwojowi kontrola nadzorowanego miejsca stawała się bardziej

drobiazgowa i wieloaspektowa. Wprowadzanie możliwości używania zapamiętywanych

haseł, kart elektromagnetycznych czy też wykorzystywanie siatki czasu pozwoliło na

dalszą ewolucję.

Istotną zmianę w technologii systemów kontroli dostępu przyniosły rezultaty badań

nad cechami biometrycznymi człowieka. Okazało się, że mogą one być

wykorzystywane do procesu weryfikacji, będącego jednym z etapów przydzielania

dostępu, gwarantując bardzo dużą skuteczność identyfikacji. Nieodłącznymi

elementami systemów kontroli dostępu zaczęły stawać się czytniki linii papilarnych czy

też skanery siatkówki oka.

Page 10: Implementacja głosowego zamka do drzwi w oparciu o ...

Wstęp

- 10 -

Do biometrycznych cech człowieka należy również jego głosu. Dzięki rozwojowi

działu nauki związanego z przetwarzaniem sygnałów cyfrowych jak i samymi

badaniami nad charakterystyką głosu udało się opracować odpowiednie algorytmy,

które wyszczególniają indywidualne cechy i wykorzystują je do weryfikacji mówcy.

Niniejsza praca dyplomowa powstała w wyniku pracy nad projektem systemu kontroli

dostępu zawierającego algorytmy weryfikujące mówcę .

Poniższa praca dyplomowa składa się z czterech rozdziałów. Pierwszy rozdział,

będący wprowadzeniem, przedstawia ogólną charakterystykę systemów kontroli

dostępu zgodnie z normą PN-EN 50133-1:1996 [14] oraz opisuje podstawowe metody

wykorzystywane w biometrycznej weryfikacji głosu. Rozdziały drugi i trzeci mają na

celu udokumentowanie wykonanej pracy nad projektowanym prototypem. Rozdział

drugi dotyczy aspektu sprzętowego, opisane w nim są wykorzystywane rozwiązania

technologiczne. Natomiast rozdział trzeci dotyczy części programowej (softwarowej)

opisującej utworzone środowisko programistyczne, implementację systemu

operacyjnego oraz implementację algorytmów związanych z parametryzacją sygnału

akustycznego i weryfikacją mówcy. Rozdział czwarty zawiera ocenę poprawności

zastosowanych algorytmów zwracając szczególną uwagę na jakość wykonywanych

obliczeń i przestrzeganie ograniczeń czasowych.

Page 11: Implementacja głosowego zamka do drzwi w oparciu o ...

Cel pracy

- 11 -

Cel pracy

Głównym celem niniejszej pracy dyplomowej było wykonanie prototypu systemu

kontroli dostępu, który do etapu weryfikacji użytkownika wykorzystywałby jego

biometryczne cechy głosu. W założeniu prototyp ten posłuży do dalszych prac nad

udoskonalaniem systemu kontroli dostępu. Realizacja tego celu składała się

następujących zagadnień:

- wybranie odpowiednich modułów elektronicznych spełniających założone

funkcjonalności,

- zbudowanie na ich podstawie prototypu i utworzenie dla niego środowiska

programistycznego (system operacyjny + sterowniki do urządzeń),

- implementacja algorytmów dokonujących parametryzacji sygnału mowy oraz

weryfikujących mówcę na podstawie jego modelu GMM,

- ocena poprawności zaimplementowanych algorytmów.

Page 12: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 12 -

Rozdział 1 - Wprowadzenie

1.1 System kontroli dostępu

Według normy PN-EN 50133-1:1996 Systemem kontroli dostępu nazywamy system

obejmujący wszystkie składniki konstrukcyjne i organizacyjne oraz te, które odnoszą

się do urządzeń, niezbędne do sterowania dostępem [14]. W przypadku niniejszej pracy

zaprojektowany prototyp systemu kontroli dostępu jest zbiorem urządzeń

elektronicznych, które spełniają najważniejsze funkcjonalności opisane w podanej

normie lub też w łatwy sposób mogą zostać wzbogacone o te funkcjonalności. Główne

funkcje systemu kontroli dostępu zaprezentowane są na poniższym grafie.

Rys. 1 Główne funkcje systemu kontroli dostępu [14]

Page 13: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 13 -

Kompletny system kontroli dostępu musi we właściwy sposób sterować

aktywatorami i czujnikami przejścia kontrolowanego. W przypadku nadzorowania

przejścia w postaci drzwi, od decyzji systemu zależeć będzie czy rygiel

elektromagnetyczny znajdujący się w drzwiach będzie zamknięty czy otwarty. Ponadto,

system powinien być zaopatrzony w możliwość komunikacji z innymi systemami (np.

alarmowymi), zapewniać komunikację z użytkownikiem (poprzez zastosowanie

klawiatury, lub ekranu wyświetlającego informacje) i posiadać możliwość zmiany jego

systemowych ustawień (programowalność).

Najważniejszym, z punktu widzenia bezpieczeństwa, elementem systemu kontroli

dostępu jest przetwarzanie danych, których wynikiem jest decyzja o stanie otwarcia

rygla elektromagnetycznego. To przetwarzanie danych realizowane jest w obrębie

większego procesu - procedury przyznawania dostępu. Od jakości metod

wykorzystywanych w tej procedurze zależy skuteczność całego systemu. Na poniższym

grafie zaprezentowano typowy przebieg procedury przyznawania dostępu.

Rys. 2 Przebieg tradycyjnej procedury przyznawania dostępu [14]

Page 14: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 14 -

Głównym elementem procedury przyznawania dostępu jest etap rozpoznania

użytkownika. Norma PN-EN 50133-1:1996 podaje cztery klasy jakości rozpoznania,

które opierają się na poziomie wiarygodności identyfikacji uprawnionych

użytkowników. Klasa 0, o najniższym stopniu bezpieczeństwa, nadawana jest

urządzeniom, które przydzielają dostęp na podstawie zwykłego zapytania o dostęp, bez

podania tożsamości (np. zainstalowane detektory ruchu). Urządzenie klasy 1 przydziela

dostęp do chronionego obszaru po podaniu informacji zapamiętanej, którą może być

ustalone hasło czy też numer indentyfikacyjny. Klasa 2 dotyczy rozpoznań bazujących

na danych zawartych w identyfikatorze (klucz, karta elektromagnetyczna) lub danych

biometrycznych (odcisk palca, barwa głosu). Klasą rozpoznania założoną dla

projektowanego systemu kontroli dostępu jest klasa 3, która wymaga stosowania

zarówno identyfikatora jak i danych biometrycznych. W prototypowym urządzeniu rolę

identyfikatora spełnia karta elektromagnetyczna, a dane biometryczne pochodzą

z odpowiednio przygotowanych próbek głosu użytkownika.

Oprócz wymagań funkcjonalnych dotyczących procesu rozpoznania w normie

znajdują się też wymagania dotyczące samego procesu przetwarzania danych.

Najważniejsze z nich dla urządzeń klasy 3 to:

- możliwość określenia dwóch czasów odblokowania rygla: 6s, 60s,

- możliwość określenia dwóch czasów otwarcia rygla: 10s, 60s,

- możliwość wygenerowania alertu po 5 nieudanych próbach wprowadzenia

błędnych informacji,

- odsetek fałszywych akceptacji nie powinien przekraczać 0,01%,

- odsetek fałszywych odrzuceń powinien być mniejszy niż 1%.

Niniejsze wymagania mają większe znaczenie w późniejszym etapie projektowania

systemu kontroli dostępu, dlatego też w projektowanym prototypie należało tylko

zapewnić możliwość późniejszego rozbudowania funkcjonalności urządzenia.

Page 15: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 15 -

1.2 Biometryczna głosowa weryfikacja użytkownika

Sygnał akustyczny reprezentujący fragment mowy zawiera w sobie szczególne

cechy, które oprócz informacji dotyczących strony lingwistycznej wypowiedzi (użyte

słowa, ogólny sens zdania), zawierają również informacje dotyczące tożsamości

użytkownika [16]. Dzieje się tak, ponieważ charakterystyka toru głosowego

(określająca takie parametry jak częstotliwość tonu krtaniowego, czy rozłożenie

kolejnych formantów), który wykorzystywany jest przez ludzi jako ‘generator’ mowy

jest w dużym stopniu unikalna dla danego mówcy. Zależność ta umożliwia

wykorzystywanie głosu ludzkiego jako biometrycznego klucza.

1.2.1 Parametryzacja

Większość istotnych informacji, znajdujących się w sygnale mowy, zawartych jest w

dziedzinie częstotliwości [22]. Z tego względu przed dokonaniem jakichkolwiek działań

mających na celu weryfikację mówcy należy poddać sygnał akustyczny parametryzacji.

Jedną z najpopularniejszych metod parametryzacji sygnału akustycznego jest

parametryzacja wykorzystująca cepstralne melowe współczynniki częstotliwościowe

(MFCC).

Parametryzacja MFCC opiera się na właściwościach słuchu ludzkiego, którego

wrażliwość na sygnał akustyczny zmienia się wraz z częstotliwością tego sygnału. Po

wykonaniu segmentacji mowy i wyznaczeniu widma amplitudowego każdej ramki,

sygnał filtrowany jest przez bank filtrów melowych. Następnie wyznaczany jest

logarytm energii każdego pasma i za pomocą dyskretnej transformacji kosinusowej

otrzymujemy parametry MFCC. Tak utworzone parametry stanowią już dobre źródło

wiedzy na temat cech sygnału akustycznego, lecz w celu poprawienia skuteczności

identyfikacji, stosuje się dodatkowo różne techniki takie jak obliczanie współczynników

delta [13], Cepstral Mean Substraction [20] czy też Feature Warping [15].

Page 16: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 16 -

Rys. 3 Standardowa parametryzacja sygnału akustycznego

1.2.2 Probabilistyczny model GMM mówcy

Jedną z metod wykorzystywanych w systemach identyfikacji mówcy jest metoda

polegająca na stosowaniu stochastycznego modelu mówcy w oparciu o mikstury

gaussowskie (GMM). GMM umożliwiają modelowanie wektorów parametrów, które

odzwierciedlają indywidualną charakterystykę toru głosowego mówcy ukrytą

w analizowanym fragmencie wypowiedzi.

Pojedynczy model GMM, będący funkcją gęstości prawdopodobieństwa

występowania określonych parametrów dla konkretnego mówcy, zdefiniowany jest jako

ważona suma składowych gęstości prawdopodobieństwa [16]

( ⃗| ∑ ( ⃗ , (1.1)

gdzie ⃗ jest dowolnym D-wymiarowym wektorem parametrów, , i = 1,2,…,M jest

wagą gęstości prawdopodobieństwa, a ( ⃗ , i=1,2,…,M jest pojedynczą funkcją

gęstości prawdopodobieństwa. Pojedyncza funkcja gęstości prawdopodobieństwa,

zwana inaczej miksturą gaussowską, opisana jest równaniem [16]

( ⃗

( | |

( ⃗ ⃗⃗⃗

( ⃗ ⃗⃗⃗ (1.2)

gdzie ⃗ jest wektorem wartości średnich, a jest diagonalną macierzą kowariancji.

Page 17: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 1 - Wprowadzenie

- 17 -

Z powyższych równań wynika, że do kompletnego zdefiniowania modelu dla

jednego mówcy należy znać wagi poszczególnych mikstur, z których utworzony jest

model, wektor wartości średnich oraz macierz kowariancji. Parametry te są

wyszukiwane na drodze procesu zwanego treningiem modelu, który polega na estymacji

parametrów modelu, który najlepiej będzie opisywał dystrybucję wektorów parametrów

pochodzących z mowy treningowej. W założeniu, projektowany prototyp systemu

kontroli dostępu będzie korzystać z gotowych, wytrenowanych modeli dlatego

w niniejszej pracy nie opisano tego procesu.

Weryfikacja użytkownika systemu kontroli dostępu jest zadaniem polegającym na

obliczeniu logarytmu prawdopodobieństwa wystąpienia sekwencji wektorów

parametrów (wprowadzonych po procesie identyfikacji przez osobę ubiegającą się

o dostęp) dla modelu GMM tego mówcy wytrenowanego wcześniej na innym

urządzeniu.

Następnie oblicza się średnią wartość logarytmów prawdopodobieństwa ze wszystkich

wektorów i porównuje się ją z dobraną wartością progu detekcji

∑ ( ( ⃗⃗⃗⃗⃗|

, (1.3)

gdzie T jest ilością wektorów cech, a ( ⃗⃗⃗⃗ | prawdopodobieństwem

wygenerowania wektora cech ⃗⃗⃗⃗ dla modelu (1.1)

Page 18: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 18 -

Rozdział 2 - Prototyp urządzenia (hardware)

Założono, że projektowany prototyp systemu kontroli dostępu będzie spełniał

wymagania klasy 3 dotyczące procedury przyznawania dostępu, które zawarte są

w podanej wcześniej normie. Z tego względu należało przemyśleć z jakich elementów

powinien się składać kompletny prototyp i znaleźć odpowiednie produkty dostępne na

rynku. Poniżej przedstawiono najważniejsze części zaprojektowanego systemu.

2.1 Mikrokontroler STM32F407VGT6

Jak już wspomniano we wprowadzeniu, najważniejszą funkcjonalnością systemu

kontroli dostępu jest przetwarzanie danych. W zależności od przyjętego rozwiązania

zadanie to może realizować centralka kontroli dostępu lub też osobne urządzenie.

W naszym przypadku zdecydowano się na rozwiązanie wykorzystujące jeden

mikrokontroler zajmujący się wszystkimi najważniejszymi czynnościami takimi jak:

sterowanie przejściem kontrolowanym, przeprowadzanie całej procedury przydzielania

dostępu (proces identyfikacji + weryfikacji) oraz nadzorowanie prawidłowego działania

przejścia.

Z tego względu wykorzystywany mikrokontroler powinien cechować się dobrą

wydajnością obliczeniową, możliwością kontroli wieloma urządzeniami peryferyjnymi

oraz mieścić się w rozsądnym przedziale cenowym. Biorąc pod uwagę powyższe

założenia zdecydowano się na wybór mikrokontrolera filmy STMicroelectronics:

STM32F407VG. Jego głównym układem jest procesor Cortex-M4, który dzięki

wysokiej częstotliwości pracy (do 168MHz) oraz wbudowanym koprocesorze

zmiennoprzecinkowym dobrze sprawdza się jako urządzenie do przetwarzania sygnału

mowy.

Najważniejszymi właściwościami tego mikrokontrolera, mającymi znaczący wpływ na

wykorzystanie go jako głównej centralki, są:

Page 19: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 19 -

- 1MB pamięci Flash i 192kB pamięci SRAM (duża ilość dostępnej pamięci

potrzebna jest do umieszczenia w niej wszystkich niezbędnych algorytmów

realizujących funkcje systemu kontroli dostępu)

- Częstotliwość pracy do 168MHz

- Obsługa interfejsów komunikacyjnych I2C, SPI, I2S

- 100-pinowa obudowa LQFP (możliwość podłączenia wielu urządzeń

peryferyjnych)

- Obsługa USB 2.0 OTG oraz 100/10 Ethernet (przydatne w dalszym rozwoju

projektu)

Obecnie na rynku mikrokontroler ten można znaleźć w gotowym zestawie

ewaluacyjnym przygotowanym przez firmę STMicroelectronics - F4 Discovery.

Umożliwia on programowanie oraz debugowanie za pomocą wbudowanego urządzenia

ST-LINKv2 oraz zawiera kilka wbudowanych elementów peryferyjnych takich jak:

diody LED, przetwornik DAC, akcelerometr, mikrofon czy 2 złącza USB [5].

Do realizacji tej pracy dyplomowej zdecydowano się na wykorzystanie tej płytki

ewaluacyjnej ze względu na duże wsparcie producenta, niską cenę oraz możliwość

szybkiego rozpoczęcia pracy z mikrokontrolerem.

Rys. 4 Zestaw ewaluacyjny F4 Discovery [5]

Page 20: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 20 -

2.2 Czytnik kart elektromagnetycznych MIFARE – SL018

Procedura przydzielania dostępu dla urządzenia klasy 3 rozpoczyna się od

identyfikacji użytkownika. Może to być wprowadzenie informacji zapamiętanej lub

użycie identyfikatora unikalnego dla każdego użytkownika. Projektowany system

kontroli dostępu korzysta z tej drugiej możliwości. Identyfikatorem w tym przypadku

jest karta elektromagnetyczna bazująca na standardzie Mifare. Takie rozwiązanie

pozwala na zwiększenie bezpieczeństwa i ułatwienie procedury identyfikacji

z perspektywy użytkownika (nie musi on zapamiętywać żadnych haseł). Na rynku

znajduje się wiele urządzeń pozwalających programować karty elektromagnetyczne, ale

większość z nich jest stosunkowo droga. Istnieje jednak tanie rozwiązanie

zaproponowane przez firmę StrongLink - jest nim moduł SL018.

Rys. 5 Moduł SL018 firmy StrongLink [6]

Page 21: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 21 -

Moduł ten pozwala na programowanie i odczytywanie zawartości większości kart

opartych na technologii Mifare. Wszystkie komponenty znajdują się na niewielkiej

płytce PCB (wraz z anteną służącą do komunikacji z kartą). SL018 komunikuje się

z innymi urządzeniami za pomocą interfejsu komunikacyjnego I2C. Dzięki temu może

być wykorzystany w projektowanym systemie kontroli dostępu. Sposób podłączenia

tego urządzenia do zestawu ewaluacyjnego F4 Discovery przedstawiono na poniższym

schemacie.

Rys. 6 Schemat podłączenia czytnika SL018 do mikrokontrolera

2.3 Mikrofon MEMS – MP45DT02

Po pozytywnie zakończonym etapie identyfikacji użytkownika musi nastąpić proces

jego weryfikacji. W tworzonym systemie kontroli dostępu ta część jest realizowana

poprzez analizę sygnału mowy. Aby głos użytkownika mógł być przeanalizowany musi

najpierw zostać wprowadzony do wewnętrznej pamięci mikrokontrolera. W tym celu

prototyp został wzbogacony o mikrofon MP45DT02, który można znaleźć na płytce

ewaluacyjnej F4 Discovery.

Page 22: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 22 -

Rys. 7 Mikrofon MEMS MP45DT02 [7]

MP45DT02 jest cyfrowym mikrofonem wszechkierunkowych zaprojektowanym w

technologii MEMS. Dzięki jego niewielkim rozmiarom i dobrym parametrom

akustycznym [7] stanowi on właściwe rozwiązanie do projektowanego systemu kontroli

dostępu. Mikrofon komunikuje się z innymi urządzeniami za pomocą interfejsu I2S,

a wysyłany przez niego sygnał, reprezentujący przebieg sygnał akustycznego, jest

przedstawiony przy użyciu modulacji PDM. Z tego względu do obsługi tego urządzenia

nie jest potrzebny przetwornik DAC. Wszystkie operacje pozwalające przekonwertować

sygnał na PCM są wykonywane wewnątrz mikrokontrolera. Poniżej przedstawiono

niektóre parametry akustyczne mikrofonu i schemat podłączenia do mikrokontrolera

Rys. 8 Schemat podłączenia mikrofonu do mikrokontrolera [5]

Page 23: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 23 -

2.4 Wyświetlacz LCD ze sterownikiem HD44780

Aby umożliwić komunikację z użytkownikiem, prototyp wyposażony jest

w alfanumeryczny, dwuliniowy wyświetlacz LCD ze sterownikiem HD44780 [8]. Jest

to jeden z najpopularniejszych ekranów dostępnych na rynku. Został on wykorzystany

w celu informowania użytkownika o stanie przeprowadzanej procedury przyznawania

dostępu oraz informowaniu o wystąpieniu alarmu. Wyświetlacz podłączony jest do

płytki w sposób przedstawiony na schemacie. Posiada on 16 wyprowadzeń z czego 11

jest wykorzystywanych do komunikacji z mikrokontrolerem (RS, RW, E, DB0 - DB7).

Pozostałe wyprowadzenia służą do podłączenia napięcia zasilającego i uziemienia

(GND, Vcc), potencjometru kontrolującego kontrast ekranu (V0), oraz napięcia

zasilającego diodę podświetlającą (A, K).

Rys. 9 Schemat podłączenia ekranu LCD do mikrokontrolera

Page 24: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 2 - Prototyp urządzenia (hardware)

- 24 -

2.5 Kompletne urządzenie

Poniżej przedstawiono fotografie ukazującą kompletny prototyp systemu kontroli

dostępu. Do podłączenia poszczególnych elementów wykorzystano płytkę ewaluacyjną

Open407V-D, płytki stykowe 830 i przewody połączeniowe. Całość zasilana jest

napięciem 5V pochodzącym z portu USB podłączonego do komputera PC. Za pomocą

tego samego portu przeprowadzany jest cały proces programowania i debugowania

urządzenia. Tak zaprojektowany prototyp pozwala na rozpoczęcie zbudowania

środowiska programistycznego, utworzenia sterowników oraz implementacji

najważniejszych algorytmów związanych z procedurą przydzielania dostępu Prototyp

ten stanowi również stanowisko edukacyjne pozwalające dalej rozwijać system kontroli

dostępu oraz inne projekty.

Rys. 10 Kompletne urządzenie

Page 25: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 25 -

Rozdział 3 - Prototyp urządzenia (software)

3.1 Przygotowanie środowiska programistycznego

Pierwszym krokiem na drodze do oprogramowania prototypu było przygotowanie

pełnego środowiska programistycznego, które pozwalałoby w łatwy sposób

programować oraz debugować pamięć flash mikrokontrolera. Na rynku istnieje kilka

gotowych rozwiązań, takich jak: TrueSTUDIO (Atollic), EWARM (IAR) czy MDK-

ARM (Keil), które są w pełni kompatybilne z urządzeniami opartymi na procesorach

ARM i zawierają wszystkie niezbędne elementy pozwalające zacząć pracę

z mikrokontrolerem. Niestety ceny tego typu oprogramowania są zbyt wysokie,

a wersje próbne posiadają istotne ograniczenia, z których najpoważniejszym jest

maksymalny rozmiar kodu wynoszący 32kB. Biorąc pod uwagę te obostrzenia podjęto

decyzję o samodzielnym przygotowaniu środowiska programistycznego, którego opis

przedstawiony jest w dalszej części pracy.

Fundamentalnym elementem środowiska programistycznego jest darmowy toolchain

GNU dla wbudowanych procesorów ARM (w tym Cortex-M4F) udostępniony na

licencji GPL. Toolchain składa się z kilku narzędzi programistycznych, z których

najważniejszy jest kompilator języka C obsługujący instrukcję typu ARM. Najnowsza

wersja wzbogacona jest również o wsparcie koprocesora zmiennoprzecinkowego

znajdującego się w procesorze Cortex-M4F. Instalacja toolchaina jest bardzo łatwa do

przeprowadzenia dlatego nie poświęcono jej miejsca w niniejszej pracy. Kompilator

wykorzystuje utworzony przez użytkownika plik makefile, w którym znajdują się

wszystkie informacje dotyczące procesu kompilacji. Wersja podstawowa pliku

makefile, z którego korzystano w pierwszych wersjach tworzonego oprogramowania

pochodzi ze strony internetowej [9], a oparta jest na wielu przykładach znajdujących się

w Internecie. Aby móc skomplikować najprostszy kod źródłowy kompatybilny

z mikrokontrolerem STM32 należy dołączyć do projektu odpowiedni skrypt dla linkera

oraz plik startup.s napisany w języku assemblerowym, którego zadaniem jest

przeprowadzenie pierwszej inicjalizacji procesora występującej tuż po jego

uruchomieniu. W pliku tym znajduje się tablica przerwań dla procesora ARM, która

musi być umieszczona w pamięci przed rozpoczęciem wykonywania kodu źródłowego.

Page 26: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 26 -

Płytka F4 Discovery może być programowana i debugowana przy użyciu

narzędzia ST-Link V2 zintegrowanego z płytką. W przypadku korzystania

z wymienionych wcześniej komercyjnych toolchainów nie ma problemu z jego

obsługą, natomiast by pracować we własnoręcznie przygotowanym środowisku trzeba

zaopatrzyć się w dodatkowe oprogramowanie. Darmowe narzędzie OpenOCD (Open

On-Chip-Debugger) stanowi 'most' pomiędzy wbudowanym ST-Linkiem, a debuggerem

GDB (GNU Debugger), który wykorzystywany jest przez toolchain GNU.

Do połączenia toolchaina GNU z OpenOCD oraz do umożliwienia łatwej

i przejrzystej edycji kodu źródłowego można wykorzystać open-sourceowy program

Eclipse (wersja Kepler). Po jego instalacji należy przeprowadzić wstępną konfigurację,

która pozwoli rozpocząć pracę z mikrokontrolerem STM32F407VGT6:

1) W oknie Project-> Properties wybrać zakładkę C/C++ Build i zaznaczyć 'use

default build command' - pozwoli to wykorzystywać zainstalowany wrześniej toolchain

GNU do kompilacji utworzonego projektu,

2) Pobrać oficjalną wtyczkę Eclipse C/C++ GDB Hardware Debugging oraz

Zylin Embedded CDT (Okno Help->Install New Software),

3) W oknie Run->External Tools->External Tools Configuration utworzyć nową

konfigurację, wybrać lokalizację narzędzia OpenOCD i w polu arguments wpisać

następującą linię: "-f openocd/stm32f4discovery.cfg" - dzięki temu będzie można

korzystać z OpenOCD z poziomu interfejsu Eclipse,

4) W oknie Run->Debug Configurations utworzyć nową konfigurację Zylin,

wybrać lokalizację pliku wynikowego, w zakładce debugging ustawić kolejno:

debugger - Embedded GDB; GDB debugger - arm-none-eabi-gdb; GDB Command file

- stm32f407vg.script; GDB Command Set - standard; Protocol - mi2,

5) Do folderu projektu dodać skrypt ‘stm32f407vg.script’, który zawiera pełną

instrukcję programowania pamięci flash i rozpoczęcia procesu debugowania. Plik

zawarty jest na dołączonej do pracy płycie CD.

Page 27: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 27 -

Tak przeprowadzona konfiguracja jest w zupełności wystarczająca do

rozpoczęcia tworzenia aplikacji na mikrokontroler STM32F407VGT6. Przy

projektowaniu oprogramowania do prototypu systemu kontroli dostępu wykorzystano

dodatkowo biblioteki ułatwiające programowanie. Pierwszą z nich jest CMSIS (Cortex

Microcontroller Software Interface Standard) [2], która zawiera wiele przydatnych

narzędzi dla mikrokontrolerów opartych na procesorze ARM-Cortex-M4F,

a w szczególności biblioteki DSP umożliwiające szybkie wykonywanie funkcji

z zakresu przetwarzania sygnałów z użyciem koprocesora zmiennoprzecinkowego.

Drugą biblioteką jest ‘Standard Peripherial Library’ pochodzącą od firmy STM [3]. Na

dołączonej płycie CD znajduje się gotowy szablon pozwalający na szybkie rozpoczęcie

pracy z mikrokontrolerem.

3.2 Implementacja systemu operacyjnego czasu rzeczywistego

FreeRTOS

Projektowany system kontroli dostępu musi w sposób niezawodny realizować

swoje najważniejsze funkcjonalności. Oprócz realizowania procedury przyznawania

dostępu jego zadaniem jest również stała kontrola nad stanem przejścia oraz

ewentualna komunikacja z innymi urządzeniami stanowiącymi część większego

systemu nadzorującego (system alarmowy). Aby umożliwić realizację tych

funkcjonalności w jednej aplikacji wykonywanej przez mikrokontroler niezbędnym

staje się wykorzystanie systemu operacyjnego. W zakresie niniejszej pracy inżynierskiej

założono implementację systemu operacyjnego, który będzie wykorzystywany

w późniejszych pracach nad prototypem do wzbogacenia aplikacji o dodatkowe

funkcjonalności. Do implementacji na urządzeniu został wybrany darmowy system

operacyjny czasu rzeczywistego FreeRTOS [10]. Jest on specjalnie zaprojektowany dla

systemów wbudowanych, których głównym ograniczeniem jest dostępna ilość pamięci

operacyjnej. Dzięki jego niewielkich rozmiarom i pełnej wymaganej funkcjonalności

jest on dobrym rozwiązaniem dla budowanego prototypu. FreeRTOS kompiluje się

razem z kodem źródłowym mikrokontrolera dlatego też należy go dołączyć do projektu

przed rozpoczęciem kompilacji. Na stronie producenta [10] znajduje się spakowany

projekt zawierający najważniejsze elementy systemu operacyjnego.

W folderze DEMO znajdują się projekty aplikacji demonstracyjnych dla kilkunastu

wybranych urządzeń. Niestety na chwilę obecną nie ma w nich płytki F4 Discovery

Page 28: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 28 -

dlatego implementacja musi być wykonana samodzielnie. Folder SOURCE zawiera

wszystkie podstawowe pliki jądra systemu operacyjnego w języku C oraz podfolder

PORTABLE, w którym znajdują się specyficzne pliki zależne od wykorzystywanego

kompilatora i architektury procesora oraz podfolder MEMMANG z trzema różnymi

metodami zarządzania pamięcią. Pliki jądra FreeRTOS można bezpośrednio dołączyć

do projektu podając ich lokalizację w pliku makefile (linia SRCS_DIRS) natomiast pliki

port.c i portmarco.h trzeba wybrać z folderu SOURCE->PORTABLE->GCC-

>ARM_CM4F (dla kompilatora GNU oraz procesora Cortex-M4F). W projektowanym

prototypie do zarządzania pamięcią wykorzystano metody znajdujące się w pliku

heap_2.c.

Tak utworzony projekt powinien się bezproblemowo skompilować. Aby

rozpocząć pracę z systemem operacyjnym należy jeszcze odpowiednio skonfigurować

plik nagłówkowy FreeRTOSConfig.h, w zależności od potrzeb. Najważniejsze

ustawienia znajdujące się w tym pliku to: częstotliwość zegara systemowego

(configCPU_CLOCK_HZ), minimalny rozmiar dostępnego stosu dla pojedynczego

wątku (configMINIMAL_STACK_SIZE), całkowity rozmiar sterty

(configTOTAL_HEAP_SIZE) oraz kilka definicji specyficznych dla procesora Cortex-

M4F definiujące priorytety przerwań. Odpowiednio skonfigurowany plik

FreeRTOSConfig.h znajduje się na dołączonej płycie CD.

3.3 Przygotowanie sterowników do urządzeń peryferyjnych

Poniższy opis przedstawia implementację sterowników do urządzeń peryferyjnych

przygotowanych przez autora pracy. Zostały one zrealizowane przy wykorzystaniu

biblioteki „Standard Peripherial Library” producenta STM. Wiedzę odnośnie

poszczególnych elementów czerpano z dokumentacji technicznej urządzeń oraz

przykładów znajdujących się w Internecie.

Page 29: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 29 -

3.3.1 SL018

Aby nawiązać komunikację z modułem SL018 należy najpierw skonfigurować

odpowiednie piny GPIO oraz interfejs komunikacyjny I2C, który służy do wymiany

danych między modułem a mikrokontrolerem. Procedura SL018Init() przeprowadza

wszystkie procesy niezbędne do rozpoczęcia transferu danych. Procedura

inicjalizacyjna rozpoczyna się od uruchomienia odpowiednich zegarów dla portu GPIO

oraz interfejsu I2C. Następnie piny PGIO są konfigurowane i podłączane do interfejsu

komunikacyjnego. Po konfiguracji pinów następuje wprowadzenie odpowiednich opcji

informujących mikrokontroler na jakich zasadach będzie przebiegać transfer za pomocą

I2S. Ostatnim krokiem jest uruchomienie interfejsu I2S za pomocą komendy

I2C_Cmd(SL018_I2C, ENABLE).

Rys. 11 Schemat blokowy procedury SL018Init()

Page 30: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 30 -

Wymiana danych między urządzeniami odbywa się tylko przy wykorzystaniu złącz

SDA (PC9) i SCL (PA8). Urządzenie, które jest zdefiniowane jako master (w tym

przypadku jest to mikrokontroler) generuje na tych złączach warunek START

i rozpoczyna przesyłanie jednego bajta danych. Po wykonaniu transferu urządzenie, do

którego dotarły dane wysyła sygnał ACK i w wypadku przesyłania pojedynczej

instrukcji generowany jest warunek STOP. Jeśli instrukcji jest więcej, po sygnale ACK

wysyłany jest kolejny bajt danych.

Rys. 12 Przesyłanie jednego bajta danych za pomocą I2C [4]

Zapisywanie i odczytywanie informacji umieszczonych na kartach Mifare odbywa

się poprzez wysyłanie do modułu SL018 odpowiednich instrukcji poprzez interfejs I2C.

Instrukcje te można znaleźć w dokumentacji urządzenia [6]. W projektowanym

prototypie informacja z karty jest odczytywana w momencie gdy zostanie ona

przyłożona do czytnika. Informuje o tym niski stan na wyprowadzeniu TagSta (PD1).

Operacja odczytywania informacji opisana jest na poniższym rysunku.

Rys. 13 Operacja odczytywania danych za pomocą interfejsu I2C [6]

Page 31: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 31 -

3.3.2 MP45DT02

Mikrofon MP45DT02, jak już wcześniej wspomniano, wbudowany jest w płytkę

ewaluacyjną F4Discovery. Aby przeprowadzić inicjalizację tego urządzenia należy

wykonać kilka istotnych zadań, które realizowane są przez procedurę MicrophoneInit().

Na początku należy uruchomić odpowiedni zegar taktujący dla portów GPIO,

skonfigurować używane porty i podłączyć je do interfejsu I2S.

Następnie należy skonfigurować interfejs I2S, który wykorzystywany jest do

transmisji danych pochodzących z mikrofonu do wewnętrznej pamięci mikrokontrolera.

Interfejs I2S wykorzystuje sygnał zegarowy pochodzący od dedykowanego zegara

PLLI2S cechującego się duża dokładnością, dlatego też przed konfiguracją I2S należy

zadbać o poprawną konfigurację oraz uruchomienie tego zegara. W tworzonym

oprogramowaniu proces inicjalizacji zegara PLL2S następuje tuż po uruchomieniu

systemu (kod inicjalizacyjny znajduje się w pliku system_stm32f4xx.c) i polega na

wprowadzeniu odpowiednich wartości do rejestrów oznaczających współczynniki

podziału sygnału taktującego. Współczynniki te zależą od częstotliwości z jaką ma być

próbkowany sygnał akustyczny i formatu danych (16,32 bity). Zalecane wartości można

znaleźć w dokumentacji technicznej mikrokontrolera[4]. Dla mikrofonu MP45DT02,

częstotliwości próbkowania 8000Hz i formacie danych 16bit wartości te wynoszą:

PLLI2S_N = 256, PLLI2S_R = 2.

Inicjalizacja interfejsu I2S polega na ustawieniu podstawowych opcji dotyczących

transferu takich jak: częstotliwość próbkowania, format danych, standard transferu

danych. W tym miejscu następuje również ustawienie flagi odpowiadającej za

występowanie przerwania od interfejsu I2S. Przerwanie to występuje wtedy gdy bufor

interfejsu zostanie wypełniony danymi z mikrofonu. Procesor jest w ten sposób

informowany o możliwości pobrania danych do pamięci. Aby przerwanie mogło

funkcjonować, należy zainicjalizować je w kontrolerze przerwań NVIC.

Ostatnim elementem wymagającym inicjalizacji jest struktura

PDMFilter_InitStruct, która opisuje filtr wykorzystywany do konwersji sygnału

z modulacji PDM na modulację PCM. Szczegóły odnośnie tej struktury oraz samego

procesu konwersji można znaleźć w uwagach dotyczących formatu PDM

udostępnionych przez firmę STM [19].

Page 32: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 32 -

Rys. 14 Schemat blokowy procedury MicrophoneInit()

Mając skonfigurowane wszystkie części interfejsu mikrokontrolera niezbędne do

komunikacji między nim a mikrofonem można rozpocząć nagrywanie dźwięku

wykonując polecenie I2S_Cmd(SPI2, ENABLE). Polecenie to uruchamia interfejs I2S,

który zaczyna wysyłać mikrofonowi sygnał taktujący. Mikrofon wykorzystuje ten

sygnał by rejestrować sygnał akustyczny i wysyłać dane do bufora I2S. Gdy bufor ten

zostanie napełniony (dane 16-bitowe) to z interfejsu I2S generowane jest przerwanie

SPI2_IRQ_Handler(), które powinno być obsłużone przez procesor. W przerwaniu tym

dane z bufora I2S przenoszone są do pamięci RAM gdzie znajduje się bufor

PDM_Buffer. Gdy bufor ten zostanie zapełniony 32 zmiennymi (równowartość 1ms

nagrania) wywoływana jest funkcja PDM_Filter_64_LSB(), której zadaniem jest

dekodowanie sygnału PDM na wartości PCM. Funkcja ta dostępna jest w bibliotekach

udostępnionych przez producenta. Po konwersji na PCM otrzymujemy osiem

16bitowych zmiennych, które mogą być przeniesione do właściwego bufora audio. Opis

wykorzystywanego bufora audio znajduje się w dalszej części pracy.

Page 33: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 33 -

Rys. 15 Schemat blokowy obsługi przerwania SPI2_IRQ_Handler()

3.3.3 Wyświetlacz LCD

Komunikacja ze sterownikiem HD44780, który znajduje się w module wyświetlacza

odbywa się poprzez ustawianie odpowiednich stanów elektrycznych wyprowadzeń: RS,

RW, E, DB0 - DB7. Ustawianie tych stanów odbywa się poprzez zapisywanie

odpowiednich wartości w rejestrach portów GPIO mikrokontrolera. Do sterownika

można wysłać albo komendę albo bajt danych. To jakiego rodzaju informacja jest

wysyłana zależy od stanu wyprowadzenia RS. Lista wszystkich możliwych komend

znajduje się w dokumentacji technicznej urządzenia [8]. Aby umożliwić wyświetlanie

informacji na wyświetlaczu należy najpierw przeprowadzić inicjalizację, którą realizuje

procedura LCDInit(). Procedura najpierw uruchamia odpowiedni zegar taktujący port

GPIO i konfiguruje odpowiednie piny wyjściowe.

Page 34: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 34 -

Gdy piny zostaną skonfigurowane można uznać, że łączność ze sterownikiem

wyświetlacza została nawiązana. Procedura w kolejnym kroku wysyła do niego szereg

komend, które inicjalizują całe urządzenie i pozwolą na wprowadzanie dowolnego

tekstu.

Rys. 16 Schemat blokowy procedury LCDInit()

Wysłanie pojedynczej komendy do sterownika realizowane jest przez funkcję

LCD_Command(), która została przedstawiona na poniższym listingu. Jako argument

funkcja przyjmuje jeden bajt, który oznacza konkretną komendę. Sterownik odczytuje

komendę do wykonania w momencie wystąpienia opadającego zbocza na

wyprowadzeniu ENABLE. Dlatego też najpierw ustawiane są odpowiednie stany na

wyprowadzeniach konfiguracyjnych: RS(0), RW(0), EN(1), następnie na pinach portu

GPIO ustawiane są stany zgodnie z wprowadzoną komendą i ostatecznie stan

wyprowadzenia ENABLE przełączany jest z wysokiego na niski. Na takiej samej

zasadzie działa wprowadzanie danych do wyświetlacza. Wyjątkiem jest linia RS, na

której powinien pojawić się wtedy stan wysoki.

Page 35: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 35 -

3.4 Implementacja algorytmów przeprowadzających parametryzację

głosu

Parametryzacja sygnału akustycznego w zaprojektowanym prototypie musiała

zostać odpowiednio zoptymalizowana zarówno pod kątem dostępnej mocy

obliczeniowej mikroprocesora jak i dostępnej ilości pamięci RAM. Należało wziąć pod

uwagę fakt, że ilość pamięci RAM dostępnej dla użytkownika mikrokontrolera

wynosiła 96kB co uniemożliwiało wykonanie klasycznej parametryzacji, czyli takiej,

która operuje na całym sygnale mowy znajdującym się w pamięci. Przy próbkowaniu

8000Hz i 16 bitowej rozdzielczości wypowiedź trwająca 3 sekundy zajmowałaby

w pamięci ok. 47kB. Zakładając, że podstawowym etapem parametryzacji jest

ramkowanie sygnału połączone z zakładkowaniem, które podwaja ilość zajmowanego

miejsca, pamięć RAM musiałaby być zdolna do przechowywania 94kB informacji, co

byłoby niemożliwe do wykonania. Oprócz miejsca zajmowanego przez spróbkowany

sygnał akustyczny, w pamięci RAM musi być również miejsce dla pozostałych

procesów wykonywanych przez mikroprocesor (dalsze etapy parametryzacji,

jednoczesne realizowanie innych funkcjonalności).

Problem ten spowodował, że należało zmienić sposób wykonywania

parametryzacji sygnału. Zdecydowano się na parametryzację nadchodzących próbek

w czasie rzeczywistym (ramka po ramce). Zakładając długość ramki równą 256

próbkom sygnału (32ms), zakładkę wynoszącą 128 próbek (16ms) i ilość parametrów

jednego wektora cech równą 24 (12 współczynników cepstralnych + 12

współczynników delta) 3 sekundowy, sparametryzowany sygnał akustyczny

zajmowałby w pamięci RAM 186 wektorów cech, czyli ok. 17 kB. Takie podejście

przyniosłoby korzyść w postaci znacznej redukcji zajmowanego miejsca w pamięci,

lecz z drugiej strony należało się liczyć z tym, że mikroprocesor może nie nadążyć

z parametryzacją jednej ramki i koniecznym stanie się wykorzystywanie dodatkowych

buforów w pamięci. Poniżej przedstawiono poszczególne etapy implementacji

parametryzacji mając na uwadze powyższe rozumowanie.

Page 36: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 36 -

3.4.1 Cykliczny bufor audio

Zamiast przechowywać w pamięci urządzenia cały spróbkowany przebieg czasowy

sygnału akustycznego, wykorzystywany jest cykliczny bufor o wielkości jednej ramki

(256 próbek), który wypełniany jest na bieżąco danymi pochodzącymi z mikrofonu

MP45DT02 przekonwertowanymi na PCM. Gdy bufor się zapełni wskaźnik

AudioBufferCounter, wskazujący na kolejne miejsce zapisu danych, jest resetowany

i ustawiany na początku bufora. Aby zapewnić zakładkowanie sygnału o ½ ramki (128

próbek) parametryzacja rozpoczyna się w momencie gdy wskaźnik osiągnie wartość

128 oraz 256 (uruchamiana jest wtedy procedura FrameShifting()). Gdy wskaźnik ma

wartość 256 wtedy cała zawartość bufora jest zamieniana na liczby

zmiennoprzecinkowe i kopiowana do wektora WaveFrame. Natomiast gdy wskaźnik

osiągnie wartość 128, wtedy do pierwszej połowy wektora WaveFrame trafiają wartości

od 128 do 255 z bufora audio, a do pozostałych: wartość od 0 do 127. Cała procedura

jest słuszna dopiero po wypełnieniu bufora pierwszą ramką sygnału.

Wykorzystywanie zakładkowania sygnału wymusza na mikroprocesorze wykonanie

parametryzacji jednej ramki w czasie o połowę krótszym niż czas wypełnienia całego

bufora. W przypadku próbkowania dźwięku z częstotliwością 8000Hz czas ten wynosi

16ms. Poniższy rysunek przedstawia procedurę, która wykonuje zakładkowanie. Jest

ona wywoływana w przerwaniu, w momencie gdy wartość wskaźnika

AudioBufferCounter jest równa 128 lub 256.

Page 37: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 37 -

Rys. 17 Schemat blokowy procedury FrameShifting()

3.4.2 Preemfaza, okienkowanie i analiza częstotliwościowa

Po umieszczeniu przekonwertowanych danych z bufora audio do wektora

WaveFrame rozpoczyna się właściwy proces parametryzacji. Pierwszym etapem jest

wykonanie preemfazy, czyli przefiltrowania ramki czasowej górnoprzepustowym

filtrem FIR I rzędu. To zadanie realizuje procedura Preemphasis(). Preemfazę można

opisać za pomocą równania

. (3.1)

Po filtracji sygnał jest wymnażany przez okno Hamminga: Hamming(), aby

przygotować ramkę do analizy częstotliwościowej (zmniejszyć efekty brzegowe)

Page 38: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 38 -

, (3.2)

(

) (3.3)

Na tak przygotowanej ramce można wykonać FFT i obliczyć widmo amplitudowe

sygnału. Mając na uwadze fakt, że obliczenia powinny wykonywać się jak najszybciej

do obliczania FFT wykorzystano funkcje arm_rfft_fast_f32() zamieszczoną w bibliotece

DSP, będącej częścią bibliotek CMSIS udostępnionych przez producenta

mikroprocesora ARM Cortex-M4F. Funkcja ta wykorzystuje wbudowany w Cortexa-

M4F koprocesor zmiennoprzecinkowy umożliwiając znacznie wydajniejsze obliczenia.

Algorytm obliczania FFT jest oparty o metodę radix-8 i wykorzystuje fakt, że widmo

amplitudowe sygnału rzeczywistego jest parzyste, więc istotna jest tylko połowa

wszystkich danych zespolonych. Funkcja arm_cmpl_mag_f32() pozwala wyznaczyć

widmo amplitudowe analizowanej ramki.

Rys. 18 Kolejne etapy parametryzacji

3.4.3 Filtracja bankiem filtrów melowych

Mając widmo amplitudowe jednej ramki można rozpocząć procedurę filtracji

bankiem filtrów melowych. Algorytm składa się z dwóch procedur. Pierwsza z nich,

BoundaryCalc(), ma na celu obliczenie częstotliwości granicznych na melowej skali

każdego filtru melowego wykorzystywanego do filtracji (w tym przypadku jest ich 28)

na podstawie zależności [12]:

Page 39: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 39 -

( (

) ( (

( (

(3.4)

Gdzie N – ilość elementów widma amplitudowego (N = 128), – częstotliwość

próbkowania ( = 8000Hz), – dolna częstotliwość graniczna ( =75Hz), - górna

częstotliwość graniczna ( = 4000Hz), – skala melowa, – odwrotność skali

melowej [12]:

( ( (

) (3.5)

( (

(3.6)

Druga procedura, MelFiltering(), ma za zadanie utworzenie 28 współczynników

melowych będących wynikiem wymnożenia utworzonego filtra melowego przez widmo

amplitudowe i obliczenia logarytmu energii przefiltrowanych ramek. Procedura

rezerwuje w pamięci wektor o wielkość 128 liczb zmiennoprzecinkowych, w którym

przechowuje filtr melowy utworzony na podstawie poniższej zależności [12]

(3.7)

Po utworzeniu filtra procedura wymnaża widmo amplitudowe ramki przez ten filtr,

liczy logarytm energii i zapisuje go w kolejnej pozycji wektora ze współczynnikami

melowymi. Następnie w miejscu starego filtru melowego tworzony jest nowy

i procedura powtarza się do momentu obliczenia 28 współczynników melowych.

Page 40: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 40 -

Rys. 19 Schemat blokowy procedury MelFiltering()

3.4.4 Dyskretna transformacja kosinusowa i liftering

28 współczynników melowych zawiera informacje dotyczące kształtu widma

częstotliwościowego skorygowanego względem czułości ludzkiego ucha.

Współczynniki te zawierają nadmiar informacji ponieważ poszczególne filtry melowe, z

których zostały utworzone, na siebie nachodzą. Aby zdekolerować te parametry

i zmniejszyć ilość zbędnych informacji wykorzystuje się dyskretną transformację

kosinusową. Procedura obliczania współczynników MFCC, DCT(), wykorzystuje

następującą zależność [21]

∑ (

( )

(3.8)

gdzie to ilość filtrów melowych ( = 28).

Page 41: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 41 -

Po obliczeniu współczynników MFCC kontrolę nad wektorem MFCC przejmuje

kolejna procedura: Liftering(), której zadaniem jest dokonanie lifteringu, czyli pozbycie

się mniej istotnych współczynników MFCC (redukcja o zerowy parametr i parametry

wyższe od 13). Po procesie lifteringu wektor cech MFCC składa się z 12 parametrów.

W tym momencie kończy się część parametryzacji, która musi wykonywać się

w ściśle określonym reżimie czasowym wymuszanym przez zapełniający się bufor

audio. Gdy rejestracja sygnału mowy zakończy się (zakładając, że wypowiedź używana

jako hasło trwała 3s) macierz parametrów MFCC składa się z 93 wektorów cech, każdy

po 24 parametry. W tym momencie można rozpocząć dalszą parametryzację, która

wymaga zgromadzenia w pamięci całej macierzy MFCC.

3.4.5 Współczynniki delta oraz CMS

Zarejestrowany sygnał akustyczny posiada cenne informacje na temat toru

głosowego mówcy i sposobu wymowy nie tylko w dziedzinie częstotliwości, ale

również w dziedzinie czasu. Dodanie do wektora cech parametrów odzwierciedlających

dynamikę mowy pozwala zwiększyć skuteczność systemu weryfikacji mówcy [13].

Parametry te, nazywane współczynnikami delta, określają zmianę pojedynczego

parametru wektora cech w stosunku do jego wcześniejszych i późniejszych chwil czasu.

Procedura obliczająca współczynniki delta, DeldaCalc(), wykorzystuje następującą

zależności [21]

∑ ( , (3.9)

gdzie - rząd obliczeń ( = 2), c – parametr wektora MFCC.

Wektor parametrów delta jest następnie normalizowany przez czynnik, który jest

ilorazem odchylenia standardowego wartości parametrów delta danej ramki

i odchylenia standardowego wartości parametrów MFCC danej ramki

. (3.10)

Tak obliczone współczynniki powodują, że kompletna macierz składa się

z wektorów cech, z których każdy ma 24 elementy.

Page 42: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 42 -

Kolejną techniką mającą na celu zwiększenie skuteczności systemu jest CMS

(Cepstral Mean Substraction). Służy ona do zminimalizowania wpływu statycznego tła

akustycznego i wykorzystywanego sprzętu na macierz wektora cech [20]. Technika ta

polega na obliczeniu średniej wartości każdego parametru z wektora cech w dziedzinie

czasu, a następnie odjęciu średniej od każdego parametru

, (3.11)

gdzie jest wektorem cech (MFCC + delta), jest średnią wartość parametrów

w dziedzinie czasu. Obliczanie średniej i odejmowanie jest realizowane przez funkcję

CMS().

3.4.6 Feature Warping

Ostatnim etapem, finalizującym proces parametryzacji sygnału jest technika Feature

Warping. Podobnie jak współczynniki delta oraz CMS służy ona do zwiększenia

skuteczności identyfikacji i usunięcia negatywnego wpływu czynników (takich jak

szum addytywny) na macierz wektorów cech [15]. Głównym zadaniem metody Feature

Warping jest taka modyfikacja zgromadzonych wektorów cech z pojedynczej

wypowiedzi, aby były one jak najbardziej zbliżone do wektorów cech z wypowiedzi

treningowych. Wykonuje się to poprzez mapowanie określonej ilości wektorów cech na

dowolnie wybraną funkcję. W naszym wypadku funkcją, na którą wykonywane będzie

mapowanie parametrów jest odwrotna dystrybuanta rozkładu normalnego

przedstawiona na poniższym rysunku.

Rys. 20 Odwrotna dystrybuanta rozkładu normalnego [1]

Page 43: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 43 -

Szczegóły na temat implementacji algorytmu aproksymującego odwrotną

dystrybuantę rozkładu normalnego znajdują się na stronie internetowej podanej

w bibliografii [1]. Do prototypu wykorzystano zmodyfikowaną implementację tego

algorytmu dla języka C.

Wartości odwrotnej dystrybuanty rozkładu normalnego dla 128 próbek są

obliczane jednokrotnie po uruchomieniu urządzenia i są stale przechowywane

w pamięci RAM. Procedura FeatureWarping() pobiera wskaźnik do wektora, który

przechowuje te wartości i wykorzystuje je do swoich obliczeń. Pierwszym zadaniem,

które wykonuje FeatureWarping() jest utworzenie dwóch pomocniczych wektorów

o długości równej ilości wektorów cech. Pierwszy z nich służy do przechowywania

parametrów ,a drugi ich indeksów od 0 do N-1 (gdzie N jest ilością parametryzowanych

wektorów cech). Następnie procedura ta sortuje malejąco wartości parametrów

z pierwszego wektora i jednocześnie zmienia odpowiednie indeksy w wektorze drugim.

Po wykonaniu sortowania następuje proces mapowania parametrów na odwrotną

dystrybuantę rozkładu normalnego poprzez zapisywanie do właściwych wektorów cech

wartości dystrybuanty dla indeksów z drugiego, posortowanego wektora.

Rys. 21 Schemat blokowy procedury FeatureWarping()

Page 44: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 44 -

3.5 Implementacja algorytmu weryfikacji mówcy na podstawie modelu

GMM

Po przeprowadzeniu mapowania wszystkich parametrów wektorów cech na

odwrotną dystrybuantę rozkładu normalnego proces parametryzacji kończy się.

Utworzona macierz wektorów jest wykorzystywana do procesu weryfikacji

użytkownika systemu kontroli dostępu. Zanim jednak do tego dojdzie model

użytkownika musi być wcześniej wytrenowany na podstawie macierzy wektorów cech

utworzonych w taki sam sposób. Projektowany prototyp będzie wykorzystywać modele

wytrenowane na zewnętrznym urządzeniu. Opisana poniżej procedura została

opracowana na bazie rozwiązania wykorzystywanego w programie MATLAB [17].

Procedura GaussMixLogProb() oblicza logarytm prawdopodobieństwa

wystąpienia danego wektora cech dla wprowadzonego wcześniej do pamięci

probabilistycznego modelu GMM mówcy. Zastąpienie zwykłego prawdopodobieństwa

logarytmem pozwala na łatwiejszą i wydajniejszą implementację algorytmu. Procedura

oblicza logarytm prawdopodobieństwa dla każdej mikstury, z których składa się model

GMM w oparciu o wzór (1.2), a następnie sumuje otrzymane wartości zgodnie z (1.1).

Wykorzystywany model GMM składa się z 16 mikstur gaussowskich. Działanie

algorytmu kończy się gdy wartość FrameCount jest równa ilości wektorów cech.

Page 45: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 3 - Prototyp urządzenia (software)

- 45 -

Rys. 22 Schemat blokowy procedury GaussMixLogProb()

Page 46: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 46 -

Rozdział 4 - Ocena poprawności zaimplementowanych

algorytmów

4.1 Reżimy czasowe

Zastosowanie bufora cyklicznego i zakładkowania sygnału akustycznego

wprowadziło pewne uwarunkowania dotyczące czasu trwania parametryzacji jednej

ramki. Gdyby parametryzacja trwała za długo to informacje na temat sygnału

akustycznego byłyby bezpowrotnie tracone. Dlatego najistotniejszą częścią oceny jest

zbadanie czasu trwania jednego cyklu parametryzacji w stosunku do czasu trwania

wypełniania bufora.

Wykorzystywanie próbkowania o częstotliwości 8kHz i długości ramki równej 256

próbek implikuje wypełnianie się bufora cyklicznego w czasie

. Jeśli

dodatkowo stosowane jest zakładkowanie o długości ½ ramki to nieprzekraczalny czas

parametryzacji jednej ramki wynosi 16ms. Czas parametryzacji zmierzono porównując

położenie wskaźnika AudioBufferCounter tuż przed rozpoczęciem parametryzacji i tuż

po jej zakończeniu. W rezultacie otrzymano następujące wyniki:

Tabela 1 – Wartości zmiennej AudioBufferCounter

Etap testu Wartość AudioBufferCounter

Początek parametryzacji 0

Koniec parametryzacji 88

Wyniki oznaczają, że parametryzacja ukończyła się w momencie gdy zapisywana

była 88 próbka bufora cyklicznego czyli czas parametryzacji wynosił:

.

Wynik ten jest zadowalający i pozwala na bezpieczne wykonywanie parametryzacji

przy takich parametrach rejestracji sygnału.

Page 47: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 47 -

4.2 Parametryzacja

Implementowane algorytmy były na bieżąco monitorowane pod kątem

prawidłowych obliczeń. Za pomocą debuggera GDB można było importować

odpowiednie wektory z pamięci RAM mikrokontrolera. Importowane wektory były

następnie otwierane w programie MATLAB, a wyniki obliczeń w nich zawartych były

porównywane z wynikami obliczeń analogicznych metod we wbudowanych

bibliotekach programu. Wszystkie algorytmy wykorzystywane do parametryzacji

sygnału były w ten sposób przeanalizowane. Analiza nie wykazała znaczących różnic

między wynikami obliczeń wykonanych na mikrokontrolerze a obliczeniami

wykonanymi w MATLABIE. Ewentualne różnice mogą wynikać z mniejszej precyzji

aproksymowania na mikrokontrolerze funkcji trygonometrycznych i wykładniczych ,

lecz nie mają one wpływu na jakość końcowej parametryzacji. Poniżej przedstawiono

wykresy obrazujące działanie najważniejszych algorytmów na wektorach testowych.

Wykresy zostały utworzone w programie MATLAB i pochodzą z zaimportowanych

wektorów znajdujących się w pamięci RAM mikrokontrolera.

Rys. 23 Rejestracja ramki czasowe dla głoski I

Page 48: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 48 -

Rys. 24 Preemfaza ramki czasowej

Rys. 25 Okienkowanie oknem Hamminga

Page 49: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 49 -

Rys. 26 Widmo amplitudowe analizowanej ramki czasowej

Rys. 27 Macierz MFCC dla wypowiedzi: „Używam mojego głosu jako klucza”

Page 50: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 50 -

Rys. 28 Współczynniki Delta + MFCC dla tej samej wypowiedzi

Rys. 29 Feature Warping zastosowany na tej samej wypowiedzi

Page 51: Implementacja głosowego zamka do drzwi w oparciu o ...

Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów

- 51 -

4.3 Weryfikacja użytkownika z wykorzystaniem modelu GMM

Do oceny poprawności procedury GaussMixProb() wykorzystano model GMM

składający się z szesnastu mikstur gaussowskich. Każda mikstura składała się z 24

wartości średnich, 24 wartości pochodzących z diagonalnej macierzy kowariancji oraz

jednej wagi. Parametry te zostały wyliczone podczas procedury treningu modelu, do

którego wykorzystano wcześniej nagrane i sparametryzowane fragmenty wypowiedzi

użytkownika. Model ten umieszczono w wewnętrznej pamięci urządzenia i używano go

do obliczania logarytmów prawdopodobieństwa wypowiedzi 3 mówców. Na poniższym

wykresie przedstawiono efekt obliczeń wykonanych na 9 wypowiedziach. Kolorem

zielonym zaznaczono właściwego mówcę, do którego należał model GMM. Kolor

czerwony i niebieski odpowiada wypowiedziom dwóch innych osób. Jak widać średnia

wartość logarytmu prawdopodobieństwa jest wyraźnie większa dla właściwego mówcy

w odniesieniu do pozostałych mówców.

Rys. 30 Logarytmy prawdopodobieństwa wektorów cech 9 wypowiedzi

Testy wykonano tylko w celach poglądowych, do ogólnej oceny poprawności

algorytmu. Nie stanowią one podstaw do wnioskowania o skuteczności procedury

weryfikacji mówcy. Tego typu testy przeprowadzone zostaną w późniejszych etapach

pracy nad prototypem.

Page 52: Implementacja głosowego zamka do drzwi w oparciu o ...

Podsumowanie

- 52 -

Podsumowanie

Wszystkie cele, które autor wyznaczył sobie do wykonania w ramach niniejszej

pracy dyplomowej zostały zrealizowane w zadowalającym stopniu. Udało się

skompletować wszystkie urządzenia elektroniczne niezbędne do tego, by stworzony

prototyp mógł realizować funkcjonalność biometrycznego systemu kontroli dostępu

klasy 3 [14]. Dla mikrokontrolera STM32V407GT6 utworzono kompletne, darmowe

środowisko programistyczne pozwalające tworzyć dowolne aplikacje oraz

zaimplementowano system operacyjny FreeRTOS, który umożliwi realizowanie pełnej

funkcjonalności systemu kontroli dostępu.

Zaimplementowana parametryzacja rejestrowanego głosu, dzięki przeprowadzonej

optymalizacji, spełnia wymogi narzucone przez ograniczoną ilość wbudowanej pamięci

RAM mikrokontrolera i warunki rejestracji sygnału. Obliczenia wykonują się

poprawnie, a tworzone w ten sposób wektory cech mogą być z powodzeniem

wykorzystywane do procedury weryfikacji mówcy bazującej na modelach GMM.

Utworzono również algorytm obliczający logarytm prawdopodobieństwa wystąpienia

danego wektora cech dla danego modelu GMM, dzięki któremu możliwe staje się

rozpoczęcie prac nad maksymalnym zwiększeniem skuteczności procedury weryfikacji

mówcy w biometrycznym systemie kontroli dostępu

Aby skonstruowany prototyp mógł spełniać wszystkie wymagania normy

i zapewniać wysoki poziom bezpieczeństwa należy włożyć w niego jeszcze wiele

pracy. Dalsze prace nad projektem będą zmierzać w kierunku poszerzania jego

funkcjonalności o komunikację z zewnętrznymi systemami takimi jak system

alarmowy, czy wieloelementowy system kontroli dostępu. Prototyp zostanie

wzbogacony o kolejne moduły elektroniczne takie jak czytnik karty SD, na której będą

przechowywane wszystkie informacje dotyczące użytkowników (ich modele GMM,

priorytety dostępu itp.) oraz złącze Ethernet służące do komunikacji. Należy również

znaleźć najskuteczniejszą metodę weryfikacji użytkownika na podstawie modelu GMM,

która będzie gwarantować wysokie bezpieczeństwo.

Page 53: Implementacja głosowego zamka do drzwi w oparciu o ...

Bibliografia

- 53 -

Bibliografia

[1] Acklam P., An algorithm for computing the inverse normal cumulative distribution

function, Dostępny: http://home.online.no/~pjacklam/notes/invnorm (odwiedzona

25.12.2013).

[2] Biblioteki CMSIS, Dostępny: www.arm.com (odwiedzona 15.11.14)

[3] Biblioteki STM32F4xx DSP_StdPeriph_Lib_V1.3.0, Dostępny: www.st.com

(odwiedzona 15.11.14)

[4] Dokumentacja techniczna mikrokontrolera, RM0090 Reference Manual, Dostępny:

www.st.com (odwiedzona 15.01.14)

[5] Dokumentacja techniczna płytki F4 Discovery, UM1472 User Manual, Dostepny:

www.st.com (odwiedzona 15.01.14)

[6] Dokumentacja techniczna SL018, User Manual V2.0, Dostępny:

http://www.stronglink-rfid.com (odwiedzona 15.01.14)

[7] Dokumentacja techniczna mikrofonu MP45DT02, Datasheet − production data,

Dostępny: www.st.com (odwiedzona 15.01.14)

[8] Dokumentacja techniczna sterownika HD44780, ADE-207-272(Z), Dostępny:

https://www.sparkfun.com (odwiedzony 15.01.14)

[9] Freddie Chopin: Artykuły dotyczące mikrokontrolerów STM32, Freddie Chopin

webpage, Dostępny: www.freddiechopin.info/en (odwiedzony 6.07.13)

[10] FreeRTOS – system operacyjny czasu rzeczywistego, Dostępny: www.freertos.org

(odwiedzony 9.09.13)

[11] Hasan R., Mustafa J., Rabbani G., Rahman S., Speaker Identification using mel

frequency cepstral coefficients, 3rd International Conference on Electrical &

Computer Engineering ICECE 2004, 2004, Dhaka, Bangladesh

[12] Huang X., Acero A., Hon H., Spoken Language Processing: A Guide to Theory,

Algorithm and System Development, New Jersey, Prentice Hall PTR, 2001 (s. 313 –

315)

Page 54: Implementacja głosowego zamka do drzwi w oparciu o ...

Bibliografia

- 54 -

[13] Kumar K., Kim C., Stern R., Delta-spectral cepstral coefficients for robust speech

recognition, Departament of Electrical and Computer Engineering: Language

Technologies Institute, Carnegie Mellon University, Pittsburgh, PA 15213

[14] Norma PN-EN 50133-1:1996 + AC:1998 + A1:2002, Systemy alarmowe - Systemy

kontroli dostępu -Część 1: Wymagania systemowe, s. 6 - 15

[15] Pelecanos J., Sridharan S., Feature Warping for Robust Speaker Verification, The

Speaker Recognition Workshop, Crete, Greece, 2001

[16] Reynolds D., Rose R., Robust Text-Independent Speaker Identification Using

Gaussian Mixture Speaker Models, IEEE Transactions on Speech and Audio

Processin, Vol. 3, No. 1, 1995

[17] Specyfikacja procedury gaussmixp ,Dostępny :

http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/doc/voicebox/gaussmixp.htmlsd,

(odwiedzony 15.01.14)

[18] Tiwari V., MFCC and its applications in speaker recognition, International Journal

on Emerging Technologies 1(1), 2010

[19] Uwagi STMicroelectronics dotyczące modulacji PDM, AN3998 Application Note,

Dostępny: www.st.com (odwiedzony 15.01.14)

[20] Westphal M., The Use of Cepstral Means in Conversational Speech Recognition,

Interacvite Systems Laboratories, University of Karlsruhe, 76128 Karlsruhe,

Germany

[21] Young S., Evermann G., Gales M., Hain T., Kershaw D., Liu X., et al., The HTK

Book, Cambridge University Engineering Department, 2009, s75 – 78

[22] Ziółko B., Ziółko M., Przetwarzanie Mowy, Wydawnictwa AGH, Kraków, 2011