implementacja głosowego zamka do drzwi w oparciu o
TRANSCRIPT
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
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
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).
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
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.
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.
.
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ć.
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
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.
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.
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.
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]
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]
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.
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].
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.
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)
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ą:
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]
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]
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.
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]
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
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
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.
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.
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
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.
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()
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]
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].
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.
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.
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.
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.
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.
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)
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]:
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.
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).
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.
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]
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()
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.
Rozdział 3 - Prototyp urządzenia (software)
- 45 -
Rys. 22 Schemat blokowy procedury GaussMixLogProb()
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.
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
Rozdział 4 - Ocena poprawności zaimplementowanych algorytmów
- 48 -
Rys. 24 Preemfaza ramki czasowej
Rys. 25 Okienkowanie oknem Hamminga
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”
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
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.
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.
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)
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