ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka
Bakal´ aˇ rsk´ a pr´ ace Hlasov´ eho pole
Praha, 2008
Autor: Jan Sova
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´ aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady, (literaturu, projekty, SW atd.) uveden´e v pˇriloˇzen´em seznamu.
V Praze dne podpis
i
Podˇ ekov´ an´ı ˇ Dˇekuji pˇredevˇs´ım vedouc´ımu bakal´ aˇrsk´e pr´ ace doc. Ing. Romanu Cmejlovi, Csc. za trpˇeliv´e veden´ı a mnoˇzstv´ı cenn´ ych rad. Dˇekuji Dr. Ing Janu Vokˇra´lovi za moˇznost spolupr´ ace a za specifikaci aplikace. Dˇekuji vˇsem, kteˇr´ı mi umoˇznili (nˇekdy n´ aroˇcn´ y) v´ yvoj aplikace a testov´ an´ı, tedy pˇredevˇs´ım sv´ ym rodiˇc˚ um.
ii
Abstrakt C´ılem t´eto bakal´ aˇrsk´e pr´ ace je vytvoˇrit informaˇcn´ı syst´em pro on-line vyˇsetˇren´ı hlasov´eho pole, kter´ y bude dostupn´ y bˇeˇzn´ ym foniatrick´ ym ordinac´ım. Vyˇsetˇren´ı hlasov´eho pole umoˇzn´ı l´ekaˇri z´ıskat objektivn´ı akustick´e parametry hlasu, tj. v naˇsem pˇr´ıpadˇe rozsah intenzit a t´ on˚ u, kter´ y je v moˇznostech pacienta. Z´ıskan´e parametry pomohou l´ekaˇri se rozhodnout pro dalˇs´ı, jiˇz n´ aroˇcnˇejˇs´ı vyˇsetˇren´ı, ˇci urˇcit postup l´eˇcby. Hlavn´ım probl´emem, kter´ y tato pr´ ace ˇreˇs´ı, je on-line v´ ypoˇcet a zobrazov´an´ı akustick´ ych parametr˚ u hlasu do hlasov´eho pole. Pro v´ ypoˇcet z´akladn´ı hlasivkov´e frekvence je pouˇzita autokorelac´ı funkce, jej´ıˇz v´ ypoˇcet je proveden ve frekvenˇcn´ı oblasti (pomoc´ı algoritm˚ u FFT a iFFT). Nem´enˇe d˚ uleˇzit´e je spr´ avn´e urˇcen´ı stabiln´ıch u ´sek˚ u hlasu pomoc´ı integrace energie a n´ asledn´e hled´ an´ı maxim. Souˇc´ast´ı programu je datab´ aze pacient˚ u a diagn´ oz, kter´a umoˇzn ˇuje nejen ukl´ adat v´ ysledky vyˇsetˇren´ı, ale tak´e sledovat dlouhodob´e zmˇeny bˇehem l´eˇcby pacienta. Realizace softwaru je v prostˇred´ı C# .NET Framework, DirectSound, GDI++ a PostgreSQL. Program pracuje na kaˇzd´em PC s operaˇcn´ım syst´emem Windows XP, kter´ y je vybaven zvukovou kartou a mikrofonem. Kl´ıˇ cov´ a slova: hlasov´e pole, FFT, DFT, integr´ ator, autokorelaˇcn´ı funkce, autokorelaˇcn´ı anal´ yza, on-line zpracov´ an´ı, z´ akladn´ı hlasivkov´ y t´ on
iii
Abstract The aim of this thesis is to present an informatic system named VoiceField for on-line inspection of human voice parameters based on voice field measurement that is an objective method that enables the assessment of basic physical voice characteristics. The application helps to gather information about voice range, voice pitch (pitch is the perceived fundamental frequency of a sound) and its limits. The main questions that are handled in this thesis is on-line processing and determine the periodicity of the voice. Fundamental frequency is computed by autocorrelation function. Very important is do this enough fast and this is why FFT and iFFT is used. An important part of digital signal processing is find a stable part of voice signal by integration of power signal. The database of patiens is implemented. With the database the phonologist will be able to assess the time evaluation of patients voice limits (for instance after surgery). The implementation is in C# .NET Framework and DirectSound, GDI++ and PostgreSQL is used. Aplication is designed to run under PC with Windows XP, soundcard and microfone. Keywords: voice field, voice range, FFT, DFT, integration, autocorrelation function, online processing, fundamental voice frequency
iv
vloˇzit origin´ aln´ı zad´ an´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı´ı !!!!!
v
Obsah Seznam obr´ azk˚ u
x
Seznam tabulek
xii
´ 1 Uvod
1
1.1
C´ıl pr´ ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Pouˇzit´e technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
´ 2 Uvod do problematiky
4
2.1
Hlasov´e u ´stroj´ı ˇclovˇeka a jeho model . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.2
Hlasov´e u ´stroj´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.1
Hrtan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.2
Hlasivky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2.3
Hlasov´ y trakt a v´ alcov´ y model . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.4
Zjednoduˇsen´ y fyziologick´ y model produkce ˇreˇci . . . . . . . . . . . . . . .
7
Fyzik´ aln´ı vlastnosti hl´ asek a fon´em˚ u ˇcesk´eho jazyka . . . . . . . . . . . . . . . .
8
2.3.1
Hl´ asky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3.2
Samohl´ asky (vok´ aly) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3.3
Souhl´ asky (konsonanty) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
2.4
Pouˇzit´ı modelu a navrˇzen´a metoda odhadu parametr˚ u . . . . . . . . . . . . . . . 10
2.5
Postup vyˇsetˇren´ı hlasov´eho pole . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Pouˇ zit´ e technologie 3.1
12
Pracovn´ı r´ amec .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1.1
Spoleˇcn´ y jazyk CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.2
.NET Unified Class Library
3.1.3
WinForms a GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.4
Jazyk C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.5
ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
. . . . . . . . . . . . . . . . . . . . . . . . . 14
vi
3.2
3.3
Projekt Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2.1
Technologie podporovan´e v Mono . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2
System.Drawing v Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.1
Z´ akladn´ı parametry PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . 19
4 Anal´ yza, n´ avrh a modelov´ an´ı aplikace
20
4.1
Metodika n´ avrhu aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2
Postup n´ avrhu aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3
Specifikace poˇzadavk˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4
4.3.1
Poˇzadavky na hlasov´e pole . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.2
Poˇzadavky na datab´ azi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.3.3
Poˇzadavky na pouˇzit´e technologie . . . . . . . . . . . . . . . . . . . . . . 22
Pˇr´ıpady uˇzit´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.4.1
Hlavn´ı sc´en´ aˇr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4.2
Alternativn´ı sc´en´ aˇre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.5
Diagramy pˇr´ıpad˚ u uˇzit´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6
Diagram tˇr´ıd a seskupen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.7
4.6.1
Seskupen´ı DSProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.6.2
Seskupen´ı VoiceField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.6.3
Seskupen´ı Karot´eka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.6.4
Seskupen´ı Npgsql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.6.5
Seskupen´ı on-line modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.6.6
Diagram aktivit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
N´ avrh datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.7.1
Pˇrehled tabulek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.7.2
E-R model datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.7.3
Tabulka Pacient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7.4
Tabulka Diagnozy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7.5
Tabulka Pojistovna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7.6
Tabulka Lekar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5 Algoritmy pro v´ ypoˇ cet hlasov´ eho pole
33
5.1
Blokov´e sch´ema syst´emu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2
Vzorkov´ an´ı sign´ alu a parametry zvukov´e karty . . . . . . . . . . . . . . . . . . . 34 5.2.1
Vzorkov´ an´ı sign´ alu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2.2
Kvantov´ an´ı sign´ alu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2.3
Zvukov´ a karta a jej´ı nastaven´ı . . . . . . . . . . . . . . . . . . . . . . . . . 36 vii
5.3
Pˇredzpracov´ an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.4
DFT a FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.5
5.6
5.7
5.8
5.4.1
Diskr´etn´ı Fourierova transformace (DFT) . . . . . . . . . . . . . . . . . . 39
5.4.2
Definiˇcn´ı vztahy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4.3
Rychl´ a Fourierova transformace (FFT) . . . . . . . . . . . . . . . . . . . . 40
Detekce z´akladn´ı periody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.5.1
Pˇredzpracov´ an´ı, centr´ alni a amplitudov´e omezen´ı . . . . . . . . . . . . . . 41
5.5.2
Vlastnosti autokorelaˇcn´ı funkce . . . . . . . . . . . . . . . . . . . . . . . . 42
5.5.3
V´ ypoˇcet autokorelaˇcn´ı funkce . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.5.4
Detekce z´akladn´ı periody ve frekvenˇcn´ı oblasti . . . . . . . . . . . . . . . 43
5.5.5
Postprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
V´ ypoˇcet energie ˇreˇcov´eho sign´ alu . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.6.1
A v´ ahov´ an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.6.2
V´ ypoˇcet energie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.6.3
Integrace a klouzav´ y pr˚ umˇer . . . . . . . . . . . . . . . . . . . . . . . . . 46
Statistick´e charakteristiky hlasov´eho pole . . . . . . . . . . . . . . . . . . . . . . 48 5.7.1
Rozsah hlasov´eho pole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.7.2
Histogramy ˇcetnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Alternativn´ı algoritmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.8.1
Cepstr´ aln´ı anal´ yza pro urˇcen´ı z´akladn´ıho t´ onu . . . . . . . . . . . . . . . 50
5.8.2
Vyuˇzit´ı chyby line´ arn´ı predikce . . . . . . . . . . . . . . . . . . . . . . . . 50
5.8.3
Detekce stabiln´ıch u ´sek˚ u fonace . . . . . . . . . . . . . . . . . . . . . . . . 51
6 Implementace a testov´ an´ı aplikace
52
6.1
Referenˇcn´ı program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2
N´ aroˇcn´e ˇc´asti implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3
Knihovna DSProcessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4
On-line modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.5
Problematika re´ aln´eho ˇcasu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.6
Kartot´eka pacient˚ u a datab´ aze vyˇsetˇren´ı . . . . . . . . . . . . . . . . . . . . . . . 55
6.7
Testov´an´ı algoritm˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.8
Testov´an´ı aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.9
Pouˇzit´e typy soubor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.10 Instalace aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 7 Z´ avˇ er
59
Literatura
62
viii
A Popis audio souboru WAV
I
B Instalace PostgreSQL serveru
II
C Pr´ ace s PostgreSQL v .NET
III
C.1 Datov´ y adapt´er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III C.2 V´ ypis ze zdrojov´ ych k´ od˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . III D .NET Framewor Class Model
VI
E Uk´ azky z aplikace
VII
ix
Seznam obr´ azk˚ u 2.1
Hlasov´e u ´stroj´ı ˇclovˇeka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Hlasivky - vlevo je ˇstˇerbina otevˇren´ a, na prav´em obr´ azku pˇri tvorbˇe hlasu . . . .
6
3
2.3
Zjednoduˇsen´ y v´ alcov´ y model hlasov´eho traktu
. . . . . . . . . . . . . . . . . . .
6
2.4
Fyziologick´ y model tvorby ˇreˇci . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.5
Pr˚ ubˇeh hl´ asek ’a’ a ’s’ v ˇcasov´e oblasti . . . . . . . . . . . . . . . . . . . . . . . .
8
2.6
Spektrum hl´ asek ’a’ a ’s’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.7
Pr˚ ubˇeh znˇel´e samohl´asky a odpov´ıdaj´ıc´ı ACF . . . . . . . . . . . . . . . . . . . . 10
3.1
.NET Framework - sch´ema modelu . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2
Jmenn´e prostory .NET Frameworku . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3
Schematick´ y model ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4
System.Drawing v Mono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1
Diagram pˇr´ıpad˚ u uˇzit´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2
Diagram seskupen´ı tˇr´ıd
4.3
Diagram aktivit - naplnˇen´ı bufferu zv. karty . . . . . . . . . . . . . . . . . . . . . 28
4.4
E-R diagram datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1
Blokov´e sch´ema syst´emu zpracov´an´ı ˇreˇci . . . . . . . . . . . . . . . . . . . . . . . 34
5.2
Vzorkov´ an´ı spojit´eho sign´ alu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3
Kvantov´ an´ı navzorkovan´eho sign´ alu . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4
Princip segmentace a v´ ahov´ an´ı oknem . . . . . . . . . . . . . . . . . . . . . . . . 38
5.5
Pr˚ ubˇeh a frekvenˇcn´ı charakteristika Hannova okna . . . . . . . . . . . . . . . . . 38
5.6
Amplitudov´e a centr´aln´ı omezen´ı sign´ alu pˇred v´ ypoˇctem ACF . . . . . . . . . . . 41
5.7
V´ ypoˇcet F0 pomoc´ı v´ ypoˇctu autokorelaˇcn´ı funkce ve spektr´ aln´ı oblasti . . . . . . 43
5.8
Urˇcen´ı F0 z pr˚ ubˇehu autokorelaˇcn´ı funkce . . . . . . . . . . . . . . . . . . . . . . 43
5.9
A v´ ahov´ an´ı (modr´ a), B (ˇzlut´ a), C (ˇcerven´a), D v´ ahov´ an´ı (ˇcern´a) . . . . . . . . . 45
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.10 Hled´ an´ı lok´ aln´ıch maxim filtrace pr˚ ubˇehu energie . . . . . . . . . . . . . . . . . . 47 5.11 Hled´ an´ı lok´ aln´ıch maxim filtrace pr˚ ubˇehu energie - hl. pole . . . . . . . . . . . . 47 5.12 Z´ akladn´ı statistiky hlasov´eho pole . . . . . . . . . . . . . . . . . . . . . . . . . . 48 x
5.13 Histogramy ˇcetnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1
Obr´ azek z´aznamn´ıku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2
Formul´ aˇr z kartot´eky pacient˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3
Pˇrihlaˇsovac´ı formul´ aˇr do datab´ aze . . . . . . . . . . . . . . . . . . . . . . . . . . 56
D.1 .NET Framework - sch´ema modelu . . . . . . . . . . . . . . . . . . . . . . . . . . VI E.1 Aplikace hlasov´eho pole - vyˇsetˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . VII E.2 Aplikace hlasov´eho pole - anal´ yza statistik . . . . . . . . . . . . . . . . . . . . . . VIII E.3 Kartot´eka pacient˚ u - tisk vyˇsetˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . VIII
xi
Seznam tabulek 3.1
Z´ akladn´ı parametry PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.1
Nastaviteln´e parametry zvukov´e karty . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2
Zvolen´e parametry zvukov´e karty . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
A.1 Popis hlaviˇcky souboru WAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xii
I
Kapitola 1
´ Uvod Bˇehem rozhovoru s druh´ ym ˇclovˇekem automaticky vyhodnocujeme mnoho parametr˚ u ˇreˇci, kter´e n´ am pom´ahaj´ı se v situaci hovoru orientovat a spolu se slovn´ım obsahem vytv´ aˇrej´ı n´ aˇs u ´sudek o tom, ˇceho se ˇreˇc t´ yk´ a. Mezi d˚ uleˇzit´e akustick´e parametry, kter´e tvoˇr´ı obsah ˇreˇci jistˇe patˇr´ı v´ yˇska a intenzita hlasu. Jinou v´ yˇsku hlasu m´ a ˇclovˇek rozzlobenn´ y, jinou vesel´ y, ˇst’astn´ y, smutn´ y apod. V´ yˇska hlasu je tak´e charakteristick´ a pro vˇek a pohlav´ı mluvˇc´ıho. Schopnost ovl´ adat v´ yˇsku a intenzitu hlasu ve vhodn´em rozsahu patˇr´ı do naˇseho z´akladn´ıho vyjadˇrovac´ıho reperto´ aru a to podobnˇe jako napˇr´ıklad mimika. Nen´ı proto divu, ˇze omezen´ı v t´eto dom´enˇe jsou vpodstatˇe omezen´ım naˇs´ı moˇznosti komunikace a neseme je velmi tˇeˇzce. Vznik´a tak pˇrirozenˇe snaha post´ıˇzen´ı hlasu odstranit vhodnou l´eˇcbou. Pˇred l´eˇcbou je vˇsak nutn´e situaci analyzovat. A pr´ avˇe zde je u ´loha objektivn´ıch metod pro charakteristiku hlasu. Pr´ ace se zab´ yv´ a tvorbou aplikace pro vyˇsetˇren´ı hlasov´eho pole pacienta. Ta hodnot´ı z´akladn´ı t´ onov´ y a intenzitn´ı rozsah hlasu. To se dˇeje od tich´e aˇz po hlasitou fonaci na maxim´ aln´ım t´ onov´em rozsahu, kter´eho je pacient schopen dos´ ahnout. Vyˇsetˇren´ı se prov´ ad´ı pˇredepsan´ ym zp˚ usobem a s definovanou vzd´ alenost´ı mikrofonu od u ´st. Hlas je po sejmut´ı z mikrofonu zpracov´ av´ an metodou kr´ atkodob´e anal´ yzy a v kaˇzd´em mikrosegmentu (trvaj´ıc´ım 50 ms) je urˇcen t´on a intenzita hlasu. Vyhodnocen´e parametry hlasu jsou vyn´ aˇseny do oblasti hlasov´eho pole. Na osu x je vyn´ aˇsena frekvence hlasu, na osu y pak intenzita. Tato vizualizace dat pˇrin´ aˇs´ı dalˇs´ı kvalitu a je d´ıky n´ı moˇzn´e pozorovat charakteristiky, kter´e by nebyly zjevn´e pouze z v´ yˇctu t´ on˚ u a pˇr´ısluˇsn´ ych intenzit. Datab´ aze pacient˚ u a diagn´ oz umoˇzn ˇuje uloˇzit nejen z´akladn´ı informace o pacientovi a jeho zdravotn´ım stavu, ale tak´e sledovat dlouhodob´ y v´ yvoj stavu a hodnotit tak napˇr´ıklad u ´spˇeˇsnost operace ˇci l´eˇcby. Pˇrin´ aˇs´ı tedy opˇet dalˇs´ı informaci, kter´ a by z jednoho vyˇsetˇren´ı nemohla b´ yt patrn´ a. Koneˇcnˇe m˚ uˇze tento informaˇcn´ı syst´em slouˇzit i hlasov´ ym profesion´ al˚ um, kdy se postup vyˇsetˇren´ı prakticky nemˇen´ı a v´ ysledkem vyˇsetˇren´ı je informace o hlasov´ ych schopnostech. 1
´ KAPITOLA 1. UVOD
1.1
2
C´ıl pr´ ace
C´ılem pr´ ace je navrhnout a vytvoˇrit software pro on-line (tedy bezprostˇredn´ı) anal´ yzu hlasov´eho pole. Jde o software, kter´ y na z´ akladˇe anal´ yzy hlasov´eho sign´ alu z mikrofonu vykresluje do dvojrozmˇern´eho pole (mˇr´ıˇze) intenzitu a t´ on hlasu. Na osu x je vyn´ aˇsena v´ yˇska t´onu ve shodˇe s t´onovou stupnic´ı, tedy pˇr´ımo pˇr´ısluˇsn´ y t´ on, na osu y je pak vyn´ aˇsena intenzitu t´ onu v decibelech. Takto vznikl´ y n´ ahled umoˇzn ˇuje pˇrehled o hlasov´ ych schopnostech pacienta a naz´ yv´ a se hlasov´ ym polem. Souˇc´ast´ı programu bude datab´ aze pacient˚ u a vyˇsetˇren´ı. Ta je d˚ uleˇzit´a pro sledov´ an´ı dlouhodob´eho zdravotn´ıho stavu pacieta. Souˇc´ast´ı datab´ aze bude moˇznost tisknout jednotliv´e diagn´ ozy. Software mus´ı b´ yt navrˇzen tak, aby byl snadno dostupn´ y kaˇzd´e foniatrick´e ordinaci vybaven´e PC s operaˇcn´ım syst´emem Windows XP (s .NET Frameworkem 2.0 a vyˇsˇs´ım), zvukovou kartou a kvalitn´ım mikrofonem. MS Windows je zdaleka nejˇcastˇejˇs´ım operaˇcn´ım syst´emem v l´ekaˇrsk´ ych pracovn´ ach. Byl proto zvolen jako z´ akladn´ı syst´em pro vytv´ aˇrenou aplikaci. Ta je vˇsak d´ıky pouˇzit´e technologii .NET (alespoˇ n teoreticky) na operaˇcn´ım syst´emu nez´avisl´ a. V´ıce je k t´eto problematice ˇreˇceno v kapitole 3.2, kde je diskutov´ an zaj´ımav´ y projekt Mono, kter´ y slibuje portaci .NET na dalˇs´ı operaˇcn´ı syst´emy Dalˇs´ım d˚ uleˇzit´ ym poˇzadavkem je navrhnout software s ohledem na co nejniˇzˇs´ı poˇrizovac´ı cenu. Tomu byl podm´ınˇen v´ ybˇer pouˇzit´ ych technolog´ı. Zde byl kladen d˚ uraz na co nejniˇzˇs´ı cenu softwaru, kter´ y by se pro bˇeh programu musel dokupovat. Z toho d˚ uvodu byl volen datab´ azov´ y server PostgreSQL a nikoli MSSQL. Jedin´ ym komerˇcn´ım softwarem, kter´ y je k bˇehu programu vyˇzadov´ an tak z˚ ust´ av´ a MS Windows. Ostatn´ı softwarov´e prostˇredky jsou bud’ bˇeˇznou ˇci volitelnou souˇc´ast´ı MS Windows nebo open source.
1.2
Pouˇ zit´ e technologie
N´ asleduje seznam technolgi´ı, kter´e jsou pro bˇeh programu z´ avazn´e • operaˇcn´ı syst´em MS Windows XP ˇci vyˇsˇs´ı • .NET Framework 2.0 ˇci vyˇsˇs´ı [23] • Postgre SQL [22] (open source SQL server) • DirectX jako jedna z moˇznost´ı z´aznamu zvuku • GDI+ pro vykreslov´ an´ı hlasov´eho pole (souˇc´ast .NET Frameworku)
´ KAPITOLA 1. UVOD
3
Pˇred spuˇstˇen´ım programu je tˇreba zajistit, aby byly tyto technologie na lok´ aln´ım serveru spr´ avnˇe nainstalovan´e a aby sluˇzby, kter´e maj´ı bˇeˇzet jako deamon (SQL server) tak´e jako deamon bˇeˇzely. Bez toho nem˚ uˇze aplikace fungovat. Seznam pouˇzit´ ych v´ yvojov´ ych prostˇred´ı, n´ astroj˚ u a knihoven: • MS Visual Studio 2008 Express Edition [23] - v´ yvojov´e prostˇred´ı pro psan´ı aplikac´ı v .NET • DBDesigner4 - open source n´astroj pro datov´e modelov´an´ı • Violet UML editor [25] - open source n´ astroj pro UML modelov´ an´ı a n´ avrh aplikace • AForge.NET [21] - open source knihovna numerick´ ych a DSP algoritm˚ u • iTextSharp [24] - open source knihovna pro generov´ an´ı PDF tiskov´ ych dokument˚ u
Kapitola 2
´ Uvod do problematiky V t´eto kapitole jsou shrnuty z´ akladn´ı informace z fonetiky a foniatrie, kter´e jsou v´ıce ˇci m´enˇe nezbytn´e pro navrˇzen´ı spr´ avn´eho softwarov´eho ˇreˇsen´ı. Pro podrobnˇejˇs´ı vysvˇetlen´ı zde nast´ınˇen´ ych informac´ı doporuˇcuji ke studiu prim´ arn´ı prameny, z kter´ ych bylo pˇri tvorbˇe kapitoly ˇcerp´ano, tj. pˇredevˇs´ım [1], [8], [4], [6], [9], l´ekaˇrsk´e a anatomick´e informace byly ˇcerp´any z [11], [12].
2.1
Hlasov´ eu ´ stroj´ı ˇ clovˇ eka a jeho model
Pr´ ace se zab´ yv´ a n´ avrhem softwaru k vyˇsetˇren´ı hlasivek. Z toho d˚ uvodu je v t´eto kapitole ´ celem modelu je porozumˇen´ı fyzik´ rozeps´an z´ akladn´ı model tvorby hlasu. Uˇ aln´ım proces˚ um tvorby hlasu, na z´ akladˇe nichˇz budeme moci urˇcit nejen vhodn´ y postup anal´ yzy poˇzadovan´ ych akustick´ ych parametr˚ u (intenzity a z´ akladn´ıho hlasivkov´eho t´ onu), ale z´ısk´ ame tak´e dobrou pˇredstavu o vyˇsetˇrovan´em apar´ atu. Model jasnˇe vymezuje roli hlasivek pˇri tvorbˇe hlasu: hlas je tvoˇren vibrac´ı hlasivek, kter´ ymi je produkov´ an bud’ sign´ al se z´akladn´ı frekvenc´ı F 0 spolu s vyˇsˇs´ımi harmonick´ ymi, nebo nˇekter´ ym z nˇekolika druh˚ u ˇsumu. Frekvence F 0 reprezentuje z´akladn´ı t´ on hlasu (v´ yˇsku hlasu). Takto vznikl´ y sign´ al proch´ az´ı artikulaˇcn´ım traktem ˇclovˇeka, kde je v z´avislosti na tvaru traktu modifikov´ an. Model d´ ale zd˚ uvodˇ nuje korektnost metody kr´ atkodob´e anal´ yzy, kter´ a m´a sv´e fyzik´ aln´ı opodstatnˇen´ı v ˇcinnosti hlasov´eho traktu a hlasivek.
4
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
2.2
5
Hlasov´ eu ´ stroj´ı
Zdrojem ˇreˇcov´ ych kmit˚ u jsou lidsk´e ˇreˇcov´e org´any. Ty se skl´ adaj´ı z plic (kter´e jsou zdrojem hlasov´e energie), hlasivek, dutiny hrdeln´ı, u ´stn´ı a nosn´ı, mˇekk´eho a tvrd´eho patra, zub˚ u a jazyka viz obr. 2.11 .
Obr´ azek 2.1: Hlasov´e u ´stroj´ı ˇclovˇeka
2.2.1
Hrtan
Hrtan je chrupavkami vystuˇzen´a trubice, kterou proch´ az´ı vzduch do plic a je prvn´ı ˇc´ast´ı doln´ıch cest d´ ychac´ıch. Hrtan navazuje na hltan, spoleˇcn´ y u ´sek tr´ avic´ı a d´ ychac´ı soustavy, a pˇrech´az´ı v pr˚ uduˇsnici. Cel´ y hrtan je pohyblivˇe zavˇeˇsen pod ˇcelist´ı pomoc´ı jazylky, sval˚ u a vaz˚ u. Stˇena hrtanu je zpevnˇena chrupavkami, nejvˇetˇs´ı vystupuje dopˇredu a tvoˇr´ı podklad ohryzku. U ˇclovˇeka jsou mezi chrupavkami napjat´e dva hlasivkov´e vazy, kter´e tovoˇr´ı hlasivky. V pˇr´ıpadˇe chvˇej´ıc´ıch se hlasivek je v´ yˇska t´onu (frekvence chvˇen´ı) nastavov´ ana pˇredevˇs´ım napˇet´ım sval˚ u, kter´e hlasivky ovl´ adaj´ı.
2.2.2
Hlasivky
Hlasivky jsou uloˇzeny v hrtanu, tvoˇr´ı je p´ arov´ y hlasivkovit´ y sval, hlasivkov´ y vaz a slizniˇcn´ı hlasivkov´ a ˇrasa, napjat´e mezi koncovou a ˇst’´ıtnou chrupavkou. Pˇri pohledu z u ´stn´ı dutiny jsou 1
Obr´ azek byl pˇrevzat z Wikipedie.
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
6
hlasivky vidˇet hned za hrtanovou pˇr´ıklopkou, kter´ a pˇri polyk´ an´ı chr´ an´ı vstup do hrtanu. Hlasivkov´e svaly a vazy se nap´ınaj´ı mezi hlasivkov´ ym v´ ybˇeˇzkem koncovit´e chrupavky a zadn´ım okrajem ˇst´ıtn´e chrupavky. Hlasivkov´e ˇrasy jsou velmi pruˇzn´e. Zjedoduˇsen´ y n´ akresek je na obr. 2.21 , kde vid´ıme schematicky nakreslen´e otevˇren´e hlasivky a hlasivky pˇri tvorbˇe hlasu.
Obr´ azek 2.2: Hlasivky - vlevo je ˇstˇerbina otevˇren´ a, na prav´em obr´ azku pˇri tvorbˇe hlasu
2.2.3
Hlasov´ y trakt a v´ alcov´ y model
Obr´ azek 2.3: Zjednoduˇsen´ y v´ alcov´ y model hlasov´eho traktu
3
Hlasov´ y trakt je dutina, kterou se dost´ av´ a vzduch ven z plic pˇri vydechov´ an´ı a ˇreˇci. Akustick´ y model hlasov´eho traktu vych´ az´ı z modelu dutinov´eho rezon´atoru, jehoˇz pˇrenosov´ a funkce se
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
7
vˇsak v naˇsem pˇr´ıpadˇe bˇehem promluvy mˇen´ı. Se zmˇenou parametr˚ u dutin hlasov´eho traktu se mˇen´ı pˇr´ıˇcn´ y pr˚ uˇrez v jednotliv´ ych ˇrezech. Bˇehem ˇreˇci se vyskytuj´ı fixovan´e momenty tvorby hl´ asek, jejichˇz d´elka je kolem 10 aˇz 50 ms. Bˇehem tˇechto fixovan´ ych moment˚ u se charakteristika hlasov´eho traktu t´emˇeˇr nemˇen´ı, koeficietny pˇrenosu z˚ ust´ avaj´ı nemˇenn´e. Z uvaˇzovan´ ych fixn´ıch tvar˚ u m˚ uˇzeme vypoˇc´ıtat pˇrenosovou funkci dutinov´eho rezon´atoru. Tak dostaneme koeficienty pˇrenosu pro r˚ uzn´e hl´ asky. Pokud se podaˇr´ı z´ıskat koeficienty pro vˇsechny hl´ asky, dost´ av´ ame soubor d´ılˇc´ıch model˚ u, kter´e pˇredstavuj´ı celkov´ y model vytv´ aˇren´ı ˇreˇci. Rezonanˇcn´ı kmitoˇcty rezon´atoru se naz´ yvaj´ı formanty. Uplatˇ nuje se zde pˇredevˇs´ım dutina hrdeln´ı (F 1) a dutina u ´stn´ı (F 2). Vliv dutiny nosn´ı na tvorbu ˇreˇci je podstatnˇe menˇs´ı neˇz vliv dutiny u ´stn´ı. V praxi se proto ˇcasto model zjednoduˇsuje a dutina nosn´ı se bud’ vypust´ı bez n´ ahrady, nebo je jeji absence korigov´ ana pˇretransformov´ an´ım do modelu dutiny u ´stn´ı. Zn´ azornˇen´ı v´ alcov´eho modelu vid´ıme na obr. 2.31 . I kdyˇz vnitˇrn´ı prostor hlasov´eho traktu nen´ı soumˇern´ y vzhledem k pod´eln´e ose, uvaˇzujeme bez velk´e ztr´aty pˇresnosti dutinov´ y model ve tvaru soustˇredˇen´ ych v´ alc˚ u.
2.2.4
Zjednoduˇ sen´ y fyziologick´ y model produkce ˇ reˇ ci
Dosud uveden´e vˇedomosti o tvorbˇe ˇreˇci shrneme do celkov´eho fyziologick´eho modelu tvorby ˇreˇci [1], kter´ y je zn´ azornˇen na obr. 2.42 .
Obr´ azek 2.4: Fyziologick´ y model tvorby ˇreˇci
Znˇel´e ˇc´asti ˇreˇci jsou tvoˇreny pouze pˇri periodick´em kmit´an´ı hlasivek. Takto vznikl´ y sign´ al 2
Obr´ azek byl pˇrekreslen podle [1].
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
8
obsahuj´ıc´ı periodu z´ akladn´ıho t´ onu proch´ az´ı fixovan´ ym hlasov´ ym traktem, kde je vytvoˇrena pˇr´ısluˇsn´a znˇel´a hl´ aska. Na sv´em vstupu je hlasov´ y trakt buzen tlakov´ ymi impulsy vzduchu, kter´e vytv´ aˇr´ı hlasivky sv´ ym kmit´ an´ım s periodou v ˇra´dech milisekund. Hrtan a hlasivky vytv´ aˇrej´ı periodick´ y sign´ al pro znˇel´e a ˇsumov´ y sign´ al pro neznˇel´e hl´ asky. Bud´ıc´ı sign´ al m´a proto jiˇz pˇri vstupu do hlasov´eho traktu vˇzdy jin´e spektr´aln´ı charakteristiky.
2.3
Fyzik´ aln´ı vlastnosti hl´ asek a fon´ em˚ uˇ cesk´ eho jazyka
2.3.1
Hl´ asky
Hl´ aska je z´akladn´ı jednotka (segment) zvukov´e str´anky ˇreˇci, kterou se zab´ yv´ a fonetika a fonologie. Hl´ asky se vyznaˇcuj´ı r˚ uzn´ ym stupnˇem otevˇrenosti (apertury). Samohl´ asky jsou na t´eto ˇsk´ale nejv´ıce otevˇren´e, zat´ımco souhl´asky jsou zavˇrenˇejˇs´ı a pˇri jejich vytv´ aˇren´ı se vytv´ aˇr´ı pˇrek´ aˇzka (striktura) v proudu vzduchu. Pˇrek´ aˇzka je r˚ uzn´eho stupnˇe: od pouh´eho pˇribl´ıˇzen´ı (aproximace) artikulaˇcn´ıch org´ an˚ u, pˇres u ´ˇzinu (konstrikce) aˇz po u ´pln´ y z´avˇer (okluze), tedy kr´ atk´e pˇreruˇsen´ı proudˇen´ı vzduchu.
2.3.2
Samohl´ asky (vok´ aly)
Samohl´ asky jsou hl´ asky, jejichˇz charakteristick´ ym rysem je pˇr´ıtomnost F 03 . Na rozd´ıl od souhl´ asek nevznik´ a pˇri jejich artikulaci ˇsum a jsou tvoˇreny v ust´ alen´e poloze hlasov´eho traktu. Detail hlasky "a"
Detail hlasky "s" 0.04 amplituda
amplituda
0.2 0 −0.2
0.02 0 −0.02 −0.04 −0.06
−0.4 0.01
0.02
0.03 0.04 cas [s]
0.05
0.06
0.01
0.02
0.03 0.04 cas [s]
0.05
0.06
Obr´ azek 2.5: Pr˚ ubˇeh hl´ asek ’a’ a ’s’ v ˇcasov´e oblasti
Spisovn´ a ˇceˇstina m´ a 10 samohl´askov´ ych fon´em˚ u (v´ yznamotvorn´e hl´ asky): 5 kr´ atk´ ych a 5 dlouh´ ych. Vyznaˇcuj´ı se t´emˇeˇr periodick´ ym pr˚ ubˇehem sign´alu (viz ˇcasov´ y pr˚ ubˇeh hl´ asky 3
Pˇr´ıtomnost F 0 naz´ yv´ ame znˇelost, hl´ asky pak oznaˇcujeme za znˇel´e.
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
9
’a’), pˇriˇcemˇz periodick´ a bud´ıc´ı funkce je tak´e dobˇre vidˇet ve spektru hl´ asky (viz obr. 2.5). Pro samohl´asky je charakteristick´ a rovnˇeˇz relativnˇe vysok´a amplituda sign´ alu4 . Z´akladn´ı frekvence F 0 je u vˇsech samohl´asek stejn´a (z´avisl´ a na individu´ aln´ıch hlasov´ ych charakterisik´ ach kaˇzd´eho ˇclovˇeka) a je vytv´ aˇrena kmit´an´ım hlasivek. Jednotliv´e samohl´asky se liˇs´ı barvou t´ on˚ u, kter´ a je d´ ana vlivem spolupod´ılej´ıc´ıch se vedlejˇs´ıch formant˚ u, kter´e vznikaj´ı rezonanc´ı v dutin´ ach hlasov´eho traktu. Rezonance je ovlivnˇena zmˇenami tvaru tˇechto dutin bˇehem ˇreˇci urˇcenou polohy mluvidel. Podle stoupaj´ıc´ı frekvence se formanty oznaˇcuj´ı F 1, F 2 a F 3, pˇriˇcemˇz vz´ajemn´ y pomˇer F 1 a F 2 maj´ı pro znˇen´ı hl´ asky z´asadn´ı v´ yznam. Z naˇseho hlediska je existence formant˚ u d˚ uleˇzit´a pˇri n´ avrhu algoritmu pro detekci F 0, nebot’ formantov´ a struktura ˇreˇci m˚ uˇzeme pˇri detekci F 0 ˇcinit pot´ıˇze a jedn´ım z moˇzn´ ych ˇreˇsen´ı je tzv. klipov´ an´ı. Na okraj uved’me, ˇze na detekci pomˇer˚ u formant˚ u F 1 a F 2 je zaloˇzeno rozpozn´av´ an´ı hl´ asek pˇri automatick´em zpracov´an´ı ˇreˇci.
2.3.3
Souhl´ asky (konsonanty)
Souhl´ asky jsou podstatnˇe kratˇs´ı a jejich d´elka silnˇe z´avis´ı na kontextu (samostatnˇe vysloven´e ’r’ m´ a napˇr. okolo 30 ms, zat´ımco ’r’ ve slovˇe ’srnec’ i 100 ms a v´ıce podle mluvˇc´ıho). Ve srovn´ an´ı s vok´aly se jako v´ yznamn´ y rys souhl´ asek jev´ı pˇr´ıtomnost charakteristick´eho ˇsumu, kter´ y vznik´ a specifick´ ym postaven´ım ˇci pohybem hlasivek a hlasov´eho traktu. Vznik ˇsumu souvis´ı s tvoˇren´ım ˇ pˇrek´ aˇzky v mluvidlech (viz v´ yˇse), kter´a zp˚ usobuje turbulence v proudu vzduchu. Sum m˚ uˇzeme pozorovat jednak v ˇcasov´e oblasti (viz obr. 2.5), jednak ve spektr´ aln´ı oblasti (viz obr. 2.6). Zat´ımco v ˇcasov´e oblasti je u samohl´ asky ’a’ jasnˇe pozorovateln´ y t´emˇeˇr periodick´ y sign´ al, u hl´ asky ’s’ tak tomu nen´ı a pr˚ ubˇeh hl´ asky je bl´ıˇze pr˚ ubˇehu ˇsumu. Spektrum hlasky "s"
8
0.4
6
0.3
amplituda
amplituda
Spektrum hlasky "a"
4 2
0.2 0.1
2000
4000 6000 frekvence [Hz]
8000
2000
4000 6000 frekvence [Hz]
Obr´ azek 2.6: Spektrum hl´ asek ’a’ a ’s’ 4
To je opˇet pozorovateln´e na ˇcasov´em pr˚ ubˇehu hl´ asky.
8000
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
10
Zat´ımco samohl´asky jsou generov´ any v ust´ alen´e poloze hlasov´eho traktu, souhl´ asky odpov´ıdaj´ı pˇrechodov´ ym stav˚ um hlasov´eho traktu a charakteristick´ y pr˚ ubˇeh z´ısk´ avaj´ı postaven´ım pˇrek´ aˇzky do proudu prot´ekaj´ıc´ıho vzduchu. Vzhledem k tˇemto a dalˇs´ım okolnostem je i identifikace souhl´ asek podstatnˇe tˇeˇzˇs´ı. Existuj´ı tzv. znˇel´e souhl´ asky, u kter´ ych se ve spektru tak´e vyskytuje z´ akladn´ı t´ on. Ten ovˇsem nen´ı pˇr´ıliˇs v´ yrazn´ y ve srovn´ an´ı se ˇsumovou ˇc´asti spektra. Urˇcit´e n´aznaky formant˚ u jsou u souhl´ asek obecnˇe na vyˇsˇs´ıch kmitoˇctech, neˇz je tomu u samohl´ asek. Nˇekter´e znˇel´e souhl´ asky maj´ı v´ yrazn´e formanty (napˇr. souhl´ aska ’j’) a jsou vytv´ aˇreny podobnˇe jako samohl´ asky.
2.4
Pouˇ zit´ı modelu a navrˇ zen´ a metoda odhadu parametr˚ u
Obr´ azek 2.7: Pr˚ ubˇeh znˇel´e samohl´asky a odpov´ıdaj´ıc´ı ACF
Z v´ yˇse uveden´eho modelu tvorby ˇreˇci vypl´ yv´ a, ˇze F 0 je moˇzn´e bezpeˇcnˇe detekovat pouze u hl´ asek5 a to z d˚ uvodu jejich znˇelosti, kdy kmitaj´ı hlasivky a hlasov´ y trakt je fixov´ an. Z 5
Jak jiˇz bylo ˇreˇceno, existuj´ı i znˇel´e souhl´ asky, v jejich spektru je vˇsak siln´ a pˇr´ıtomnost ˇsumu.
´ KAPITOLA 2. UVOD DO PROBLEMATIKY
11
fixace hlasov´eho traktu tak´e vych´ az´ı opr´ avnˇenost kr´atkodob´e anal´ yzy, kdy je sign´ al rozdˇelen na mikrosegmenty po 50 ms v nichˇz jsou poˇc´ıt´ any poˇzadovan´e parametry. Na z´akladˇe uveden´ ych fakt˚ u m˚ uˇzeme poˇc´ıtat s alespoˇ n ˇc´asteˇcnou periodicitou ˇreˇcov´eho sign´ alu6 .
Pro odhadov´ an´ı F 0 bude pouˇzita autokorelaˇcn´ı metoda, kter´ a je ˇcasto uˇz´ıvan´ ym
n´ astrojem pˇri urˇcov´an´ı periodicity sign´ al˚ u. Pˇredstavu v´ yskytu F 0 v ˇcasov´em pr˚ ubˇehu i v maximu autokorelaˇcn´ı funkce dokumentuje obr. 2.7. Ve znˇel´ ych ˇc´astech ˇreˇci by mˇela b´ yt hodnota F 0 odhadnuta spr´ avnˇe, v neznˇel´ ych ˇc´astech ˇreˇci bude F 0 chybnˇe urˇcena jako pˇr´ıliˇs vysok´a, nezapadaj´ıc´ı do uvaˇzovan´ ych mez´ı7 a proto nezat´ıˇz´ı v´ ysledek mˇeˇren´ı chybou. V´ ypoˇcet autokorelaˇcn´ı funkce a v´ ykonu bude z d˚ uvodu efektivnosti algoritmu poˇc´ıt´ an pomoc´ı FFT a iFFT, kdy bude sloˇzitost v´ ypoˇctu n.lon(n). V kaˇzd´e znˇel´e hl´ asce jsou v´ıce ˇci m´enˇe patrn´e formanty. Ty mohou negativnˇe ovlivnit anal´ yzu chybn´ ym v´ ysledkem a pro zpˇresnˇen´ı mˇeˇren´ı se nˇekdy nejdˇr´ıve pokouˇs´ıme tyto formanty odstranit. To v t´eto pr´ aci uvaˇzovat nebudeme, nebot’ i bez toho bylo dosahov´ ano dobr´ ych v´ ysledk˚ u pouze pomoc´ı klipov´ an´ı.
2.5
Postup vyˇ setˇ ren´ı hlasov´ eho pole
C´ılem vyˇsetˇren´ı je zmˇeˇrit minim´ aln´ı a maxim´ aln´ı intenzitu hlasu v z´ avislosti na frekvenci a to v rozsahu frekvenc´ı, kter´ ych je pacient schopen. Pˇriˇcemˇz pro vyˇsetˇren´ı je vhodn´ a prodlouˇzen´a fonace vok´ alu ’a’ pro jeho v´ yraznou periodicitu viz obr. 2.5. Pacient je tedy pˇri vyˇsetˇren´ı poˇz´ad´ an o tichou aˇz hlasitou prodlouˇzenou fonaci vok´ alu ’a’ v t´ onov´em rozsahu od nejniˇzˇs´ıho t´ onu, kter´eho je schopen dos´ ahnout, po t´ on nejvyˇsˇs´ı. Bˇehem fonace jsou urˇcov´any akustick´e parametry hlasu, kter´e jsou zobrazov´ any do oblasti hlasov´eho pole. Takto vznikne hlasov´e pole, kter´e je moˇzn´e d´ ale analyzovat. Pro tuto f´ azi je k dispozici n´ astroj pro urˇcen´ı z´akladn´ıch statistick´ ych parametr˚ u. Algoritmus detekce F 0 nen´ı dokonal´ y a v pr˚ ubˇehu F 0 se mohou vyskytnout poruchy8 . Z toho d˚ uvodu byla do aplikace zaˇrazena moˇznost maz´an´ı bod˚ u hlasov´eho pole. Po vyˇsetˇren´ı je moˇzn´e uloˇzit obr´ azek hlasov´eho pole a zvukov´ y z´aznam; d´ ale je moˇzn´e vyhledat pacienta z kartot´eky a napsat zpr´ avu o vyˇsetˇren´ı. Po vyps´ an´ı diagn´ ozy je moˇzn´e vytisknout zpr´ avu obsahuj´ıc´ı text diagn´ ozy, z´akladn´ı u ´daje o pacientovi a dalˇs´ı voliteln´e parametry.
6
Periodicita ani v dobˇe trv´ an´ı fixovan´ ych moment˚ u vˇsak nebude striktnˇe nikdy splnˇena, to pro n´ as vˇsak nen´ı
kritick´e. 7 a tedy nen´ı d´ ale uvaˇzov´ an 8 Ty mohou vzniknout nejen chybn´ ym urˇcen´ım vyˇsˇs´ı harmonick´e nam´ısto z´ akladn´ı, ale tak´e napˇr´ıklad v´ ypoˇctem F 0 ze sign´ alu okoln´ıho hluku apod.
Kapitola 3
Pouˇ zit´ e technologie V t´eto kapitole jsou struˇcnˇe pops´ any pouˇzit´e IT technologie a je zd˚ uvodnˇen jejich v´ ybˇer. Pˇri v´ ybˇeru a n´ asledn´em popisu programovac´ıho jazyka C# a prostˇred´ı .NET Framework bylo ˇcerp´ano z [14] a [15]. Kapitola popisuj´ıc´ı technologii ADO.NET ˇcerp´a z knihy [16]. Popis datab´ azov´eho serveru PostgreSQL ˇcerp´a ze zdroje [22], tj. ofici´ aln´ıch str´ anek projektu PostgreSQL, ˇc´asteˇcnˇe tak´e ze zdroje [26].
3.1
Pracovn´ı r´ amec .NET Framework
Obr´ azek 3.1: .NET Framework - sch´ema modelu
Od roku 2000 se spoleˇcnost Microsoft rozhodla odstoupit od objektov´eho svˇeta zaloˇzen´eho na COM a zaˇcala intenzivnˇe vyv´ıjet .NET Framework, tj. ’dot net frejmvork’. Ten se skl´ ad´ a ze dvou hlavn´ıch ˇc´ast´ı:
12
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
13
1. spoleˇcn´eho jazykov´eho prostˇred´ı pro bˇeh aplikac´ı - CLR1 2. .NET Framework class library Prvn´ı souˇc´ast´ı je bˇehov´e prostˇred´ı CLR, kter´e se star´a o spouˇstˇen´ı a pˇreklad aplikac´ı, spr´ avu pamˇeti, spouˇstˇen´ı proces˚ u apod. Druhou souˇc´ast´ı je .NET Framework class library, coˇz je plnˇe objektovˇe orientovan´ a kolekce prvk˚ u, kter´e mohou b´ yt pouˇzity pˇri programov´ an´ı aplikac´ı. Tyto vrstvy spolu vytv´ aˇrej´ı prostˇred´ı (pracovn´ı r´ amec) pro bˇeh a v´ yvoj aplikac´ı .NET.
3.1.1
Spoleˇ cn´ y jazyk CLR
Spodn´ı vrstvu tvoˇr´ı spolu s unified class library z´ akladn´ı souˇc´ast .NET, kter´e se ˇr´ık´ a spoleˇcn´ y jazyk CLR (Commnon Language Runtime), viz obr. 3.1. Z´akladn´ı vlasnost´ı CLR je, ˇze vˇsechny jazyky se kompiluj´ı do standardn´ıho pˇrechodn´eho jazyka MSIL2 , z ˇcehoˇz plyne, ˇze volba jazyka pˇrest´av´ a b´ yt d˚ uleˇzit´a i pˇri uvaˇzov´an´ı v´ ykonnosti aplikac´ı. CLR kromˇe toho obsahuje dva kompil´ atory, kter´e jsou typu JIT (Just In Time) a pˇrev´ adˇej´ı MSIL do bin´ arn´ıho k´ odu urˇcen´eho pro specifick´ y procesor. Prvn´ı kompil´ ator je velmi rychl´ y, ale produkuje neoptimalizovan´ y k´ od. Druh´ y (standardn´ı) je pomalejˇs´ı, ale produkuje vysoce optimalizovan´ y k´ od. Pouˇzit´ y kompil´ ator se vyb´ır´ a pˇri pˇrekladu aplikace. K´ od zapsan´ y v MSIL je nez´ avisl´ y na platformˇe, na kter´e bˇeˇz´ı a tud´ıˇz se program´ator nemus´ı starat o to, na jak´em syst´emu bude jeho k´ od prov´ ad’en. Je ovˇsem nutn´e m´ıt na dan´em stroji naistalov´ an interpret tohoto k´ odu. V souˇcasn´e dobˇe existuje interpret .NET i pro Unixov´e syst´emy3 , jeho funkˇcnost je vˇsak zat´ım znaˇcnˇe omezen´a. Nejpodstatnˇejˇs´ı ˇcinnosti o nˇeˇz se CLR star´a jsou: • spr´ ava pamˇeti (optimalizace vyuˇzit´ı) • spouˇstˇen´ı proces˚ u • zav´adˇen´ı k´ odu • kontrola bezpeˇcnosti k´ odu • kompilace z jazyka MSIL do specifick´eho k´ odu procesoru ˇ ızen´ CLR rozliˇsuje mezi ˇr´ızen´ ym a neˇr´ızen´ ym k´ odem. R´ y k´ od produkuj´ı vˇsechna v´ yvojov´ a prostˇred´ı, kter´ a jsou schopna sv˚ uj k´ od pˇrekl´ adat do jazyka MSIL a takov´ y k´ od m˚ uˇze vyuˇz´ıvat vˇsech moˇznost´ı, kter´e MSIL nab´ız´ı. Neˇr´ızen´ y k´ od nem˚ uˇze vyuˇz´ıvat sluˇzeb CLR, umoˇzn ˇuje vˇsak zach´azen´ı s pamˇet´ı, kter´e v ˇr´ızen´em k´odu nen´ı moˇzn´e. 1
Zkratka vych´ az´ı z Common Language Runtime. Microsoft Intermediate Language 3 autorem nen´ı Microsoft, ale komunita open source softwaru 2
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
3.1.2
14
.NET Unified Class Library
MSIL a unified class library (UCL) spolu tvoˇr´ı z´akladn´ı vrstvu .NET Frameworku, viz obr. 3.14 . Unified class library se skl´ad´ a z v´ıce jak sta jmen´ ych prostor˚ u a vˇetˇsina z nich obsahuje des´ıtky prvk˚ u (konstruktory, pole, vlastnosti, metody a ud´ alosti). Pro pr´ aci s konkr´etn´ımi typy, kter´e nab´ız´ı urˇcit´e funkce, mus´ıme zn´at cel´ y n´ azev jmenn´eho prostoru. Mezi ˇcasto pouˇz´ıvan´e jmenn´e prostor patˇr´ı: System, System.Collections, System.Collections.Generic, System.Security, System.IO, System.Net, System.Drawing, System.Windows.Form, System.Runtime.InteropServices a mnoho dalˇs´ıch.
Obr´ azek 3.2: Jmenn´e prostory .NET Frameworku
3.1.3
WinForms a GDI+
WinForms je souˇc´ast´ı .NET UCL, jako jmenn´ y prostor System.Windows.Forms. Technologie WinForms umoˇzn ˇuje jednoduˇse vytv´ aˇret uˇzivatelsky pˇr´ıjemn´e grafick´e rozhran´ı5 , kter´e se skl´ad´ a ze standardn´ıch ovl´ adac´ıch prvk˚ u Windows. V pˇr´ıpadˇe potˇreby je moˇzn´e definovat vlastn´ı ovl´ adac´ı prvky a pomoc´ı nadstavby GDI+ mˇenit jejich grafick´ y obsah. GDI+ je spjato s prostorem System.Drawing.
3.1.4
Jazyk C#
Prostˇred´ı .NET nen´ı sv´azan´e s ˇzadn´ ym programovac´ım jazykem, nebot’ bez ohledu na to, v ˇcem byla aplikace p˚ uvodnˇe naps´ ana, je vˇzdy, jak jiˇz bylo ˇreˇceno, pˇreloˇzena do mezijazyka MSIL. 4 5
Obr´ azek byl pˇrevzat z www.msdn.com, ofic´ aln´ıch str´ anek Microsoftu. tzv. GUI
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
15
Dnes je pro platformu .NET pouˇziteln´ ych v´ıce jak deset jazyk˚ u, z nichˇz ne vˇsechny poch´ az´ı z d´ılny Microsoftu. Microsoft pˇresto pˇriˇsel s vlastn´ım programovac´ı jazykem C#, kter´ y vych´ az´ı z programovac´ıch jazyk˚ u Java a C++ a jehoˇz vlastnosti jsou speci´alnˇe vyladˇeny pro .NET Framework. Pˇredevˇs´ım pro velkou flexibilitu a ˇsirokou v´ yvoj´ aˇrskou komunitu byl pro v´ yvoj aplikace hlasov´eho pole vybr´ an tento programovac´ı jazyk. Programovac´ı jazyk C# pˇrin´ aˇs´ı mnoho podstatn´ ych a ovˇeˇren´ ych vlastnost´ı z dnes jiˇz tradiˇcn´ıho jazyka C++ i do prostˇred´ı modern´ı v´ yvojov´e platformy .NET Framework. Spousta programov´ ych element˚ u a konstrukc´ı se podob´ a tˇem, kter´e jsou zn´ am´e z C++. V prostˇred´ı jazyka C# vˇsak lze k tˇemto prvk˚ um pˇristupovat s daleko vˇetˇs´ı efektivnost´ı a produktivitou pr´ ace. Jeho hlavn´ımi v´ yhodami jsou: • Podpora vˇ sech typ˚ u spoleˇ cn´ eho bˇ ehov´ eho prostˇ red´ı. • Pˇ red´ av´ an´ı argument˚ u odkazem a v´ ystupn´ı parametry. Lze pˇred´ avat promˇenn´e funkc´ım odkazem anebo dokonce vytv´ aˇret v´ ystupn´ı parametry, kter´e je nutno inicializovat pˇred ukonˇcen´ım pr´ ace funkce, v n´ıˇz jsou definov´ any • Pˇ retˇ eˇ zov´ an´ı oper´ ator˚ u, kter´e chybˇelo napˇr´ıklad v Javˇe. • Pˇ r´ıkaz using. Aplikac´ı pˇr´ıkazu using lze l´epe kontrolovat hospodaˇren´ı se zdroji. • Nezabezpeˇ cen´ y k´ od. Jazyk C# dovoluje v´ yvoj´ aˇr˚ um pracovat s ukazateli a manipulovat tak s vybran´ ymi segmenty operaˇcn´ı pamˇeti. Aˇckoliv nezabezpeˇcen´ y k´ od je poˇra´d realizov´ an v r´ amci spoleˇcn´eho bˇehov´eho prostˇred´ı, jeho pouˇzit´ı umoˇzn ˇuje program´ ator˚ um preciznˇejˇs´ı ovladatelnost vyuˇzit´ı syst´emov´e pamˇeti. atoˇri v C# mohou okomentovat vybran´e partie zdrojov´eho • XML dokumentace. Program´ k´ odu pozn´ amkami jazyka XML. N´ aslednˇe lze z koment´aˇr˚ u vygenerovat celkovou dokumentaci aplikace. • Generics. Obdoba ˇsablon z C++, kter´e v´ yraznˇe pˇrisp´ıvaj´ı k lepˇs´ımu opˇetovn´emu pouˇzit´ı jiˇz jednou napsan´eho zdrojov´eho k´ odu. • Iter´ atory. Programov´ a konstrukce, prostˇrednictv´ım kter´e lze rychleji a snadnˇeji pracovat s datov´ ymi kolekcemi.
3.1.5
ADO.NET
Technologie ADO .NET je vylepˇsen´a a do .NET zaˇclenˇen´ a pˇredchoz´ı technologie ADO. Z ADO vˇsak ADO.NET vych´ az´ı sp´ıˇse myˇslenkovˇe, nebot’ architektury samotn´e jsou naprosto odliˇsn´e. ADO.NET se skl´ad´ a z poskytovatel˚ u dat a datov´ ych kontejner˚ u. ADO.NET se v .NET
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
16
Unified Class Library skr´ yv´ a ve jmenn´em prostoru System.Data, kter´ y je tˇreba pˇridat jako referenci. Z´ akladn´ı rysy ADO.NET jsou: • obecn´e abstraktn´ı rozhran´ı, ale i specializace na r˚ uzn´e DB syst´emy • online a offline model datab´ aze • siln´ a integrace s XML, XML datab´ aze • integrace s .NET Framework • integrace s MS SQL 2005 (ADO.NET 2.0) • integrovatelnost do jin´ ych datov´ ych adapt´er˚ u6
Obr´ azek 3.3: Schematick´ y model ADO.NET
Datab´ azov´ y server PostgreSQL je kr´ atce diskutov´ an v kapitole 3.7. Uk´ azka pr´ ace s PostgreSQL v prostˇred´ı .NET je v pˇr´ıloze B. N´avrh datab´ aze je diskutov´ an v kapitole 4.7.
3.2
Projekt Mono
Mono je projekt veden´ y firmou Novell7 . Jeho c´ılem je vytvoˇrit sadu n´ astroj˚ u kompatibiln´ıch s prostˇred´ım .NET, kter´e splˇ nuj´ı standardy ECMA (Ecma-334 a Ecma-335). K tˇemto n´astroj˚ um 6 7
V naˇsem pˇr´ıpadˇe pro PostgreSQL existuje open source adapt´er Npgsql; n´ azev vych´ az´ı ze slov Net PostgreSQL. Projekt byl pˇrejat od firmy Ximian.
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
17
patˇr´ı i pˇrekladaˇc jazyka C# a Common Language Runtime8 . Mono m˚ uˇze bˇeˇzet na poˇc´ıtaˇc´ıch s operaˇcn´ımi syst´emy Linux, FreeBSD, UNIX, Mac OS X, Solaris a Microsoft Windows. Projekt tak d´ av´ a nadˇeji, ˇze v t´eto pr´ aci navrˇzen´a aplikace pro C# .NET bude v budoucnu pˇreloˇziteln´ a i na jin´ ych operaˇcn´ıch syst´emech. Pravdˇepodobnˇe vˇsak se zmˇenou knihovny, kter´ a pˇristupuje ke zvukov´e kartˇe. Ostatn´ı souˇc´asti vˇsak budou moci pravdˇepodobnˇe z˚ ustat beze zmˇeny.
3.2.1
Technologie podporovan´ e v Mono
Mono v souˇcasnosti obsahuje nˇekter´e komponenty zn´ ame z .NET Frameworku: • Common Language Infrastructure (CLI) - virtual machine kter´ a obsahuje class loader, Just-in-time compiler a garbage collecting runtime. • Tˇ r´ıdn´ı knihovnu, kter´ a spolupracuje s kaˇzd´ ym jazykem kompatibiln´ım CLR. Jsou zde obsaˇzeny jak .NET kompatibiln´ı tˇr´ıdn´ı knihovny tak vlastn´ı Mono knihovny. • Compil´ ator pro C#, pˇriˇcemˇz nen´ı vylouˇceno, ˇze v budoucnu pˇribudou kompil´ atory pro dalˇs´ı jazyky. Mono nen´ı v souˇcasnosti plnˇe kompatibiln´ı s WinForms a podpora je ve f´ azi v´ yvoje. Apliakce VoiceField tedy zat´ım nen´ı v prostˇred´ı Mono spustiteln´ a, ale intenzivn´ı snaha v´ yvoj´ aˇr˚ u Mona d´ av´ a nadˇeji, ˇze se situace zmˇen´ı. Jako uk´ azku uv´ ad´ım pˇreklad n´ asleduj´ıc´ı kapitoly ze str´ anek projektu Mono [20]. Kapitola informuje o tom, ˇze jiˇz dnes je hlavn´ı prvek hlasov´eho pole bezezmˇeny pˇrenositeln´ y do prostˇred´ı Mono.
Obr´ azek 3.4: System.Drawing v Mono 8
To jsou jiˇz zm´ınˇen´e z´ akladn´ı sloupce .NET Frameworku.
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
3.2.2 9
18
System.Drawing v Mono
V Mono je jmen´ y prostor System.Drawing koncipov´ an tak, aby jeho API bylo plnˇe kom-
patibiln´ı s Microsoft Windows API, kter´ y je souˇc´ast´ı .NET. Kresl´ıc´ı model je zaloˇzen na PDF 1.4 composition-based imaging modelu. Naˇs´ı implementac´ı je C# wrapper okolo GDI+ C API (t´eˇz naz´ yvan´ y ’GDI+ Flat API’). To znamen´a, ˇze C# k´od je stejn´ y pro syst´em Windows i UNIX. Situaci dokumentuje obr. 3.410 .
3.3
PostgreSQL
Jako datab´ azov´ y syst´em byl zvolen PostgreSQL. PostgreSQL je plnohodnotn´ ym relaˇcn´ım datab´ azov´ ym syst´emem s otevˇren´ ym zdrojov´ ym k´ odem. M´ a za sebou v´ıce neˇz patn´ act let aktivn´ıho v´ yvoje a vynikaj´ıc´ı povˇest pro svou spolehlivost a bezpeˇcnost. Bˇeˇz´ı na vˇsech rozˇs´ıˇren´ ych operaˇcn´ıch syst´emech vˇcetnˇe Linux˚ u, UNIX˚ u (BSD, HP-UX, Mac OS X, Solaris, ...) a tak´e na operaˇcn´ım syst´emu Windows, kde bude provozov´ an v naˇsem pˇr´ıpadˇe. PostgreSQL stoprocentnˇe splˇ nuje podm´ınky ACID, plnˇe podporuje ciz´ı kl´ıˇce a operaci JOIN. Obsahuje vˇetˇsinu SQL92 a SQL99 datov´ ych typ˚ u. PostgreSQL je ˇs´ıˇren pod BSD licenc´ı, kter´ a je nejm´enˇe zavazuj´ıc´ı open source licenc´ı. Ta umoˇzn ˇuje neomezenˇe pouˇz´ıvat, modifikovat a distribuovat PostgreSQL. PostgreSQL je tak moˇzno ˇs´ıˇrit se zdrojov´ ymi k´ ody nebo bez nich, zdarma nebo komerˇcnˇe. To je v´ yhodn´e v pˇr´ıpadˇe komerˇcn´ıho vyuˇzit´ı aplikace VoiceField, kdy m˚ uˇze b´ yt datab´ azov´ y server ˇs´ıˇren bez omezen´ı na stejn´em CD, bezplatnˇe nainstalov´ an na libovoln´em PC a pouˇz´ıv´ an. To by rozhodnˇe nebylo moˇzn´e v pˇr´ıpadˇe volby MS SQL Serveru, kde jsou licenˇcn´ı ujedn´ an´ı v´ıce omezuj´ıc´ı. N´ asleduje v´ yˇcet fakt˚ u, kter´ a byla rozhoduj´ıc´ı pro zvolen´ı PostgreSQL11 : • Velmi v´ yhodn´ a BSD license, kter´a zajiˇst’uje bezplatn´e ˇs´ıˇren´ı a uˇzit´ı datab´ azov´eho serveru. • V´ yborn´e v´ ykonostn´ı parametry. • Podpora r˚ uzn´ ych operaˇcn´ıch syst´em˚ u. • Praktciky neomozen´ a velikost datab´ aze a poˇcet pˇripojen´ı. • Vynikaj´ıc´ı povˇest a ˇsirok´ a komunita v´ yvoj´ aˇr˚ u. Prac´ı s datab´ azov´ ym serverem PostgreSQL v prostˇred´ı .NET se podrobnˇeji zab´ yv´ a pˇr´ıloha B. 9
Obsah t´eto kapitoly je pˇrekladem z [20]. Obr´ azek pˇrevzat z [20]. 11 Napˇr´ıklad nam´ısto MS SQL serveru. Ten je jako ’free’ distribuovateln´ y pouze v omezen´e express edici. 10
ˇ E ´ TECHNOLOGIE KAPITOLA 3. POUZIT
3.3.1
19
Z´ akladn´ı parametry PostgreSQL
Sv´ ymi z´akladn´ımi parametry PostgreSQL mnohon´ asobnˇe pˇredˇc´ı poˇzadavky, kter´e aplikace na DB server klade a uv´ ad´ım je pouze pro ilustraci
12
ze zdroje [22].
Tabulka 3.1: Z´ akladn´ı parametry PostgreSQL
Maximum Database Size
Unlimited
Maximum Table Size
32 TB
Maximum Row Size
1.6 TB
Maximum Field Size
1 GB
Maximum Rows per Table
12
Unlimited
Maximum Columns per Table
250 - 1600 depending on column types
Maximum Indexes per Table
Unlimited
a pˇr´ıpadn´e srovn´ an´ı s omezen´ımi MS SQL Express Serveru
Kapitola 4
Anal´ yza, n´ avrh a modelov´ an´ı aplikace 4.1
Metodika n´ avrhu aplikace
Implementaci kaˇzd´e rozs´ahlejˇs´ı aplikace mus´ı pˇredch´ azet podrobn´ a anal´ yza. Ta se skl´ad´ av prvn´ı f´ azi ze specifikace poˇzadavk˚ u, jej´ıˇz hlavn´ım c´ılem je jasnˇe vymezit funkˇcnost aplikace. Zde je podstatn´e dostateˇcn´e zapojen´ı zadavatel˚ u. Specifikace poˇzadavk˚ u jsou n´ astrojem pro zachycen´ı funkˇcn´ıch a nefunkˇcn´ıch poˇzadavk˚ u uˇzivatel˚ u na syst´em. Soubor vˇsech poˇzadavk˚ u potom reprezentuje vˇsechny uˇzivatelsk´e funkce, kter´e budouc´ı syst´em nab´ıdne. Avˇsak mezi oˇcek´avan´e poˇzadavky uˇrivatel˚ u na funkˇcnost a vzhled aplikace m˚ uˇze b´ yt i napˇr´ıklad: • dodrˇzen´ı urˇcit´ ych standard˚ u, napˇr´ıklad protokol˚ u komunikace • pouˇzit´ı urˇcen´ ych softwarov´ ych komponent a technologi´ı • rychlost odezvy syst´emu • n´ aroky na v´ ykonnost syst´emu • atd. avrhu nepodceˇ novat, nebot’ chyby, kter´e Na z´akladˇe praxe je doporuˇcov´ano tuto oblast n´ vzniknou pˇri sbˇeru poˇzadavk˚ u a jejich zachycen´ı, patˇr´ı z hlediska ˇzivotn´ıho cyklu projektu k v˚ ubec nejhorˇs´ım a nejdraˇzˇs´ım. To je proto, ˇze od poˇzadavk˚ u se odv´ıj´ı veˇsker´ y dalˇs´ı postup prac´ı na projektu. Slovn´ı popis (vˇetˇsinou ve formˇe seznamu) poˇzadavk˚ u je vstupem do dalˇs´ı f´ aze n´avrhu aplikace, tj. specifikace pˇr´ıpad˚ u uˇzit´ı. C´ılem t´eto f´ aze je, l´epe pochopit skuteˇcn´e poˇzadavky uˇzivatel˚ u
20
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
21
na budouc´ı syst´em. Metodika pˇredevˇs´ım modeluje interakce uˇzivatele se syst´emem. Z´akladem je tzv. sc´en´ aˇr pˇripad˚ u uˇzit´ı. Druhou moˇznost´ı zachycen´ı je diagram pˇr´ıpad˚ u uˇzit´ı. Ten sice (ve srovn´ an´ı se sc´en´ aˇrem uˇzit´ı) nepˇrin´ aˇs´ı novou informaci, ale m˚ uˇze pomoc´ı n´ avrh zpˇrehlednit. Zjiˇst’ov´ an´ı pˇr´ıpad˚ u uˇzit´ı je tˇreba vˇenovat patˇriˇcnou pozornost, nebot’ pouze to, co popisuje soubor pˇr´ıpad˚ u uˇzit´ı, se bude programovat. Souˇc´ast´ı t´eto f´ aze by mˇelo b´ yt vz´ ajemn´e namapov´ an´ı poˇzadavk˚ u a pˇr´ıpad˚ u uˇzit´ı, a to zejm´ena z kontroln´ıch d˚ uvod˚ u, abychom odhalili m´ısta v poˇzadavc´ıch, kter´ a nejsou oˇsetˇrena pˇr´ıpady uˇzit´ı a obr´ acenˇe. N´ asleduje n´ avrh datab´ aze podle funkˇcn´ıch poˇzadavk˚ u zadavatele. Je tˇreba zvolit vhodn´ y datab´ azov´ y syst´em, z poˇzadavk˚ u vyvodit spr´ avn´ y konceptu´ aln´ı1 a n´ aslednˇe logick´ y model2 datab´ aze. I v t´eto f´ azi modelov´an´ı mus´ı b´ yt pˇr´ıtomen zadavatel pro ovˇeˇren´ı spr´ avnosti a dostateˇcnosti n´ avrhu. Po t´eto f´ azi lze pˇristoupit k objektov´emu modelov´an´ı, tj. k diagramu tˇr´ıd, diagramu aktivit a diagramu komunikace objekt˚ u a n´ aslednˇe jiˇz k samotn´e implementaci aplikace. Bˇehem v´ yvoje aplikace je tˇreba se k jednotliv´ ym f´ az´ım vracet pro ovˇeˇren´ı jejich spr´ avnosti a podchycen´ı vˇsech poˇzadavk˚ u a pˇr´ıpad˚ u uˇzit´ı. Z´ asadn´ım probl´emem je, ˇze nov´e poˇzadavky na aplikaci vznikaj´ı bˇehem v´ yvoje3 a jejich zaˇclenˇen´ı do jiˇz vznikl´eho k´ odu m˚ uˇze b´ yt velice n´ aroˇcn´e4 . Pˇri n´ avrh aplikace bylo postupov´ ano podle n´ avodu z knih [17] a [13] odkud jsou tak´e ˇcerp´any teoretick´e informace o problematice softwarov´eho inˇzen´ yrstv´ı.
4.2
Postup n´ avrhu aplikace
Prezentovanou metodiku n´ avrhu lze shrnout do n´ asleduj´ıc´ıch, ˇc´asteˇcnˇe chronologicky seˇrazen´ ych, krok˚ u: • identifikace funkˇcn´ıch poˇzadavk˚ u • identifikace nefunkˇcn´ıch poˇzadavk˚ u • identifikace pˇr´ıpad˚ u uˇzit´ı a nav´ az´an´ı k funkˇcn´ım poˇzadavk˚ um • n´ avrh datab´ aze podle funkˇcn´ıch a nefunkˇcn´ıch poˇzadavk˚ u • modelov´ an´ı tˇr´ıd a objektov´e spolupr´ ace, diagram seskupen´ı tˇr´ıd 1
Jend´ım z moˇzn´ ych konceptu´ aln´ıch model˚ u je E-R diagram. Modelujeme zde entity, mezi kter´ ymi vystupuj´ı ˇ vztahy. Mˇejmˇe napˇr´ıklad entity Uˇcitel a Z´ ak, pak mezi nimi bude napˇr´ıklad vztah Vyuˇcuje. 2
Logick´ y model jiˇz obsahuje pouze tabulky. Vazby typu M:N, kter´e v konceptu´ aln´ım modelu vystupuj´ı jako
vztahy, jsou nahrazeny tabulkami s ciz´ımi kl´ıˇci. 3 Coˇz odpov´ıd´ a tomu, ˇze v´ yvoj SW je iterativn´ı proces. 4 Je tˇreba si uvˇedomit, ˇze proces implementace realizace pˇr´ıpad˚ u uˇzit´ı je tak´e iteraˇcn´ım upˇresˇ nov´ an´ım.
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
4.3
22
Specifikace poˇ zadavk˚ u
Nejd˚ uleˇzitˇejˇs´ı poˇzadavky kladen´e na aplikaci lze shrnout do tˇrech z´akladn´ıch kategori´ı: poˇzadavky na hlasov´e pole, poˇzadavky na datab´ azi a poˇzadavky na pouˇzit´e technologie. Ty jsou pˇr´ıkladem tzv. nefunkˇcn´ıch poˇzadavk˚ u.
4.3.1
Poˇ zadavky na hlasov´ e pole
• on-line zpracov´ an´ı a zobrazen´ı intenzity a v´ yˇsky • integraˇcn´ı chov´ an´ı pˇri urˇcov´an´ı intenzity podobn´e jako u hlukomˇer˚ u • detekce F0 i u kr´ atce trvaj´ıc´ıh t´ on˚ u • vykreslovat na osu x v´ yˇsku t´ onu, na osu y intenzitu, na ose x klaviatura • rozsah 40 aˇz 135 dB s krokem 2 dB, rozsah t´on˚ u 50 aˇz 1200 Hz • moˇznost maz´an´ı obsahu hlasov´eho pole • vykreslov´ an´ı z´akladn´ıch statistik a histogramu • moˇznost uloˇzen´ı hlasov´eho z´aznamu • moˇznost uloˇzen´ı hlasov´eho pole jako obr´ azku • barevn´e odliˇsen´ı ˇcetnosti v´ yskytu bod˚ u hlasov´eho pole pˇri v´ıcen´asobn´em v´ yskytu stejn´eho bodu
4.3.2
Poˇ zadavky na datab´ azi
• z´akladn´ı zabezpeˇcen´ı pro pr´ aci s osobn´ımi u ´daji • kartot´eka pacient˚ u s moˇznost´ı vkl´ adat nov´e pacienty • moˇznost k jednotliv´ ym pacient˚ um vkl´ adat nov´e diagn´ ozy • moˇznost do datab´ aze vloˇzen´ı odkazu na soubor se zvukov´ ym z´aznamem • tisk diagn´ oz, konvertov´ an´ı do dokumetu PDF • veden´ı z´aznamu o dlouhodob´em stavu pacienta, vkl´ ad´ an´ı pozn´ amek (o prodˇelan´ ych z´akroc´ıch, onemocnˇen´ıch, ...) • snadn´e vyhled´ av´ an´ı podle pˇrijmen´ı pacienta
4.3.3
Poˇ zadavky na pouˇ zit´ e technologie
• operaˇcn´ı syst´em Windows
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
23
• pouˇzit´ı pouze standardn´ıch souˇc´ast´ı Windows ˇci volnˇe ˇs´ıˇriteln´ ych knihoven • volnˇe ˇs´ıˇriteln´ y datab´ azov´ y server bez podstatn´ ych omezen´ı (zvolen PostgreSQL)
4.4
Pˇ r´ıpady uˇ zit´ı
4.4.1
Hlavn´ı sc´ en´ aˇ r
V t´eto f´azi jsou zachyceny nejd˚ uleˇzitˇejˇs´ı pˇr´ıpady uˇzit´ı aplikace hlavn´ım sc´en´ aˇrem, coˇz je sc´en´aˇr vyˇsetˇren´ı pacienta l´ekaˇrem typu ’vˇsechno jde hladce’. Kromˇe tohoto hlavn´ıho sc´en´aˇre existuje pomˇernˇe rozs´ahl´ y seznam alternativn´ıch sc´en´ aˇr˚ u, kter´e pˇredstavuj´ı postup pˇri zjiˇstˇen´ı r˚ uzn´ ych chyb, mimoˇra´dn´ ych stav˚ u (pacient nen´ı dosud veden v kartot´ece, nepodaˇrilo se pˇripojit do datab´ azov´eho syst´emu, apod.) a z nich vyvozen´ ych pr˚ uchod˚ u aplikac´ı a alternativn´ıch akc´ı. Nejˇcastˇeji odpov´ıdaj´ı sekc´ım JINAK hlavn´ıho sc´en´ aˇre a alternativn´ım pr˚ uchod˚ um l´ekaˇre aplikac´ı (napˇr´ıklad pouze tisk z kartot´eky, editace osobn´ıch u ´daj˚ u apod.) Krok
Role
Akce
1
L´ekaˇr
pˇrihl´ as´ı se do syst´emu
2
Syst´em
POKUD pˇrihl´ aˇsen´ı vpoˇra´dku pˇrihl´ as´ı se do datab´ aze, naˇcte seznam pacient˚ u JINAK moˇznost vyˇsetˇrit pouze hlasov´e pole KONEC-POKUD
3
L´ekaˇr
POKUD pacient je v datab´ azi vybere pacienta z datab´ aze JINAK zaloˇzen´ı nov´eho pacienta KONEC-POKUD viz sc´en´ aˇr nov´y pacient
4
Syst´em
zobraz´ı z´akladn´ı informace o pacientovi vˇcetnˇe diagn´ oz
5
L´ekaˇr
spust´ı samotn´e vyˇsetˇren´ı, vytvoˇr´ı pacientovo hlasov´e pole viz sc´en´ aˇr uˇzit´ı hlasov´eho pole
6
Syst´em
analyzuje hl. pole, nab´ıdne uloˇzen´ı zv. z´aznamu a hl. pole
7
L´ekaˇr
POKUD chce uloˇzit zv. z´aznam uloˇzen´ı zv. z´aznamu KONEC-POKUD viz sc´en´ aˇr uloˇzen´ı zv. z´ aznamu
8
L´ekaˇr
POKUD chce uloˇzit hl. pole uloˇzen´ı hl. pole KONEC-POKUD viz sc´en´ aˇr uloˇzen´ı hl. pole
9
Syst´em
zobraz´ı formul´ aˇr pacienta a nab´ıdku nov´e diagn´ ozy
10
L´ekaˇr
POKUD zaloˇz´ı novou diagn´ ozu
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
24
pokraˇcuj ve sc´en´ aˇri JINAK konec vyˇsetˇren´ı KONEC-POKUD 11
Syst´em
zobraz´ı formul´ aˇr diagn´ ozy
12
L´ekaˇr
vypln´ı formul´ aˇr diagn´ ozy
13
Syst´em
POKUD nen´ı validn´ı hl´ aˇsen´ı chyby, n´ avrat do bodu 12 KONEC-POKUD
14
Syst´em
nab´ıdne tisk diagn´ ozy
15
L´ekaˇr
POKUD chce tisknout tisk diagn´ ozy KONEC-POKUD
Pˇ r´ıpad uˇ zit´ı: vyˇsetˇren´ı pacienta, hlavn´ı sc´en´ aˇr
4.4.2
Alternativn´ı sc´ en´ aˇ re
K hlavn´ımu sc´en´ aˇri uˇzit´ı je tˇreba poˇc´ıtat ˇradu alternativn´ıch sc´en´ aˇr˚ u. Zde uv´ ad´ım pouze nˇekter´e z nich.
Krok
Role
Akce
3a1
L´ekaˇr
zvol´ı nab´ıdku pro nov´eho pacienta
3a2
Syst´em
zobraz´ı pr´ azdn´ y formul´ aˇr s pˇredvyplnˇen´ ymi u ´daji
3a3
L´ekaˇr
vypln´ı z´akladn´ı u ´daje pacienta
3a4
L´ekaˇr
POKUD neexistuje pojiˇst’ovna zaloˇzen´ı nov´e pojiˇst’ovny KONEC-POKUD viz sc´en´ aˇr zaloˇzen´ı pojiˇst’ovny
3a5
Syst´em
uloˇzen´ı u ´daj˚ u do datab´ aze
Pˇ r´ıpad uˇ zit´ı: zaloˇzen´ı nov´eho pacienta 3a. Pacient neexistuje v seznamu pacient˚ u, bude zaloˇzen nov´ y pacient Krok
Role
Akce
8a1
L´ekaˇr
zvol´ı nab´ıdku pro uloˇzen´ı hlasov´eho pole
8a2
Syst´em
zobraz´ı dialogov´e okno
8a3
L´ekaˇr
vol´ı n´ azev a cestu pro uloˇzen´ı hlasov´eho pole
8a4
Syst´em
generov´an´ı obr´ azku hlasov´eho pole, uloˇzen´ı obr´ azku
8a4
Syst´em
uloˇzen´ı datov´eho obsahu hlasov´eho pole do txt souboru
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
25
Pˇ r´ıpad uˇ zit´ı: uloˇzen´ı hlasov´eho pole 8a. L´ekaˇr se rozhodl uloˇzit hlasov´e pole
4.5
Diagramy pˇ r´ıpad˚ u uˇ zit´ı
Na obr´ azku je zn´ azornˇen pˇr´ıpad uˇzit´ı hlavn´ıho akt´era syst´emu tj. l´ekaˇre. Ten slouˇzil jako hlavn´ı diagram pˇri dalˇs´ım modelov´ an´ı aplikace.
Obr´ azek 4.1: Diagram pˇr´ıpad˚ u uˇzit´ı
4.6
Diagram tˇ r´ıd a seskupen´ı
Seskupen´ı tˇr´ıd se pouˇz´ıv´ a pro tˇr´ıdy, jejichˇz objekty spolu logicky souvis´ı a komunikuj´ı mezi sebou. Tyto tˇr´ıdy jsou pak schopny poskytnout ucelen´ y bal´ık sluˇzeb. Uveden´ y diagram seskupen´ı
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
26
obsahuje pouze nejd˚ uleˇzitˇejˇs´ı tˇr´ıdy, jejich seskupen´ı a vztahy mezi nimi. Vystihuje tak kostru cel´e aplikace, kter´ a se skl´ad´ a z pˇeti seskupen´ı: • On-line modul - modul, kter´ y se star´a o sn´ım´an´ı dat z mikrofonu a pr´ aci se soubory form´ atu WAV • Npgsql - knihovna pro spolupr´ aci s datab´ az´ı PostgreSQL • DSProcessing - implementace DSP algoritm˚ u uˇz´ıvan´ ych pˇri zpracov´ an´ı ˇreˇci • Voice Field - samotn´a aplikace, vykreslov´ an´ı dat, tisk soubor˚ u • Kartot´ eka - spolupr´ ace s datab´az´ı, formul´ aˇre pro v´ ypis a editaci dat
Obr´ azek 4.2: Diagram seskupen´ı tˇr´ıd
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
27
Kompletn´ım diagram tˇr´ıd pro jeho rozs´ ahlost a malou uˇziteˇcnost5 neuv´ ad´ıme.
4.6.1
Seskupen´ı DSProcessing
DSProcessing je knihovnou tˇr´ıd, kter´ a byla naps´ ana pro tuto aplikaci, ale d´ıky nez´ avislosti jistˇe nalezne uplatnˇen´ı i jinde6 . Obsahuje vˇsechny DSP algoritmy pouˇz´ıvan´e pro anal´ yzu ˇreˇcov´eho sign´ alu Kostrou knihovny je tˇr´ıda Tools obsahuj´ıc´ı z´akladn´ı DSP a numerick´e algoritmy zn´ ame z Matlabu. Jde napˇr´ıklad o funkce filter, filtfilt, conv, medfilt1, mean, linspace apod. Tyto funkce v´ yraznˇe usnadˇ nuj´ı a zpˇrehledˇ nuj´ı implementaci algoritm˚ u hlasov´eho pole. Z´ apis k´ odu je s vyuˇzit´ım tˇechto funkc´ı podobn´ y z´apisu v Matlabu, coˇz bylo tak´e jedn´ım z c´ıl˚ u. ˇ ast knihovny pro spektr´ C´ aln´ı anal´ yzu obsahuje pˇredevˇs´ım algoritmy FFT a iFFT a je ˇc´asteˇcnˇe zaloˇzen´a na implementaci FFT z open source knihovny AForge.NET [21]. Souˇc´ast´ı knihovny je i sada z´ akladn´ıch funkc´ı pro zpracov´ an´ı ˇreˇci z nichˇz nejd˚ uleˇzitˇejˇs´ı je funkce F0detection s ˇradou parametr˚ u, kter´ a se star´a o v´ ypoˇcet F0 a energie vstupn´ıho ˇreˇcov´eho sign´ alu. Protoˇze se jedn´a o knihovn´ı tˇr´ıdu, jde pouze o ob´ alku statick´ ych metod. U tˇr´ıd nelze vytv´ aˇret instance, coˇz je zajiˇstˇeno t´ım, ˇze jsou vˇsechny definov´ any jako static.
4.6.2
Seskupen´ı VoiceField
V seskupen´ı VoiceField jsou naznaˇceny hlavn´ı formul´ aˇre aplikace. Jedn´ a se o MainForm, hlavn´ı formul´ aˇr aplikace, kter´ y je typu MDI container a obsahuje vˇsechny dalˇs´ı formul´ aˇre aplikace jako potomky7 . Tento formul´ aˇr obsahuje on-line modul, kter´ y pˇrij´ım´a hlasov´ y z´aznam ze zvukov´e karty. Pˇrijem prob´ıh´ a tak, ˇze po naplnˇen´ı bufferu je vol´ an deleg´ at, kter´ y pˇrijat´ a data uloˇz´ı do lok´ aln´ıho pole, zpracuje vol´ an´ım funkce F0detection z knihovny DSProcessing a v´ ysledky pˇred´ a prvku VoiceFieldControl. Druh´ ym vyznaˇcen´ ym formul´ aˇrem je formul´ aˇr VoiceFieldForm obsahuj´ıc´ı prvek VoiceFieldControl, kter´ y zobrazuje hlasov´e pole. Jak jiˇz bylo ˇreˇceno, data jsou pˇrij´ımana v objektu MainForm.
4.6.3
Seskupen´ı Karot´ eka
Seskupen´ı Karot´eka jsou formul´ aˇre, kter´e aplikaci spojuj´ı s datab´ az´ı. Jde o formul´ aˇre: 5
Kompletn´ı diagram obsahuje sp´ıˇse implementaˇcn´ı detaily; uveden´ y diagram seskupen´ı popisuje aplikaci bez
jemnˇejˇs´ıch detail˚ u, vystihuje vˇsak jej´ı kostru. 6 Jako open source knihovna je souˇca ´st´ı projektu www.sourceforge.net na adrese dsprocessing.sourceforge.net. 7 V terminologii .NET je potomek oznaˇcov´ an jako Child.
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
28
• DiagnozaForm - zobrazen´ı a moˇznost editace diagn´ oz pacienta z tabulky Diagnozy, formul´ aˇr pro tisk diagn´ oz • PacientForm - zobrazen´ı obsahu a moˇznost editace tabulky Pacient, tj. osobn´ıch u ´daj˚ u pacienta • PojistovnaForm - zobrazen´ı obsahu a moˇznost editace tabulky Pojistovna • LekarForm - zobrazen´ı obsahu a moˇznost editace tabulky Lekar
4.6.4
Seskupen´ı Npgsql
Datov´ y adapt´er a tˇr´ıdy pro komunikaci s datab´ az´ı a vykon´ av´ an´ı SQL dotaz˚ u. Npgsql je zkratka ze slov .NET a PostgreSQL.
Obr´ azek 4.3: Diagram aktivit - naplnˇen´ı bufferu zv. karty
4.6.5
Seskupen´ı on-line modul
Jedn´ a se opˇet o knihovnu, kter´ a byla nasp´ ana jako souˇc´ast aplikace. Star´ a se okop´ırov´ an´ı dat z bufferu po jeho naplnˇen´ı ze zvukov´e karty do aplikace. Souˇc´ast´ı je interface, kter´ y zastiˇ nuje v´ıce moˇzn´ ych implementac´ı, kter´e jsou z´avisl´e na syst´emu a hardwaru. V st´ avaj´ıc´ı verzi
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
29
aplikace je souˇc´ast´ı winmm.dll implementace a ˇc´asteˇcnˇe implementace zaloˇzen´a na technologii DirectSound. Tˇr´ıda d´ ale obsahuje funkce pro pr´ aci se zvukov´ ym souborem typu WAV.
4.6.6
Diagram aktivit
Mimo v´ yˇse popsan´ ych modelovac´ıch n´ astroj˚ u byl pro modelov´ an´ı aplikace pouˇzit tzv. diagram aktivit. Nebyl sice pouˇzil pro modelov´ an´ı jednoduch´ ych aktivit a funkˇcnost´ı (napˇr´ıklad pˇrid´ an´ı nov´eho pacienta do datab´ aze; bylo by to zbyteˇcn´e), ale pro kritick´e a n´ aroˇcn´e ˇc´asti aplikace. Nejd˚ uleˇzitˇejˇs´ım diagramem aktivit je diagram obr. 4.3, kter´ y dokumentuje ˇcinnost aplikace, konkr´etnˇe objetu MainForm, v pˇr´ıpadˇe naplnˇen´ı bufferu zvukov´e karty.
4.7
N´ avrh datab´ aze
Posledn´ım krokem pˇred objektov´ ym n´ avrhem samotn´eho informaˇcn´ıho syst´emu je n´ avrh datab´ aze. Ze zad´an´ı jednoznaˇcnˇe vypl´ yv´ a nutnost v´est datab´ azi pacient˚ u a vyˇsetˇren´ı, kter´ a l´ekaˇri slouˇz´ı jako kartot´eka. Pˇri n´ avrhu datab´ aze byl br´ an ohled na maxim´ aln´ı jednoduchost a rychlost vyplˇ nov´ an´ı formul´ aˇr˚ u a to tak, aby l´ekaˇr nebyl touto procedurou zbyteˇcnˇe zdrˇzov´an. Pˇres maxim´aln´ı jednoduchost bylo db´ ano na dostateˇcn´e zabezpeˇcen´ı osobn´ıch dat, ukl´ ad´ an´ı zmˇen v diagn´ oz´ach a integritu dat. Co se t´ yˇce maxim´aln´ı velikosti spravovan´e datab´ aze, nemˇelo by pˇri pouˇz´ıv´ an´ı programu doj´ıt ke omezen´ı. PostgreSQL zaruˇcuje pouze teoreticky omezenou velikost datab´ aze. Poˇcet z´aznam˚ u datab´ aze, kter´ ych bude maxim´ alnˇe v ˇra´du tis´ıc˚ u, tedy v tomto pˇr´ıpadˇe nemus´ıme uvaˇzovat ani z kapacitn´ıho ani z v´ ykonnostn´ıho hlediska.
4.7.1
Pˇ rehled tabulek
• Pacient - tabulka pacient˚ u • Lekar - tabulka l´ekaˇr˚ u • Diagnozy - tabulka diagn´ oz n´ aleˇz´ıc´ı konkr´etn´ımu pacientovi • Pojistovna - tabulka pojiˇst’oven
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
4.7.2
30
E-R model datab´ aze
Pacientovi n´ aleˇz´ı ˇz´adn´ a, jedna nebo v´ıce diagn´ oz8 . N´ aleˇzitost diagn´ ozy k pacientovi je v datab´ azi reprezentov´ana ciz´ım kl´ıˇcem ID PACIENT v tabulce Diagnozy.
Obr´ azek 4.4: E-R diagram datab´ aze
D´ ale plat´ı, ˇze diagn´ ozy zapisuje l´ekaˇr. Tento fakt je v datab´ azi zohlednˇen ciz´ım kl´ıˇcem ID LEKAR v tabulce Diagnozy s vazbou 1:19 . Ciz´ı kl´ıˇc tabulky tedy ukazuje na vlastn´ı kl´ıˇc l´ekaˇre v tabulce Lekar, ker´ y diagn´ ozu provedl. Posledn´ım vztahem mezi tabulkami je vztah mezi pacientem a zdravotn´ı pojiˇst’ovnou. Pacientovi n´ aleˇz´ı pr´ avˇe jedna pojiˇst’ovna, jde tedy opˇet o vztah 1:1. Proto je v tabulce Pacient ciz´ı kl´ıˇc ID POJISTOVNA, kter´ y odkazuje na pojiˇst’ovnu, u kter´e je pacient pojiˇst’en. 8 9
Jde o vazbu typu 0:N. za jednu diagn´ ozu je odpovˇedn´ y pr´ avˇe jeden l´ekaˇr
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
4.7.3
31
Tabulka Pacient
V tabulce Pacient jsou uchov´ av´ any z´ akladn´ı informace o pacientovi: adresa ve sloupci adresa, datum narozen´ı ve sloupci narozen, jm´eno a pˇrijmen´ı pacienta ve sloupc´ıch jmeno a prijmeni. D´ ale pohlav´ı ve sloupci muz, kter´ y je typu boolean. Pacientova dlouhodob´ a diagn´ oza je uchov´ av´ ana ve sloupci dlouhodoba diagnoza. Vlastn´ım kl´ıˇcem tabulky je ID PACIENT. Ciz´ım kl´ıˇcem, odkazuj´ıc´ım na pojiˇst’ovnu je sloupec ID POJISTOVNA, tento ciz´ı kl´ıˇc urˇcuje ID pojiˇst’ovny, u kter´e je pacient pojiˇstˇencem. Sloupec s n´ azvem dlouhodoba diagnoza je vyhrazen pro pozn´ amky l´ekaˇre o stavu pacienta a v´ yvoji jeho zdravotn´ıho stavu napˇr´ıˇc jednotliv´ ymi diagn´ ozami. Tento text se tedy nevztahuje k jednotliv´ ym diagn´ oz´am pacienta, ale k jeho celkov´emu zdravotn´ımu stavu. Zde je moˇzn´e napˇr´ıklad v´est z´aznam o prodˇelan´ ych operac´ıch, chorob´ ach apod. Ze zad´an´ı pr´ ace vypl´ yv´ a, ˇze dalˇs´ı inforamace o pacientovi nen´ı tˇreba ukl´ adat, nebot’ se nevztahuj´ı k problematice vyˇsetˇren´ı. Pro pˇr´ıpadn´e pozn´ amky je vymezen jiˇz zm´ınˇen´ y sloupec dlouhodoba diagnoza.
4.7.4
Tabulka Diagnozy
Tabulka Diagnozy slouˇz´ı k uchov´ an´ı jednotliv´ ych diagn´ oz, kter´e lek´aˇr provedl, obsahuje jeden hlavn´ı kl´ıˇc a dva ciz´ı. Hlavn´ım kl´ıˇcem je ID DIAGNOZA. Ciz´ı kl´ıˇc ID PACIENT, obsahuje informaci o tom, kter´emu pacientovi diagn´ oza n´aleˇz´ı. Odkazuje na hlavn´ı kl´ıˇc z tabulky pacient˚ u. Druh´ ym ciz´ım kl´ıˇcem je ID LEKAR, kter´ y uchov´ av´ a informaci o l´ekaˇri, kter´ y diagn´ ozu bud’ vytvoˇril nebo naposledy editoval. V tabulce je d´ ale uchov´ av´ an datum, kdy byla diagn´ oza provedena ve sloupci datum, text diagn´ ozy ve sloupci text, cesta k souboru se zvukov´ ym z´aznamem ve sloupci soubor 10 . Informace o tom, zda je diagn´ oza tzv. aktivn´ı je uchov´ av´ ana ve sloupci aktivni, kter´ y je typu boolean. Stav aktivn´ı souvis´ı s t´ım, ˇze l´ekaˇr˚ um nen´ı z bezpeˇcnostn´ıch d˚ uvod˚ u programem dovoleno jiˇz jednou vytvoˇrenou diagn´ ozu mazat. L´ekaˇr m˚ uˇze pouze vytvoˇrit novou diagn´ ozu a st´avaj´ıc´ı je prohl´ aˇsena za neaktivn´ı. Nen´ı tedy z datab´ aze odstranˇena.
4.7.5
Tabulka Pojistovna
Tabulka Pojistovna slouˇz´ı k uchov´ an´ı z´akladn´ıch u ´daj˚ u o pojiˇst’ovnˇe. Vystaˇcili jsme si s ˇc´ıslem pojiˇst’ovny ve sloupci cislo pojistovny, s n´ azvem pojiˇst’ovny ve sloupci nazev a adresou pojiˇst’ovny ve sloupci adresa. 10
pokud takov´ y soubor neexistuje, sloupec m˚ uˇze z˚ ustat nevyplnˇen
´ ´ ´ ´I APLIKACE KAPITOLA 4. ANALYZA, NAVRH A MODELOVAN
32
Vlastn´ım kl´ıˇcem tabulky je sloupec ID POJISTOVNA.
4.7.6
Tabulka Lekar
Posledn´ı tabulkou v datab´ azi je tabulka l´ekaˇr˚ u, kteˇr´ı mohou prov´ adˇet diagn´ ozy. U l´ekaˇre uchov´ av´ ame jm´eno a pˇrijmen´ı ve sloupc´ıch jmeno, prijmeni a heslo ve sloupci heslo, kter´ ym se pˇrihlaˇsuje do datab´ aze. Hlavn´ım kl´ıˇcem t´eto tabulky je sloupec ID LEKAR.
Kapitola 5
Algoritmy pro v´ ypoˇ cet hlasov´ eho pole Tato kapitola je vˇenov´ ana popisu zpracov´ an´ı hlasov´eho sign´ alu od zachycen´ı mikrofonem po v´ ypoˇcet poˇzadovan´ ych akustick´ ych parametr˚ u hlasov´eho pole, tj. energie a z´ akladn´ı hlasivkov´e frekvence. Kapitola ˇcerp´a pˇredevˇs´ım ze zdroj˚ u [1], [2], [4], [7], [10].
5.1
Blokov´ e sch´ ema syst´ emu
Na obr. 5.1 je zn´ azornˇeno blokov´e sch´ema syst´emu. Akustick´ ym vstupem do syst´emu je mikrofon pˇripojen´ y ke zvukov´e kartˇe. Mikrofonem sn´ıman´ y sign´ al je vzorkov´ an a digitalizov´ an zvukovou kartou. Digitalizovan´ y hlasov´ y sign´ al z nˇehoˇz je odstranˇena stˇredn´ı hodnota, je zpracov´ av´ an metodami kr´ atkodob´e anal´ yzy. Je tedy poˇc´ıt´ ano s jeho lok´ aln´ı stacionaritou. Sign´ al je segmentov´ an a v´ ahov´ an Hannov´ ym oknem. Pˇri vzorkov´ an´ı 11025 Hz je moˇzn´ a velikost segment˚ u 512 nebo 1024 vzork˚ u, coˇz odpov´ıd´ a stacion´arn´ım interval˚ um 40 aˇz 100 ms. N´asleduje pˇrechod do frekvenˇcn´ı oblasti pomoc´ı algoritmu FFT, kde jsou jiˇz urˇcov´any jednotliv´e akustick´e parametry hlasu. Pˇred v´ ypoˇctem energie ve frekvenˇcn´ı oblasti je z d˚ uvodu normalizace provedeno A v´ ahov´ an´ı. F 0 je urˇcov´ana z periodicity sign´ alu, tj. z maxima autokorelaˇcn´ı funkce. Poˇcet takto vyhodnocen´ ych bod˚ u hlasov´eho pole m˚ uˇze b´ yt aˇz 20 za sekundu s velk´ ym rozptylem a to jak v rozmez´ı energie tak v rozmez´ı F 0. Tento jev je zp˚ usoben r˚ uzn´ ymi nestabilitami v hlasov´em sign´alu, napˇr´ıklad n´ abˇehem na danou frekvenci, kr´ atkodob´ ym v´ ypadkem hlasu, zachraptˇen´ım apod. Jev znehodnocuje mˇeˇren´ı a snaˇz´ıme se mu pˇredch´ azet. Urˇcen´e parametry proto nejsou jeˇstˇe zobrazov´any hlasov´ ym polem, ale pr˚ ubˇeh energie je
33
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
34
filtrov´ an pomoc´ı integr´ atoru a klouzav´eho pr˚ umˇeru. Ve filtrovan´em sign´alu jsou hled´ ana lok´ aln´ı maxima. Teprve ta urˇcuj´ı platn´e hodnoty energie1 a F 0, kter´e budou zobrazov´ ana hlasov´ ym pole. Pˇri pouˇzit´ı tohoto algoritmu je chov´ an´ı hlasov´eho pole podobn´e chov´an´ı akustick´ ym mˇeˇriˇc˚ u energie a frekvence a poˇcet zobrazovan´ ych hodnot je jiˇz omezen max. do 3 za sekundu a odpov´ıdaj´ı ust´ alen´ ym ˇc´astem hlasu. Posledn´ım krit´eriem je, ˇze F 0 mus´ı spadat do intervalu (50 Hz, 1200 Hz) a energie do intervalu (40 dB, 130 dB). Potom jsou potenci´ aln´ı body hlasov´eho pole povaˇzov´any za platn´e a aplikac´ı vykresleny.
Obr´ azek 5.1: Blokov´e sch´ema syst´emu zpracov´an´ı ˇreˇci
5.2 5.2.1
Vzorkov´ an´ı sign´ alu a parametry zvukov´ e karty Vzorkov´ an´ı sign´ alu
Vzorkov´ an´ı je transformace sign´ alu s(t) spojit´eho v ˇcase na posloupnost vzork˚ u sn = s(nT ), 1
Platn´e hodnoty energe jsou urˇceny jako maxima filtorovan´eho sign´ alu.
(5.1)
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
35
kter´e jsou jiˇz v ˇcase diskr´etn´ı. Vzorkov´ an´ı prob´ıh´ a v ˇcasov´ ych okamˇzic´ıch tn = nT , kde T je perioda vzorkov´ an´ı a n = 1, 2, ...
Obr´ azek 5.2: Vzorkov´ an´ı spojit´eho sign´ alu
Na frekvenci fs = 1/T vzorkov´ an´ı, respektive na periodu vzorkov´ an´ı T jsou kladena omezen´ı plynouc´ı z Shannonova vzorkovac´ıho teor´emu: fs > 2fm ,
(5.2)
kde fs je vzorkovac´ı frekvence (parametr sample rate u zvukov´e karty) a fm je nejvˇetˇs´ı kmitoˇcet obsaˇzen´ y v sign´ alu. Plat´ı tedy, ˇze pˇresn´a rekonstrukce spojit´eho, frekvenˇcnˇe omezen´eho sign´ alu z jeho vzork˚ u je moˇzn´ a tehdy, pokud byl vzorkov´ an frekvenc´ı alespoˇ n dvakr´ at vyˇsˇs´ı neˇz je maxim´aln´ı frekvence rekonstruovan´eho sign´ alu. Pˇri splnˇen´ı podm´ınky lze zpˇetnou rekonstrukci sign´ alu z s(nT ) na spojit´ y sign´ al s(t) prov´est podle vztahu (5.3), kter´ y odpov´ıd´ a filtraci ide´ aln´ı doln´ı propust´ı. ∞
sin π(t/T − n) s(t) = s(nT ) π(t/T − n) n=−∞
(5.3)
V praxi je rekonstrukce nejˇcastˇeji realizov´ ana filtrac´ı sign´ alu re´ alnou doln´ı prospust´ı ˇci pomoc´ı obvodu S/H2 , tj. vzorkovaˇce s pamˇet´ı3 . Pro v´ ypoˇcet F 0 v naˇsem pˇr´ıpadˇe s rezervou dostaˇcuje nastavit fs = 8000Hz. Z d˚ uvodu poˇzadovan´e vyˇsˇs´ı kvality z´ aznamu je v t´eto pr´ aci zvolena fs = 11025Hz, kter´ a je nav´ıc standardnˇe podporov´ ana vˇsemi zvukov´ ymi kartami (u frekvence 8000 Hz tomu tak b´ yt nemus´ı). 2 3
sample and hold Spektrum S/H obvodu se l´ıˇs´ı od ide´ aln´ı DP a t´ım vznik´ a chyba rekostrukce. Rekonstruovan´ y sign´ al je scho-
dovit´ a funkce, odliˇsn´ a od p˚ uvodn´ıho sign´ alu.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.2.2
36
Kvantov´ an´ı sign´ alu
Kvantov´ ani je aproximace hodnot vzork˚ u spojit´eho sign´ alu, kter´ y m˚ uˇze nab´ yvat libovoln´e re´aln´e hodnoty, pomoc´ı kvantovac´ıch u ´rovn´ı A/D pˇrevodn´ıku. A/D pˇrevodn´ık obsahuje obvod vzorkovaˇce, kter´ y vzorkuje v intervalech T spojit´ y sign´ al a po tuto dobu udrˇzuje st´alou hodnotu. Sign´ al zpracovan´ y vzorkovaˇcem je diskr´etn´ı v ˇcase, ale spojit´ y v napˇet’ov´ ych u ´rovn´ıch a je zobrazen do koneˇcn´eho poˇctu u ´rovn´ı.
Obr´ azek 5.3: Kvantov´ an´ı navzorkovan´eho sign´ alu
Poˇcet u ´rovn´ı se vol´ı vˇetˇsinou ve tvaru 2B , kde B je poˇcet bit˚ u A/D pˇrevodn´ıku. Zvukov´e karty standardnˇe umoˇzn ˇuj´ı vzorkov´ an´ı 28 u ´rovnˇemi a 216 u ´rovnˇemi (tj. 65536 u ´rovn´ı). Pˇri kvantizov´ an´ı doch´ az´ı k znaˇcn´e ztr´atˇe informace, nebot’ je sign´ al zaokrouhlen na koneˇcn´ y poˇcet hodnot. Ztr´ ata informace je t´ım vˇetˇs´ı, ˇc´ım menˇs´ı je poˇcet u ´rovn´ı kvantiz´ atoru a pˇri pˇrehr´ av´ an´ı zaznamenan´e ˇreˇci se projevuje jako ˇsum. S ohledem na poˇzadovanou kvalitu z´aznamu bylo zvoleno vzorkov´ an´ı 16 bit˚ u.
5.2.3
Zvukov´ a karta a jej´ı nastaven´ı
A/D pˇrevod a kvantov´ an´ı sign´ alu zachycen´eho mikrofonem je realizov´ ano zvukovou kartou. Hlavn´ı parametry digitalizace, kter´e mus´ı na zvukov´e kartˇe (pomoc´ı vhodn´eho API) program´ ator nastavit jsou:
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
37
Tabulka 5.1: Nastaviteln´e parametry zvukov´e karty
Bits per sample Sample rate
poˇcet bit˚ u na vzorek
8/16bit˚ u
poˇcet vzork˚ u za sekundu
11025, 22050, 44100 [Hz]
poˇcet kan´al˚ u
1, 2
Number of chanels
S ohledem na poˇzadovanou vyˇsˇs´ı kvality z´ aznamu je zvoleno kvantov´ an´ı 16 bit˚ u na vzorek. Tomu odpov´ıd´ a 65536 u ´rovn´ı a tedy datov´ y typ int. Vzorkovac´ı frekvence byla zvolena fs = 11025Hz. Vyˇsˇs´ı fs a poˇcet bit˚ u pˇrirozenˇe zvˇetˇsuj´ı pamˇet’ovou n´ aroˇcnost ˇreˇcov´eho z´aznamu. Ta vˇsak vzhledem k d´elce vyˇsetˇren´ı nen´ı kritick´ a a z´aznam je na disk uloˇzen pouze na ˇz´adost l´ekaˇre. Na m´ısto dalˇs´ı pr´ ace se zvukov´ ym z´aznamem je do datab´ aze ukl´ ad´ an obsah hlasov´eho pole, pˇr´ıpadnˇe hlasov´e pole jako obr´ azek. Tabulka 5.2: Zvolen´e parametry zvukov´e karty
Bits per sample Sample rate Number of chanels
5.3
16bit˚ u 11025Hz 1
Pˇ redzpracov´ an´ı
Sign´ al diskr´etn´ı v ˇcase s odstranˇenou stejnosmˇernou sloˇzkou je pˇred zpracovn´ım rozdˇelen na mikrosegmenty s dobou trv´ an´ı 50 ms a v´ahov´ an Hannov´ ym oknem. Pouˇzit´ı Hannova okna zp˚ usobuje, ˇze v´ahy vzork˚ u na konci a zaˇc´atku okna jsou menˇs´ı neˇz uprostˇred. Proces segmentace a v´ ahov´ an´ı je zn´ azornˇen na obr. 5.44 . 4
Velikost segment˚ u na obr´ azku neodpov´ıd´ a skuteˇcnosti, je pouze ilustrativn´ı.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
38
Obr´ azek 5.4: Princip segmentace a v´ ahov´ an´ı oknem
Hannovo okno je posloupnost d´elky N , jej´ıˇz n-t´a hodnota je urˇcena vzorcem w(n) = 0.5(1 − cos(
2πn )) N −1
a pr˚ ubˇeh okna je na obr. 5.5.
Obr´ azek 5.5: Pr˚ ubˇeh a frekvenˇcn´ı charakteristika Hannova okna
(5.4)
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.4
39
DFT a FFT
Po pˇredzpracov´ an´ı n´ asleduje pˇrechod do spektr´ aln´ı oblasti diskr´etn´ı Fourierovou transformac´ı, kter´ a je realizov´ ana pomoc´ı algoritmu FFT.
5.4.1
Diskr´ etn´ı Fourierova transformace (DFT)
Pˇri zpracov´ an´ı sign´ al˚ u pomoc´ı ˇc´ıslicov´ ych obvod˚ u se pracuje s koneˇcn´ ymi poˇcty hodnot a to i ve frekvenˇcn´ı oblasti, pˇriˇcemˇz pˇri v´ ypoˇctech se koneˇcn´ y poˇcet vzork˚ u transformace N povaˇzuje u pˇr´ım´e i zpˇetn´e transformace za periodick´ y. Numerick´ ym prostˇredkem pro v´ ypoˇcet spekter ˇcasov´ ych posloupnost´ı je diskr´etn´ı Fourierova transformace (DFT), kterou lze odvodit z Fourierovy transformace spojit´ ych sign´ al˚ u diskretizac´ı v ˇcasov´e i frekvenˇcn´ı oblasti. Plat´ı, ˇze DFT spektrum je vzorkovan´ ym p˚ uvodnˇe spojin´ ym FTD5 spektrem, pˇriˇcemˇz vzorky FTD spektra se odeb´ıraj´ı v hodnot´ ach θ=k
2π , k = 0, ..., N − 1. N
(5.5)
DFT tedy vypoˇcte N hodnot spektra X(k) z N hodnot sign´ alu x(n). Hodnoty spektra z´ısk´ ame pro diskr´etn´ı ekvidistantn´ı hodnoty frekvenc´ı zaˇc´ınaj´ıc´ıh v f = 0 s rozestupem Δf =
1 fs = . NT N
(5.6)
Hodnota Δf b´ yv´ a ˇcasto oznaˇcov´ana jako frekvenˇcn´ı bit.
5.4.2
Definiˇ cn´ı vztahy
Necht’ x0 , ..., xN −1 jsou komplexn´ı ˇc´ısla, potom DFT je difinov´ ana vztahy (5.7) a (5.8) : X(k) =
N −1
xn e−
2πi N
nk
, k = 0, ..., N − 1
(5.7)
n=0 N −1 2π 1 x(n) = X(k)ej N nk , n = 0, ..., N − 1 N
(5.8)
k=0
Vztah (5.7) se naz´ yv´ a pˇr´ım´a transformace, vztah (5.8) se naz´ yv´ a inverzn´ı transformace. V´ ypoˇcetn´ı n´ aroˇcnost DFT pomoc´ı uveden´eho vzathu je n2 . Pomoc´ı algoritmu FFT dos´ ahneme stejn´eho v´ ysledku s ˇcasovou n´ aroˇcnost´ı pouze n.log(n). To znamen´a, ˇze u ´spora v poˇctu operac´ı a tedy i v´ ypoˇctu exponenci´ alnˇe roste s d´elkou transformace a napˇr´ıklad pro v´ ypoˇcet N = 1024 probˇehne FFT zhruba 200x rychleji neˇz pˇri v´ ypoˇctu pomoc´ı definice DFT. 5
FTD je Fourierova transformace diskr´etn´ıho sign´ alu. Spektrum sign´ alu po FTD je spojit´e s periodou fs a
periodick´e. Pro popis t´eto transformace vˇcetnˇe jej´ıch vlastnost´ı lze nal´ezt napˇr´ıklad v [10].
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.4.3
40
Rychl´ a Fourierova transformace (FFT)
FFT je algoritmus v´ ypoˇctu DFT s ˇcasovou n´ aroˇcnost´ı n.log(n) zaloˇzen´ y na metodˇe ’rozdˇel a panuj’. Programov´ an´ı touto metodou vyuˇz´ıv´ a z´akladn´ı vlastnosti rekurze: rekurzivn´ıho dˇelen´ı probl´emu na koneˇcn´ y poˇcet podprobl´em˚ u stejn´eho typu a spojen´ı d´ılˇc´ıch, jiˇz nerekurzivn´ıch, ˇreˇsen´ı pro nalezen´ı ˇreˇsen´ı obecn´eho. Z´ akladn´ı algoritmy FFT jsou navrˇzeny pro d´elku sign´ alu N = 2m , kde m je pˇrirozenn´e ˇc´ıslo. Podm´ınka na N pˇr´ımo souvis´ı s iterativn´ım rozdˇelov´an´ım posloupnosti na posloupnosti poloviˇcn´ı d´elky. Exponenci´ ala ve vztahu (5.7) se naz´ yv´ a ot´ aˇcec´ı ˇcinitel a oznaˇcuje se WN : 2π
WN = e−j N .
(5.9)
Algoritmus m˚ uˇzeme s pomoc´ı ot´ aˇcec´ıho ˇcinitele naznaˇcit v prvn´ı iteraci v´ ypoˇctem: X(k) =
N −1
x(n)WNnk =
n=0
N/2−1
=
x(2n)WN2nk +
n=0
(2n+1)k
x(2n + 1)WN
=
n=0
N/2−1
=
N/2−1
x1 (n)WN2nk +WNk
n=0
N/2−1
x2 WN2nk .
(5.10)
n=0
Rozdˇelen´ım p˚ uvodn´ı N bodov´e posloupnosti na dvˇe posloupnosti d´elky N/2 uˇsetˇr´ıme polovinu operac´ı, nebot’ nam´ısto N 2 vykon´ ame 2(N/2)2 , tj. N 2 /2 operac´ı. Stejn´e u ´spory dosahujeme dalˇs´ım dˇelen´ım sum podle naznaˇcen´eho sch´ematu. Opakovan´ ym rozdˇelov´ an´ım posloupnost´ı6 se dostaneme aˇz k dvoubodov´e DFT7 . Tu vypoˇcteme podle definiˇcn´ıho vztahu. V praxi je algoritmus implementov´ an pomoc´ı tzv. DFT mot´ ylka. Odvozen´ı algoritmu a DFT mot´ ylka lze nal´ezt napˇr´ıklad v [10].
5.5
Detekce z´ akladn´ı periody
Algoritmy detekce z´akladn´ı periody jsou publikov´ any mnoho let a pˇresto ˇze jich existuje velk´e mnoˇzstv´ı, dosateˇcnˇe robustn´ı a pˇresn´ y algoritmus dosud neexistuje. Jedno z moˇzn´ ych rozdˇelen´ı je na algoritmy pracuj´ıc´ı pˇr´ımo v ˇcasov´e oblasti a na algoritmy pracuj´ıc´ı ve frekvenˇcn´ı oblasti. Pro pr´ aci byla zvolena detekce z´akladn´ı periody pomoc´ı autokorelaˇcn´ı funkce s v´ ypoˇctem ve frekvanˇcn´ı oblasti. 6 7
tedy rekurz´ı Kter´ a je, ve shodˇe s t´ım,co bylo ˇreˇceno o metodˇe rozdˇel a panuj, jiˇz nerekurzivn´ı.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
41
´ eˇsnost algoritmu je z´ Uspˇ avisl´ a na pˇredzpracov´ an´ı a postprocessingu, tato problematika bude d´ ale diskutov´ ana.
5.5.1
Pˇ redzpracov´ an´ı, centr´ alni a amplitudov´ e omezen´ı
Vlastn´ımu algoritmu detekce F 0 pˇredch´ az´ı blok, kter´ y zv´ yrazˇ nuje z´ akladn´ı frekvenci. Segmentovan´ y sign´ al s odstranˇenou stˇredn´ı hodnotou je neline´ arnˇe filtrov´ an pouˇzit´ım centr´aln´ıho a amplitudov´eho omezen´ı, kter´e odstranˇeje nˇekter´e nedostatky AFC metody. Tou jsou zejm´ena chyby zp˚ usoben´e ˇcetnost´ı lok´ aln´ıch maxim, za nˇeˇz je odpovˇedn´ a pˇredevˇs´ım formantov´ a struktura ˇreˇcov´eho sign´ alu.
Obr´ azek 5.6: Amplitudov´e a centr´aln´ı omezen´ı sign´ alu pˇred v´ ypoˇctem ACF
Algoritmus centr´ aln´ıho a amplitudov´eho omezen´ı je zaloˇzen na postupu Sondiho a Rabiera (viz [1], [11]). Centr´ aln´ı a amplitudov´e omezen´ı sign´ alu x(t) je moˇzn´e vyj´ adˇrit funkc´ı (5.11) a pr˚ ubˇehem obr. 5.6. ⎧ ⎪ ⎪ ⎨ +1 c(x(k)) = 0 ⎪ ⎪ ⎩ −1
pro x(k) > h pro x(k) ≤ |h|
(5.11)
pro x(k) < −h
Pˇri aplikaci t´eto metody se pˇredpokl´ ad´ a pr˚ uchod sign´ alu doln´ı propust´ı. Pro prvn´ı a tˇret´ı ˇc´ast mikrosegmentu o velikosti 15 ms se naleznou maxim´aln´ı hodnoty IP K1 a IP K2, z nichˇz se urˇc´ı omezovac´ı u ´roveˇ n h [1], [11]: h = p. min {IP K1; IP K2} ,
(5.12)
kde p nab´ yv´ a hodnot 0,6 aˇz 0,8. ACF je pak urˇcov´ana z takto transformovan´eho sign´ alu.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.5.2
42
Vlastnosti autokorelaˇ cn´ı funkce
K popisu n´ ahodn´ ych sign´ al˚ u v ˇcasov´e oblasti se pouˇz´ıv´ a korelaˇcn´ı a autokorelaˇcn´ı funkce. Autokorelˇcn´ı funkce nese informaci o souvislosti hodnot n´ ahodn´eho sign´ alu x(t) pro t = t0 s hodnotou t´ehoˇz sign´alu v ˇcase t = t0 + dt. Funkce vyjadˇruje souvislost mezi dvˇema ˇrezi n´ ahodn´eho sign´ alu. Funkce popisuj´ıc´ı souvislost hodnot t´ehoˇz procesu se naz´ yv´ a autokorelaˇcn´ı. Statistickou z´avislost hodnot dvou r˚ uzn´ ych proces˚ u popisuje vz´ ajemn´ a korelaˇcn´ı funkce. Uveden´e funkce jsou momenty druh´eho ˇra´du a jako takov´e mohou b´ yt poˇc´ıt´ any bud’ jako pˇr´ısluˇsn´ a stˇredn´ı hodnota ze souboru realizac´ı (5.14), nebo jako stˇredn´ı hodnota v ˇcase (5.15), (5.16). Korelaˇcn´ı funkci dvou sign´ al˚ u x(t), y(t) zaˇc´ıme Rxy , autokorelaˇcn´ı funkci sign´ alu x(t) znaˇc´ıme Rxx [10].
5.5.3
V´ ypoˇ cet autokorelaˇ cn´ı funkce
D´ ale uveden´e vzorce pro v´ ypoˇcet autokorelaˇcn´ı funkce se budou, vzhledem k povaze zpracov´avan´eho sign´ alu, vztahovat pouze k ˇc´ıslicov´emu lok´ alnˇe stacion´arn´ımu sign´ alu x(n). N´ ahodn´e lok´ alnˇe stacion´arn´ı sign´ aly diskr´etn´ı v ˇcase jsou v ˇcasov´e oblasti pops´ any autokorelaˇcn´ı funkc´ı (5.13), kter´ a vyjadˇruje souvislost mezi ˇrezy n´ ahodn´eho sign´ alu v ˇcasov´ ych indexech n a m. Rxx (n, m) = E[x(n)x(m)]
(5.13)
Pˇri zpracov´ an´ı uvaˇzujeme tzv. kr´atkodobou autokorelaˇcn´ı funkci [1], tu vzhledem k povaze sign´alu8 , povaˇzujeme za nez´avislou na hodnot´ ach index˚ u n a m, ale pouze na jejich rozd´ılu r = n − m. Autokorelaˇcn´ı funkci lze potom pro dan´ y ˇreˇcov´ y segment uvaˇzovat jako funkci jedn´e promˇenn´e r Rxx (r) = E[x(n)x(n + r)].
(5.14)
Pˇri v´ ypoˇctu pracujeme s centrovan´ ym sign´ alem x(n), kter´ y byl z´ısk´ an odeˇctem stˇredn´ı alu. Pro v´ ypoˇcet lze uˇz´ıt vztah (5.15) pro vych´ ylen´ y odhad, kter´ y je n´ asoben hodnoty9 od sign´ troj´ uheln´ıkov´ ym oknem. N −r 1 x(n)x(n + r). Rxx (r) = N n=1
8 9
jiˇz mnohokr´ at zmiˇ novan´ a lok´ aln´ı stacionarita pak je hodnota autokorealˇcn´ı funkce rovna autokovariaˇcn´ı
(5.15)
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
43
Nevych´ ylen´ y odhad dostaneme pˇri v´ ypoˇctu vztahem N −r 1 Rxx (r) = x(n)x(n + r) N −r
(5.16)
n=1
ylen´e a tento odhad byl V praxi se z d˚ uvodu vˇetˇs´ı numerick´e stability10 vol´ı odhady vych´ tak´e pouˇzit. V´ ypoˇcet ACF je prov´ adˇen ve spektr´ aln´ı oblasti podle vztahu (5.17).
5.5.4
Detekce z´ akladn´ı periody ve frekvenˇ cn´ı oblasti
V´ ypoˇcet z´akladn´ı periody je zaloˇzen na detekci periodicity pomoc´ı autokorelaˇcn´ı funkce. Autokorelaˇcn´ı funkci m˚ uˇzeme vyj´adˇrit jako zpˇetnou Fourierovu transformaci v´ ykonov´eho spketra podle obr. 5.7. Algoritmus je zaloˇzen na Wiener - Chniˇcinovˇe vztahu v diskr´etn´ı formˇe. Pro v´ ypoˇcet autokorelˇcn´ı funkce pak plat´ı vztah (5.17). Z p˚ uvodn´ı ˇcasov´e zloˇzitosti n2 se dost´av´ ame na sloˇzitost n.log(n).
Obr´ azek 5.7: V´ ypoˇcet F0
pomoc´ı v´ ypoˇctu autokorelaˇcn´ı funkce ve
spektr´ aln´ı oblasti
Rxx (r) = IF F T [(X(kΔf )).(X(kΔf ))],
Obr´ azek 5.8: Urˇcen´ı F0 z pr˚ ubˇehu autokorelaˇcn´ı funkce 10
Odvozen´ı tohoto tvrzen´ı lze nal´ezt napˇr´ıklad v [3].
(5.17)
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE kde vztah xΔf =
k 2N T
44
souvis´ı s definic´ı DFT. Samotn´e urˇcen´ı F 0 z pr˚ ubˇehu autokorelaˇcn´ı
funkce naznaˇcuje obr. 5.8. Po v´ ypoˇctu a normalizaci autokorelaˇcn´ı funkce je urˇceno jej´ı maximum a pokud je toto maximum vˇetˇs´ı neˇz nastaven´ y pr´ ah znˇelosti (v rozsahu 0,3 aˇz 0,6 Rxx (0)) je segment oznaˇcen za znˇel´ y a z polohy maxima je urˇcena F 0 podle vzorce fs , (5.18) m kde fs je vzorkovac´ı frekvence a m je maximum autokorelaˇcn´ı funkce. Pˇri urˇcov´an´ı maxima i F0 =
znˇelosti nen´ı br´ an v potaz cel´ y pr˚ ubˇeh autokorelaˇcn´ı funkce obsahuj´ıc´ı maximum v bodˇe Rxx (0), ale je vynech´ ano M prvn´ıch vzork˚ u, kter´e mohou b´ yt vˇetˇs´ı neˇz pro n´ as zaj´ımav´e maximum. Postup dobˇre dokumentuje obr. 5.8. M je tak dalˇs´ı voliteln´ a konstanta. Hodnota M v´ yraznˇe ovlivˇ nuje citlivost detekce a to jak na slab´e znˇel´e sign´aly tak na hluk z okol´ı, kter´ y m˚ uˇze zp˚ usobit poruchy detekce F 0. Optim´ aln´ı urˇcen´ı t´eto konstanty nen´ı jednoduch´e a z´aleˇz´ı na nastaven´ı jin´ ych konstant, pˇredevˇs´ım parametr˚ u pˇredzpracov´ an´ı. Hled´ an´ı konstanty doporuˇcuji zaˇc´ıt na hodnotˇe
5.5.5
fs 500
.
Postprocessing
´ eˇsnost algoritmu je tak´e z´avisl´ Uspˇ a na koneˇcn´em vyhodnocen´ı F 0. Pokud by do hlasov´eho pole byly vyneseny pˇr´ımo hodnoty urˇcen´e autokorelaˇcn´ı funkc´ı, byl by poˇcet nov´ ych bod˚ u hlasov´eho pole aˇz 20 za sekundu s velk´ ym rozptylem a to jak v rozmez´ı energie tak v rozmez´ı F 0. Tento jev je zp˚ usoben r˚ uzn´ ymi nestabilitami v hlasov´em sign´alu, napˇr´ıklad n´ abˇehem na dan´ y t´ on, kr´ atkodob´ ym v´ ypadkem, zachraptˇen´ım apod. Jev znehodnocuje mˇeˇren´ı a snaˇz´ıme se mu pˇredch´ azet. Urˇcen´e parametry proto nejsou jeˇstˇe zobrazov´any hlasov´ ym polem, ale pr˚ ubˇeh energie je filtrov´ an pomoc´ı integr´ atoru a kumulovan´eho souˇctu. Ve filtrovan´em sign´alu jsou hled´ ana lok´ aln´ı maxima. Teprve ta urˇcuje platn´e hodnoty F 0, kter´e jsou po pˇetibodov´e medi´anov´e filtraci, odstraˇ nuj´ıc´ı poruchy v pr˚ ubˇehu11 , zobrazov´ ana hlasov´ ym pole. Pˇri pouˇzit´ı tohoto algoritmu je chov´ an´ı hlasov´eho pole podobn´e chov´an´ı akustick´ ym mˇeˇriˇc˚ u energie a frekvence t´ onu a poˇcet zobrazovan´ ych hodnot je jiˇz omezen max. do 3 za sekundu a odpov´ıdaj´ı ust´ alen´ ym ˇc´astem sign´alu.
5.6
V´ ypoˇ cet energie ˇ reˇ cov´ eho sign´ alu
Energie ˇreˇcov´eho sign´ alu je druh´ ym akustick´ ym parametrem vyn´ aˇsen´ ym do hlasov´eho pole. 11
zp˚ usoben´e formantovou strukturou samohl´ asek, pˇr´ıpadnˇe detekc´ı vyˇsˇs´ı harmonick´e na m´ısto z´ akladn´ıho t´ onu
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.6.1
45
A v´ ahov´ an´ı
Hlasitost je m´ıra subjektivn´ıho vjemu intenzity zvuku. Vztah mezi hlasitost´ı H a intenzitou zvuku I z´avis´ı na kmitoˇctu a pro t´ ony o kmitoˇctu 1000 Hz je urˇcena vzorcem H = 10. log
I . I0
(5.19)
Mezin´ arodnˇe stanoven´a referenˇcn´ı prahov´ a intentita je I0 = 10−12 W m−2 . Hlasitost t´ on˚ u jin´ ych kmitoˇct˚ u byla stanovena subjektivn´ım porovn´ av´ an´ım s t´onem 1000 Hz. V´ ysledkem byly kˇrivky (hladiny) stejn´e intenzity Ln a kmitoˇctovˇe nez´avisl´ a jednotka nazvan´ a fon, kter´ a je na kmitoˇctu 1000Hz rovna 1dB. Od hladin hlasitosti jsou odvozov´ any v´ ahov´e a transformaˇcn´ı funkce pˇri zpracov´ an´ı ˇreˇcov´eho sign´ alu.
Obr´ azek 5.9: A v´ ahov´ an´ı (modr´ a), B (ˇzlut´ a), C (ˇcerven´a), D v´ ahov´ an´ı (ˇcern´a)
Pˇr´ıkladem je tzv. A v´ ahov´ an´ı12 , kter´e reprezentuje frekvenˇcn´ı z´avislost lidsk´eho sluchov´eho vjemu. Toto v´ ahov´ an´ı bylo podle specifikace poˇzadavk˚ u uˇzito v aplikaci. A v´ ahov´ an´ı je provedeno filtrac´ı ve frekvenˇcn´ı oblasti a pouˇzit´ y vztah je (3.75) z [29]. Pr˚ ubˇeh v´ ahov´ ych kˇrivek A, B, C a D je na obr. 5.9. Kapitola je zpracov´ ana podle infromac´ı uveden´ ych v [27], [29], [28] a [30], odkud byla tak´e pˇrevzat obr. 5.9. 12
V´ ahov´ ych kˇrivek je definov´ ano nˇekolik a nejzn´ amˇejˇs´ı se znaˇc´ı p´ısmeny A, B, C atd. Jejich pouˇzit´ı se liˇs´ı podle
typu mˇeˇren´ı. V´ıce informac´ı lze nal´ezt v [29], [30].
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.6.2
46
V´ ypoˇ cet energie
Energii periodick´eho diskr´etn´ıho sign´ alu lze vypoˇc´ıtat bud’ v ˇcasov´e oblasti nebo ve spektr´ aln´ı oblasti podle Parcevalova vztahu
e=
N −1
|x(n)|2 =
n=0
N −1 1 |X(k)|2 . N
(5.20)
n=0
Pro urˇcen´ı hlasov´eho pole pacienta je nutn´e intenzitu hlasu uv´ adˇet v odpov´ıdaj´ıc´ıch jednotk´ ach, pro pˇrevod do tˇechto jednotek slouˇz´ı vztah edB = 10.log(e(T )) + Ke ,
(5.21)
kde edB je hodnota intenzity v decibelech a e(T ) je hodnota intenzity spoˇcten´a podle vztahu (5.20). Konstantu Ke je tˇreba kalibrovat s referenˇcn´ım mˇeˇriˇcem ud´avaj´ıc´ım intezitu v dB. V aplikaci je moˇzn´e tuto hodnotu nastavovat a tak prov´est kalibraci.
5.6.3
Integrace a klouzav´ y pr˚ umˇ er
Jak jiˇz bylo ˇreˇceno, jsou okamˇziky, v nichˇz jsou akustick´e parametry ˇreˇci oznaˇceny za platn´e, urˇceny polohou lok´ aln´ıch maxim sign´ alu filtrovan´em integr´atorem a klouzav´ ym pr˚ umˇerem. Parametrem jsou zde poˇcet bod˚ u klouzav´eho pr˚ umˇeru N ve vztahu (5.20) a koeficient integr´ atoru k 13 vystupuj´ıc´ı ve vztahu (5.20). x(n) = (1 − k)x(n) + kx(n − 1)
x(n) =
1 N
n
x(i)
(5.22)
(5.23)
i=n−(N −1)
Pˇri urˇcov´an´ı okamˇzik˚ u platn´e F 0 a energie pomoc´ı navrˇzen´e filtrace je tˇreba db´ at zpoˇzdˇen´ı FIR filr˚ u14 , kter´e pro ˇra´d filtru M je odeˇctu platn´e F 0
posunout15 .
M 2
. O tuto hodnotu je tˇreba se v sign´ale pˇri
Po experimentech se uk´ azalo jaho vyhovuj´ıc´ı nastaven´ı konstanty
integr´ atoru k = 0, 8 a poˇctu bod˚ u klouzav´eho pr˚ umˇeru M = 10. Pr˚ ubˇeh energie ˇreˇcov´eho sign´ alu a v´ ysledek filtrace ilustruje obr. 5.10. Ve filtrovan´em sign´ alu jsou detekov´ ana maxima, kter´ a urˇcuj´ı platn´e hodnoty energie a F 0. V´ ybˇer hodnot je vˇsak posunut doleva o zpoˇzdˇen´ı filtru
M 2
. Vybran´ a hodnota F 0 nen´ı br´ ana pˇr´ımo, ale jako
medi´an nejbliˇzˇs´ıch pˇeti hodnot. 13
Konstanta k mus´ı b´ yt z d˚ uvodu stability filtru menˇs´ı neˇz 1. kter´ ym je pouˇzit´ y filtr typu klouzav´ y pr˚ umˇer 15 Enerige je odeˇc´ıt´ ana z integrovan´eho pr˚ ubˇehu. 14
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
Obr´ azek 5.10: Hled´ an´ı lok´ aln´ıch maxim filtrace pr˚ ubˇehu energie
Obr´ azek 5.11: Hled´ an´ı lok´ aln´ıch maxim filtrace pr˚ ubˇehu energie - hl. pole
47
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
48
Z´akladn´ım nedostatkem tohoto algoritmu je, ˇze pokud bude pacient bˇehem vyˇsetˇren´ı mˇenit t´ on hlasu bezezmˇeny jeho energie, nebudou detekov´ any vˇsechny hodnoty F 0, kter´e se v pr˚ ubˇehu fonace vyskytly. V praxi vˇsak plat´ı, ˇze pokud fonace na dan´em t´onu trv´ a d´ele, je doprov´ azen pˇrechod na jin´ y t´ on i zmˇenou energie. T´ım se ve filtrovan´em sign´alu vyskytnou maxima, kter´ a se ’postaraj´ı’ o detekci pˇr´ısluˇsn´e hodnoty F 0. V praxi se toto omezen´ı plynouc´ı z pouˇzit´eho algoritmu projev´ı nutnost´ı fonace kaˇzd´eho t´ onu alespoˇ n jednu sekundu. Alternativy k navˇzen´emu ˇreˇsen´ı jsou diskutov´ any v kapitole 5.8.3.
5.7
Statistick´ e charakteristiky hlasov´ eho pole
V aplikaci jsou implementov´ any v´ ypoˇcty pouze z´akladn´ıch statistick´ y charakteristik hlasov´eho pole. Implementace dalˇs´ıch charakteristik vyplyne pravdˇepodobnˇe po dalˇs´ı specifikaci poˇzadavk˚ u.
5.7.1
Rozsah hlasov´ eho pole
Obr´ azek 5.12: Z´akladn´ı statistiky hlasov´eho pole
Je zkoum´an rozsah hlasov´eho pole, tj. minim´ aln´ı a maxim´ aln´ı hodnota energie a F 0 a jejich rozd´ıly. Pˇred urˇcen´ım tˇechto charakteristik je samozˇrejmˇe tˇreba peˇclivˇe odstranit chybnˇe urˇcen´e body pole, kter´e neodpov´ıdaj´ı vyˇsetˇrovan´emu hlasu. Ty mohou statistick´e charakteristiky zcela znehodnotit. Formul´ aˇr s charakteristikami je na obr. 5.12. SP Lmin a SP Lmax odpov´ıd´ a minim´ aln´ı a maxim´aln´ı hodnotˇe energie, Fmin a Fmax odpov´ıd´ a minim´ aln´ı a maxim´ aln´ı hodnotˇe F 0. ΔSP L a ΔF odpov´ıd´ a rozd´ılu maxim´ aln´ı a minim´ aln´ı hodnoty F 0 a energie.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
5.7.2
49
Histogramy ˇ cetnosti
Histogram je sloupcov´ y graf, v nˇemˇz kaˇzd´e tˇr´ıdˇe histogramu pˇriˇrad´ıme jej´ı ˇcetnost. Pro hlasov´e pole byly implementov´ any histogramy dva. Pˇr´ıklad histogram˚ u z aplikace m˚ uˇzeme vidˇet na obr. 5.13.
Obr´ azek 5.13: Histogramy ˇcetnosti
Osa x na vodorovn´em histogramu odpov´ıd´ a frekvenci (t´ onu). Hodnoty v histogramu pro jist´ y t´ on jsou souˇctem vˇsech bod˚ u hlasov´eho pole, kter´e se pro dan´ y t´ on v poli vyskytuj´ı. Osa y na vertik´ aln´ım histogramu odpov´ıd´ a energii v dB a hodnoty histogramu jsou souˇctem vˇsech bod˚ u hlasov´eho pole, kter´e se pro danou energii v poli vyskytuj´ı.
5.8
Alternativn´ı algoritmy
DSP algoritmy jsou nejn´ aroˇcnˇejˇs´ı ˇc´ast´ı aplikace. Navrˇzen´a ˇreˇsen´ı nejsou jedin´ a moˇzn´ a a ani ide´ aln´ı a m˚ uˇzeme uvaˇzovat o alternativn´ıch algoritmech. Ty sice nebyly bˇehem pr´ ace odzkouˇseny, ale o jejich pouˇzit´ı, pˇr´ıpadnˇe kombinaci se st´avaj´ıc´ımi, uvaˇzujeme do dalˇs´ıch verz´ı.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
50
Alternativn´ı algoritmy m´ a smysl diskutovat v pˇr´ıpadˇe v´ ypoˇctu F 0 a hled´ an´ı stabiln´ıch u ´sek˚ u hlasu16 . S v´ ypoˇctem energie hlasov´eho sign´ alu se spokoj´ıme, zde alternativy vpodstatˇe neexistuj´ı. N´ asleduje kr´ atk´ y popis dvou vybran´ ych algoritm˚ u pro detekci ˇci zlepˇsen´ı detekce F 0. Z´ajemci o dalˇs´ı algoritmy, vˇcetnˇe podrobn´eho popisu zde naznaˇcen´ ych, naleznou v´ıce informac´ı v [1], [8] a [3].
5.8.1
Cepstr´ aln´ı anal´ yza pro urˇ cen´ı z´ akladn´ıho t´ onu
Princip cepstr´ aln´ı anal´ yzy vych´ az´ı z u ´vahy, ˇze hlas je d´an konvoluc´ı buzen´ı a impulsn´ı charakteristiky filtru. Pokud jsou dva sign´ aly konvoluov´ any, je tˇeˇzk´e prov´est dekonvoluci. M˚ uˇzeme se o to pokusit tak, ˇze na urˇcit´em m´ıstˇe zavedeme do transformac´ı nelinearitu, kter´ a dok´ aˇze pˇrev´est souˇcin na souˇcet. Komponenty souˇctu pak lze jednoduˇse oddˇelit (nulov´ an´ım v cepstru). Cepstr´aln´ı koeficienty lze z´ıskat ze vztahu
c(m) = F −1 ln |F [s(n)]|2 ,
(5.24)
kde F je DFT, pˇr´ıpadnˇe iDFT, s(n) je ˇreˇcov´ y sign´ al a c(m) jsou koeficienty cepstra. V cepstr´aln´ıch koeficientech lze oddˇelit ˇc´ast koeficient˚ u odpovˇedn´ ych za hlasov´ y trakt (n´ızk´e indexy) od ˇc´asti zodpovˇedn´e za buzen´ı a tedy i z´ akladn´ı t´ on (vyˇsˇs´ı indexy). Pouˇzit´ı metody je naznaˇceno napˇr´ıklad v [8]. Definici a odvozen´ı metody lze nal´ezt napˇr´ıklad v [8], [3].
5.8.2
Vyuˇ zit´ı chyby line´ arn´ı predikce
Jedn´ a se o pˇredzpracov´ an´ı vhodn´e nejen pro pouˇzitou metodu ACF, ale lze ji pouˇz´ıt i pro dalˇs´ı algoritmy detekuj´ıc´ı F 0. Chybu line´ arn´ı predikce e(n) dostaneme v´ ypoˇctem
e(n) = s(n) +
P
ai s (n − i).
(5.25)
i=1
Kde s(n) je zpracov´ avan´ y sign´ al a ai jsou koeficienty predik´ atoru. Snaˇz´ıme se pˇredpovˇedˇet nt´ y vzorek sign´ alu z P pˇredchoz´ıch. V´ yhodou t´eto metody pˇredzpracov´ an´ı je, ˇze sign´al e(n) jiˇz neobsahuje informaci o formantech, kter´e n´ am tak ˇcasto ˇcinila pot´ıˇze, a je proto pro urˇcov´an´ı F 0 v´ yhodnˇejˇs´ı. 16
V pr´ aci ˇreˇseno pomoc´ı filtrace energie integr´ atorem a klouzav´ ym pr˚ umˇerem.
´ ˇ ´ KAPITOLA 5. ALGORITMY PRO VYPO CET HLASOVEHO POLE
51
Je vˇsak tˇreba urˇcit koeficienty ai pro vhodn´ y model17 line´ arn´ı predikce a metoda je celkem ˇcasovˇe n´ aroˇcnˇejˇs´ı. V´ıce se lze o t´eto metodˇe doˇc´ıst v [1].
5.8.3
Detekce stabiln´ıch u ´ sek˚ u fonace
Zat´ımco pro v´ ypoˇcet F 0 existuje ˇrada d˚ umysln´ ych a relativnˇe dlouho zn´ am´ ych18 algoritm˚ u, algoritmus pro detekci stabiln´ıch u ´sek˚ u hlasu, kter´ y by byl vhodn´ y pro naˇs´ı u ´lohu publikov´ an nebyl. Z´akladn´ı nedostatky pouˇzit´e metody hled´ an´ı stabiln´ıch u ´sek˚ u fonace byly diskutov´ any v kapitole 5.4 a 5.5. Zopakujme, ˇze algoritmus je pro aplikaci dostaˇcuj´ıc´ı, ale r´ adi bychom vylepˇsili nˇekter´e jeho vlastnosti. Lze oˇcek´avat, ˇze by ke zlepˇsen´ı detekce rychle se mˇen´ıc´ıch u ´sek˚ u F 0 pˇri kter´ ych nedoch´ az´ı ke zmˇenˇe energie, mohlo v´est: 1. adaptivn´ı nastavov´ an´ı parametr˚ u filtr˚ u 2. detekce n´ahl´ ych zmˇen v pr˚ ubˇehu F 0 3. sledov´ an´ı ’vybran´ ych trend˚ u’ F 0 jejichˇz v´ yskyt by vedl k detekci v´ıce hodnot F 0 Jednoduch´e vynulov´ an´ı integr´ atoru pˇri n´ ahl´e zmˇenˇe F 0 o pˇredem nastavenou hodnotu k lepˇs´ım parametr˚ um algoritmu nevedlo.
17
V´ ybˇer vhodn´eho modelu line´ ar´ an´ı predikce je naznaˇcen v pˇredchoz´ı kapitole. Z´ ajemci naleznou v´ıce podrob-
nost´ı, vˇcetnˇe popisu model˚ u a v´ ypoˇctu koeficient˚ u, napˇr´ıklad v [4]. 18 ˇ Z´ adn´ y algoritmus pro detekco F 0 nen´ı vˇsak pokl´ ad´ an za zcela spolehliv´ y.
Kapitola 6
Implementace a testov´ an´ı aplikace Aplikace byla implementov´ ana v souladu s n´ avrhem a specifikac´ı uvedenou v kapitole 4. Pˇri v´ yvoji aplikace musel b´ yt br´ at v potas iterativn´ı charakter v´ yvoje a bylo tˇreba se k jednotliv´ ym f´ az´ım specifikace a n´avrhu vracet, ˇcasto pˇr´ımo na ˇz´adost zadavatele. Nˇekter´e poˇzadavky, kter´e se pro aplikaci uk´ azaly z´asadn´ı, nebyly v prvn´ıch pokusech o specifikaci v˚ ubec zaˇclenˇeny, nebo byly povaˇzov´any za okrajov´e. To sice v´ yvoj aplikace znaˇcnˇe ztˇeˇzovalo, ale bylo to v souladu s prac´ı, kter´ a byla sp´ıˇse experiment´aln´ıho charakteru. Ot´ azka co vˇse a za jak´ ych podm´ınek jsme chopni zprovoznit byla z velk´e ˇc´asti zodpovˇezena. Nikoli vˇsak vyˇcerp´ana a nad´ ale z˚ ust´ av´ a aktu´ aln´ı pro dalˇs´ı verze aplikace. Vˇcetnˇe napˇr´ıklad pouˇzit´ı jin´ ych algoritm˚ u detekce F0.
6.1
Referenˇ cn´ı program
Jako pˇribliˇzn´ a reference slouˇzil program pro vyˇsetˇren´ı hlasov´eho pole pouˇz´ıvan´ y v souˇcasn´e dobˇe na Foniatrick´e klinice 1. LF Univerzity Karlovy. Od poˇc´atku vˇsak bylo pl´ anov´ ano tento program v kvalitˇe urˇcovan´eho hlasov´eho pole pˇrekonat. A to jak v pˇresnosti detekovan´e F01 tak ke stabilitˇe detekovan´ ych akustick´ ych parametr˚ u2 . Program byl do jist´e f´ aze v´ yvoje uˇziteˇcn´ y, ale k specifikaci a ovˇeˇren´ı n´ aroˇcnˇejˇs´ıch poˇzadavk˚ u jako reference slouˇzit nemohl.
6.2
N´ aroˇ cn´ eˇ c´ asti implementace
Tˇeˇzkosti pˇri implementaci byly r˚ uzn´eho charakteru. Mnoh´e znich byly zp˚ usobeny t´ım, ˇze sice bylo relativnˇe dobˇre zn´amo co implementovat, ale jak a jak´ ymi prostˇredky na poˇc´atku zn´ amo 1 2
Hlavnˇe, jak jiˇz bylo mnohokr´ at ˇreˇceno, k ˇcast´emu v´ yskytu harmonick´ ych a poruch v detekci F0. To jiˇz bylo, vˇcetnˇe navrˇzen´eho ˇreˇsen´ı diskutov´ ano v kap. 5.5 a 5.6.
52
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
53
nebylo. Cesta k vhodn´ ym prostˇredk˚ um3 byla n´ aroˇcn´ a a zat´ıˇzen´a nˇekolika slep´ ymi cestami, kter´e v´ yvoj znaˇcnˇe prodlouˇzily. Jednou z nejn´ aroˇcnˇejˇs´ıch f´ az´ı v´ yvoje bylo nalezen´ı spr´ avn´ ych konstant4 . Pˇred jejich urˇcen´ım nebylo moˇzn´e ˇr´ıci, v kter´e f´ azi v´ yvoje algoritmu pro detekci F0 jsme a zda nen´ı nutn´e uvaˇzovat o pouˇzit´ı jin´ ych algoritm˚ u. N´aroˇcn´ a problematika, jej´ıˇz ˇreˇsen´ı na n´ as z velk´e ˇc´asti teprv´e ˇcek´a, je problematika mikrofon˚ u, zvukov´ ych karet a jejich testov´ an´ı. Jde pˇredevˇs´ım o nastaven´ı konstant v z´ avislosti na pouˇzit´em mikrofonu, frekvenˇcn´ı charakteristiky mikrofon˚ u a zvukov´ ych karet atd.
6.3
Knihovna DSProcessing
Pˇri v´ yvoji aplikace byla vytvoˇrena C# knihovna s nˇekter´ ymi z´akladn´ımi algoritmy pro digit´ aln´ı zpracov´ an´ı sign´ al˚ u. Jde pˇredevˇs´ım o • algoritmy pro transformaci sign´ alu, tj. DFT, FFT, iFFT a iDFT • algoritmy pro pr´ aci s LTI syst´emy v ˇcasov´e oblasti, tj. pˇredevˇs´ım konvoluce a filtrace • z´akladn´ı numerick´e algoritmy pro pr´ aci s vektory (zn´ ame napˇr´ıklad z Matlabu) • z´akladn´ı statistick´e algoritmy • funkce pro detekci F0 • a dalˇs´ı ˇ ast knihovny byla uvolnˇena pod licenc´ı GNU/GPL. Domovsk´e str´anky projektu jsou C´ dsprocessing.sourceforge.net.
6.4
On-line modul
Druhou knihovnou, kter´ a musela b´ yt vyvinuta, byl modul pro on-line sbˇer dat ze zvukov´e karty. Ten je zaloˇzen na rozhran´ı waveOut a waveIn, coˇz je pomˇernˇe star´e5 , n´ızko´ urovˇ nov´e API Windows pro pˇr´ıstup k bufferu zvukov´e karty. API je souˇc´ast´ı knihovny winmm.dll, kter´ a je podporov´ ana i v nejnovˇejˇs´ıch Windows Vista. Protoˇze jde o n´ızko´ urovˇ nov´e API, musely b´ yt naps´ any vlastn´ı tˇr´ıdy, kter´e p˚ uvodn´ı API zaobaluj´ı. 3
Tj. k volbˇe vhodn´eho v´ yvojov´eho prostˇred´ı, vhodn´eho programovac´ıho jazyka, dosatˇcuj´ıc´ıho zp˚ usobu on-line
vykreslov´ an´ı a zpracov´ an´ı apod. 4 Jejich v´ yznam, vztahy v kter´ ych vystupuj´ı a pˇribliˇzn´e urˇcen´ı je diskutov´ ano v kapitole 5. 5 ale spolehliv´e!
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
54
ˇ asteˇcnˇe bylo zapoˇcato s druhou implementac´ı on-line modulu zaloˇzenou na DirectC´ Sound. Ta zat´ım nen´ı dokonˇcena a motivac´ı je sp´ıˇse tuto technologii odzkouˇset, pˇr´ıpadnˇe zachovat kompatibilitu i do budoucnosti6 .
Obr´ azek 6.1: Obr´ azek z´aznamn´ıku
On-line modul pouˇz´ıv´ a podformul´ aˇr hlavn´ıho formul´ aˇre nazvan´ y RecorderForm.cs obr. 6.1, kter´ y se star´a o komunikaci s on-line modulem a spr´ avu uloˇzen´ ych dat, tj. uloˇzen´ı do souboru a smaz´an´ı z pamˇeti. Zdrojov´e k´ody on-line modulu nejsou zat´ım uvolˇ neny.
6.5
Problematika re´ aln´ eho ˇ casu
Pˇri implemetaci aplikace muselo b´ yt poˇc´ıt´ ano s problematikou re´ aln´eho ˇcasu. Sign´ al z mikrofonu je sn´ım´an po bufferech, jejichˇz velikost byla experiment´ alnˇe zvolena na 0.35s hlasov´eho sign´ alu. Naplnˇen´ı bufferu vyvol´ av´ a ud´ alost, kter´ a je obslouˇzena v hlavn´ım formul´ aˇri aplikace. Data jsou zkop´ırov´ ana z bufferu do intern´ı promˇenn´e aplikace a d´ ale zpracov´ana popsan´ ymi algoritmy DSP. Zpracov´ an´ı tak prob´ıh´ a cyklicky: naplnˇen´ı bufferu vyvol´ a ud´ alost, buffer je zkop´ırov´ an, nakonec jsou urˇceny body hlasov´eho pole. Podm´ınka pro pr´ aci v re´aln´em ˇcase je, aby vˇsechny operace od kop´ırov´ an´ı z bufferu po v´ ypoˇcet akustick´ ych parametr˚ u ˇreˇci a jejich zobrazen´ı a reˇzie operaˇcn´ıho syst´emu, probˇehlo v dobˇe, kter´ a je kratˇs´ı neˇz doba pro zaplnˇen´ı bufferu zvukov´e karty, podle vztahu tDSP + tdraw + tr + tost. < tbuf f er ,
(6.1)
kde tbuf f er je doba mezi obsluhami bufferu zvukov´e karty, tDSP je ˇcasov´a n´ aroˇcnost DSP 6
Pokud by byla v dalˇs´ıch verz´ıch Windows knihovna winmm.dll vynech´ ana. Naproti tomu s podporou Direct-
Sound m˚ uˇzeme poˇc´ıtat i nad´ ale.
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
55
algoritm˚ u, tdraw je doba potˇrebn´ a pro vykrelsn´ı hlasov´eho pole, tr je doba reˇzie7 , tost je doba vykon´ an´ı m´enˇe n´ aroˇcn´ ych operac´ı. Nejvˇetˇs´ı probl´em je se zajiˇstˇen´ım parametru tr , nebot’ z´aleˇz´ı na ˇcinnosti operaˇcn´ıho syst´emu8 a m˚ uˇze b´ yt znaˇcnˇe variabiln´ı. Windows nejsou9 operaˇcn´ım syst´emem re´aln´eho ˇcasu a jedin´ ym moˇzn´ ym ˇreˇsen´ım je dostateˇcn´ a rezerva v n´ avrhu DSP algoritmu, v´ ykonu poˇc´ıtaˇce a v omezen´ı poˇctu spuˇstˇen´ ych u ´loh. Aplikace mus´ı b´ yt spuˇstˇena ve vl´ aknˇe s vysokou prioritou, nebot’ mnoˇzstv´ı operaˇcn´ım syst´emem pˇridˇelen´eho ˇcasu z´aleˇz´ı na prioritˇe, kterou m´ a kaˇzd´e vl´akno pˇridˇelenou.
6.6
Kartot´ eka pacient˚ u a datab´ aze vyˇ setˇ ren´ı
Ve shodˇe se specifikac´ı poˇzadavk˚ u a v´ ysledc´ıch datab´ azov´eho n´ avrhu z kapitoly 4 byla implementov´ana datab´ azov´a ˇc´ast. Podle n´ avrhu bylo db´ ano na zajiˇstˇen´ı bezpeˇcnosti osobn´ıch u ´daj˚ u v datab´ azi a integritu dat.
Obr´ azek 6.2: Formul´ aˇr z kartot´eky pacient˚ u 7
Pˇredevˇs´ım pˇrep´ın´ an´ı kontext˚ u, pˇred´ an´ı procesorov´eho ˇcasu jin´ ym aplikac´ım atd. Z´ aleˇz´ı pˇredevˇs´ım na n´ aroˇcnosti a poˇctu dalˇs´ıch souˇcasnˇe bˇeˇz´ıc´ıch aplikac´ı. 9 Bez dalˇs´ıch komerˇcn´ıch RT modul˚ u, kter´e lze doinstalovat. 8
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
56
Nem´enˇe d˚ uleˇzit´ y byl n´ avrh formul´ aˇr˚ u, kter´e propojuj´ı aplikaci s datab´ az´ı. Pˇri jejich n´ avrhu bylo db´ ano na maxim´ aln´ı jednoduchost a pˇrehlednost a z´ aroveˇ n na kontrolu korektnosti vyplnˇen´ ych dat. Formul´ aˇr, kter´ y l´ekaˇr vyplˇ nuje pˇri zakl´ ad´ an´ı nov´e diagn´ ozy m˚ uˇzeme vidˇet na obr. 6.210 . Pro generov´ an´ı tiskov´eho souboru byla pouˇzita open source knihovna iTextSharp. V´ ystupem je PDF soubor s diagn´ ozou, kter´ y lze uloˇzit i vytisknout. Na obr. 6.3 je pˇrihlaˇsovac´ı formul´ aˇr do datab´ aze, kde mus´ı l´ekaˇr vyplnit spr´ avn´e heslo.
Obr´ azek 6.3: Pˇrihlaˇsovac´ı formul´ aˇr do datab´ aze
6.7
Testov´ an´ı algoritm˚ u
Nejen z d˚ uvodu relativnˇe vysok´e n´ aroˇcnosti implementace DSP algoritm˚ u, ale pˇredevˇs´ım z potˇreby ladit konstanty algoritm˚ u, je tˇreba zajistit moˇznost testov´an´ı algoritm˚ u a vizualizace jejich v´ ysledku. Algoritmy byly vˇetˇsinou p˚ uvodnˇe ladˇeny a implementov´ any v Matlabu a pro ovˇeˇren´ı spr´ avnosti implementace bylo tˇreba jejich srovn´ an´ı. Jist´ y ˇcas trvalo, neˇz byla nalezena optim´ aln´ı metodika. Byla naps´ ana tˇr´ıda Loger, kter´ a slouˇz´ı k z´ apisu vstupn´ıch ˇc´ısel do souboru form´ atu Matlabu. Tato tˇr´ıda pˇreb´ır´ a ˇc´ıseln´e v´ ysledky zkouman´ ych11 algoritm˚ u. Samotn´e testov´an´ı n´ aslednˇe prob´ıh´ a v prostˇred´ı Matlab. V pˇr´ıpadnˇe ovˇeˇrov´ an´ı spr´ avnosti je pˇripraven skript s algoritmem zapsan´ ym v Matlabu a zkoum´ a se, zda jsou v´ ysledky algoritm˚ u shodn´e. V pˇr´ıpadˇe nastavov´ an´ı konstat je pˇripraven skript pro n´ azornou 10 11
Uveden´ a data jsou pouze ilustrativn´ı. at’ uˇz z d˚ uvodu ovˇeˇren´ı spr´ avnosti implememtace ˇci ladˇen´ı konstant
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
57
vizualizaci. Metodika nejen v´ yraznˇe ˇsetˇr´ı ˇcas, ale zd´a se, ˇze by se bez jej´ıho zaveden´ı v˚ ubec nepodaˇrilo aplikaci dokonˇcit. Pouˇzitou metodou byl z´ısk´ an obr. 5.10.
6.8
Testov´ an´ı aplikace
Aplikace je pomˇernˇe rozs´ahl´ a a testov´an´ı je, pˇredevˇs´ım ˇcasovˇe, n´ aroˇcn´e. Testov´an´ı m˚ uˇzeme rozdˇelit do dvou f´ az´ı: testov´ an´ı DSP algoritm˚ u, testov´ an´ı on-line vstupu a testov´ an´ı funkˇcnosti, kter´ a byla zachycena v hlavn´ım sc´en´ aˇri pˇr´ıpadu uˇzit´ı. Testov´an´ı DSP algoritm˚ u, vˇcetnˇe konzultace dosaˇzen´ ycb v´ ysledk˚ u a pˇr´ıpadn´ ych alternativ, bylo diskutov´ ano v kapitole 5. On-line modul lze snadno otestovat paral. nahr´ av´ an´ım s jin´ ym ’referenˇcn´ım’ nahr´ avac´ım programem a porovn´ an´ım nahran´ ych sign´ al˚ u. Je tˇreba d´ avat pozor na situace, kdy nevhodnou spr´ avou bufferu doch´ az´ı k obˇcasn´e ztr´atˇe nˇekter´ ych segment˚ u12 . Tato ztr´ ata m˚ uˇze b´ yt zp˚ usobena nejen zcela chybnou implementac´ı ale i z ˇcasov´eho hlediska nevhodn´ ym13 algoritmem zpr´ avy. Dobr´ ym testem je pˇri nahr´ av´ an´ı spustit n´ aroˇcnou aplikaci 14 a zjiˇst’ovat pˇri jak´e z´ateˇzi poˇc´ıtaˇce ke ztr´atˇe dat doch´ az´ı. Z test˚ u vych´ az´ı, ˇze on-line modul je srovnateln´ y napˇr´ıklad s nahr´ avaˇcem WaveSurfer [19]. Testov´an´ı celkov´e funkˇcnosti bylo zaloˇzeno na hlavn´ım sc´en´ aˇri pˇr´ıpadu uˇzit´ı. Byly proch´ azeny jednotliv´e alternativn´ı sc´en´ aˇre a hled´ any chyby, pˇr´ıpadnˇe nejasnosti. Aplikace je funkˇcn´ı, ale testov´ an´ı nˇekter´ ych alternativn´ıch sc´en´ aˇr˚ u a funkˇcnost´ı nebylo dokonˇceno; a to i z d˚ uvodu, ˇze se uvaˇzuje zmˇen´ ach poˇzadavk˚ u a doplnˇen´ı nov´ ych sc´en´ aˇr˚ u. Testov´an´ı v praxi, tj. v ordinaci foniatr˚ u jeˇstˇe nebylo zah´ ajeno. Tato ˇc´ast testov´an´ı je nejn´ aroˇcnˇejˇs´ı a m˚ uˇze trvat15 aˇz nˇekolik let. Z d˚ uvodu testov´ an´ı je v souˇcasn´e dobˇe informaˇcn´ı syst´em rozdˇelen na dvˇe nez´avisl´e aplikace. Jedna slouˇz´ı pro vyˇsetˇren´ı a anal´ yzu hlasov´eho pole pacienta, druh´ a pak k veden´ı kartot´eky, k tisku z´ aznam˚ u apod. D˚ uvod rozdˇelen´ı nen´ı jen testovac´ı, ale tak´e praktick´ y a do budoucna se uvaˇzuje o ponech´ an´ı t´eto struktury. D˚ uvodem je napˇr´ıklad pˇr´ıstup do kartot´eky v´ yhradnˇe pod heslem, zat´ımco vyˇsetˇren´ı hlasov´eho pole by heslem b´ yt chr´ anˇeno nemˇelo. Druh´ ym d˚ uvodem je nutnosti instalace a bˇehu PostgreSQL serveru v dobˇe pr´ ace s datab´az´ı. Vyˇsetˇren´ı hlasov´eho pole je pˇri tomto rozdˇelen´ı na bˇehu datab´ azov´eho serveru nez´avisl´e. O ponech´ an´ı t´eto 12
V sign´ alu se pˇri poslechu ztr´ ata projev´ı prask´ an´ım. Pˇri anal´ yze m˚ uˇze v´est k z´ avaˇzn´ ym chyb´ am detekce F0 i
energie. 13 ˇcasovˇe n´ aroˇcn´ ym 14 napˇr´ıklad pˇrehr´ av´ an´ı videa 15 v pˇr´ıpadˇe u ´spˇeˇsnosti aplikace
´ ´I APLIKACE KAPITOLA 6. IMPLEMENTACE A TESTOVAN
58
struktury rozhodne dalˇs´ı testov´an´ı a pˇredstavy l´ekaˇr˚ u.
6.9
Pouˇ zit´ e typy soubor˚ u
Aplikace pracuje kromˇe datab´ azov´ ych soubor˚ u PostgreSQL serveru tak´e se soubory typu: • WAV - v tomto form´ atu je uloˇzen zvukov´ y z´aznam, kter´ y byl poˇr´ızen bˇehem vyˇsetˇren´ı hlasov´eho pole • PDF - v tomto form´ atu je generov´ ana diagn´ oza pacienta urˇcen´a pro tisk ˇci uchov´ an´ı v PC • PNG - grafick´ y form´ at do nˇehoˇz je moˇzn´e importovat hlasov´e pole
6.10
Instalace aplikace
Instalace aplikace se skl´ad´ a ze ˇctyˇr ˇc´ast´ı: • instalace .NET Framework 2.0 a vyˇsˇs´ı - je standardn´ı souˇc´ast´ı novˇejˇs´ıch instalac´ı Windows, pro starˇs´ı instalace Windows16 je tˇreba zajistit instalaci • instalace samotn´ e aplikace • instalace PostgreSQL - datab´ azov´ y server • inicializace a vytvoˇ ren´ı datab´ aze Instalaˇcn´ı program, kter´ y by se samostatnˇe postaral o instalaci uveden´ ych program˚ u zat´ım nen´ı vytvoˇren a vˇsechny ˇctyˇri ˇc´asti je tˇreba nainstalovat a zprovoznit samostatnˇe. Pro inicializaci datab´ aze je pˇripraven SQL skript. Se zjednoduˇsen´ı instalac´ı pro koncov´eho uˇzivatele se poˇc´ıt´ a v dalˇs´ıch verz´ıch aplikace.
16
Podpora existuje aˇz pro Windows XP a starˇs´ı.
Kapitola 7
Z´ avˇ er C´ılem bakal´ aˇrsk´e pr´ ace bylo navrhnout a implementovat informaˇcn´ı syst´em pro on-line vyˇsetˇren´ı hlasov´eho pole s datab´ az´ı pacient˚ u a vyˇsetˇren´ı. Tento c´ıl byl splnˇen a program je funkˇcn´ı. Po dalˇs´ım testov´an´ı a pˇr´ıpadn´em upˇresˇ nov´ an´ı poˇzadavk˚ u, kter´e mohou z testov´an´ı vyplynout, se pl´ anuje nasazen´ı syst´emu v l´ekaˇrsk´e praxi. V´ ypoˇcet poˇzadovan´ ych akustick´ ych parametr˚ u ˇreˇci, tedy energie a F0 je prov´ adˇen po pˇrechodu do spektr´ aln´ı oblasti pomoc´ı algoritmu FFT. Energie ˇreˇcov´aho sign´ alu je urˇcov´ana po A v´ ahov´ an´ı vhodn´ ym filtrem; po v´ ypoˇctu energie je zaˇrazen blok filtrace integr´ atorem a klouzav´ ym pr˚ umˇerem, kde jsou detekov´ ana lok´ aln´ı maxima jejichˇz poloha teprve urˇcuje platn´e hodnoty energie a F0. To zajiˇst’uje, ˇze z vypoˇcten´ ych parametr˚ u hlasov´eho pole budou nakonec zobrazeny pouze ty, kter´e odpov´ıdaj´ı ust´ alen´ ym ˇc´astem ˇreˇci. Pro spolehlivou detekci F0 jsou d˚ uleˇzit´e tˇri f´ aze zpracov´an´ı sign´ alu: preprocessing, processing a postprocessing, kter´e byly v pr´ aci diskutov´ any. Preprocessing je zaloˇzen na klipov´ an´ı, kter´e ˇc´asteˇcnˇe pˇredch´ az´ı chyb´ am detekce, kter´e mohou b´ yt zp˚ usobeny formantovou strukturou ˇreˇci. Samotn´ y algoritmus detekce F0 je zaloˇzen na metodˇe kr´ atkodob´e autokorelaˇcn´ı funkce, urˇcen´e, pro niˇzˇs´ı ˇcasovou n´ aroˇcnost, pomoc´ı FFT ve spektr´ aln´ı oblasti. Postprocessing je zaloˇzen na detekci maxim ve filtrovan´em pr˚ ubˇehu energie a n´ aslednˇe pˇetibodov´e medi´anov´e filtraci. Program byl zat´ım testov´an pouze na zdrav´ ych osob´ ach a srovn´ av´ an s referenˇc´ım programem na Foniatrick´e klinice 1. LF Univerzity Karlovy. Problematika, kter´ a na sv´e ˇreˇsen´ı teprve ˇcek´a, je vhodnost r˚ uzn´ ych typ˚ u mikrofon˚ u a zvukov´ ych karet1 ; v pˇr´ıpadˇe zvukov´ ych karet i problematika spr´ avn´eho nastaven´ı.
1
pˇredevˇs´ım pak frekvenˇcn´ıch charakteristik a mezn´ıch frekvenc´ı; ukazuje se, ˇze levn´e mikrofony nejsou schopn´e
sn´ımat frekvence pod 90Hz a mohou m´ıt pro mˇeˇr´ıc´ı u ´ˇcely nevhodnou frekveˇcn´ı charakteristiku
59
Literatura [1] Psutka, J.: Komunikace s poˇc´ıtaˇcem mluvenou ˇreˇc´ı, Praha, Academia, 1995. ˇ ıslicov´e filtry, Praha. Academia, 2000. ´kal, Z.: C´ [2] V´ıch, R., Sme ˇ ´ ˇ, J., Cmejla, [3] Sovka, P., Uhl´ır R.: Uvod do ˇc´ıslicov´eho zpracov´ an´ı sign´ al˚ u, Praha, ˇ Vydavatelstv´ı CVUT, 2003. ´k, P.: Vybran´e metody ˇc´ıslicov´eho zpracov´ [4] Sovka, P., Polla an´ı sign´ al˚ u, Praha, ˇ Vydavatelstv´ı CVUT, 2001. ˇ ıslicov´e zpracov´an´ı sign´ ˇ ˇ, J., Sovka, P.: C´ [5] Uhl´ır al˚ u, Praha Vydavatelstv´ı CVUT, 2002. ˇ ˇ, J., Sovka, P., Polla ´k, P., Hanˇ [6] Uhl´ır zl, V., Cmejla, R.: Technologie hlasov´ ych ˇ komunikac´ı, Praha, Vydavatelstv´ı CVUT, 2007. ´nek, Ladislav.: Informaˇcn´ı syst´em pro anal´ [7] Pa yzu hlasov´eho pole, Plzeˇ n, Diploˇ 2002. mov´a pr´ ace ZCU, ˇ [8] Cernoch, J.: Zpracov´ an´ı ˇreˇcov´ ych sign´ al˚ u, uˇcebn´ı text FIT VUT Brno, 2007. [9] on-line: www.wikipedia.cz, otevˇren´ a encyklopedie. ´c ˇek, M., Hlava ´c ˇ, V.: Zpracov´ [10] Sedla an´ı sign˚ ul˚ u a obraz˚ u, Praha, Vydavatelstv´ı ˇ CVUT, 2003. [11] Hahn, A.: Otorinolaringologie a foniatrie v souˇcasn´e praxi, Praha, Grada Publish, 2007.
60
LITERATURA
61
´ˇ [12] Hyba sek, I.: Uˇsn´ı, nosn´ı a krˇcn´ı l´ekaˇrstv´ı, Praha Karolinum 1999. [13] Arlow, J., Neustadt, I.: UML a unifikovan´ y proces v´ yvoje aplikac´ı, Computer Press, 2005. [14] Petzold, Ch.: Windows Forms v jazykce C#, Computer Press, 2005. [15] Sells, Ch.: C# a WinForms, Zoner Press, 2004. [16] Price, J.: C# Programov´ an´ı datab´ az´ı, Praha, Grada Publish, 2005. ´, H., Muller, M.: UML srozumitelnˇe, Computer Press, 2006. [17] Kanisova [18] Development Resource [online]. http://www.codeproject.com [19] Wave Surfer - official homepage [online]. http://www.speech.kth.se/wavesurfer [20] Project Mono - official homepage [online]. www.mono-project.com [21] AForge.NET - official homepage [online]. code.google.com/p/aforge [21] Sb´ırka zdrojov´ ych k´ od˚ u [online]. http://www.samples.cz [22] PostgreSQL - official homepage [online]. http://www.postgresql.org [23] Microsoft Developer Network [online]. http://www.msdn.org [24] iTextSharp - official homepage [online]. http://itextsharp.sourceforge.net [25] Violet UML editor - official homepage [online]. http://violetuml.sourceforge.net [26] - [online]. http://www.pgsql.cz [27] Sigmund, M.: Anal´ yza ˇreˇcov´ ych sign´ al˚ u, Uˇcebn´ı text VUT Brno, 2002. ´ ˇ´ıc ˇek, O.: Uvod [28] - [online]. http://www.jimprice.com/prosound [29] Jir do akustiky, ˇ Praha, Vydavatelstv´ı CVUT, 2002.
LITERATURA
62
´, J., Halaˇ [30] - [online]. http://en.wikipedia.org/wiki/A-weighting [31] Pokorny ska, I.: ˇ Datab´ azov´e syst´emy, Praha, Vydavatelstv´ı CVUT, 2004. ˇ ´ [32] Cmejla, R., Sovka, P.: Uvod do ˇc´ıslicov´eho zpracov´ an´ı sign´ al˚ u - cviˇcen´ı, Praha, ˇ Vydavatelstv´ı CVUT, 2006. [33] Dav´ıdek, V.: Implementace algoritm˚ u ˇc´ıslicov´eho zpracov´ an´ı sign´ al˚ u v re´ aln´em ˇ ˇcase, Praha, Vydavatelstv´ı CVUT, 2004.
Pˇ r´ıloha A
Popis audio souboru WAV Zvukov´ y soubor WAV se skl´ ad´ a ze dvou ˇc´ast´ı. Tou prvn´ı je hlaviˇcka, kter´ a obsahuje z´ akladn´ı informace o form´ atu (identifikaci form´ atu) a parametry uloˇzen´eho zvukov´eho z´aznamu (vzorkovac´ı frekvenci, poˇcet bit˚ u na vzorek, poˇcet kan´al˚ u, form´ at apod.). Podrobn´ y popis je v tabulce Za hlaviˇckou n´ asleduje druh´ a ˇc´ast: samotn´a data byt po bytu, pˇriˇcemˇz pokud jsou uloˇzeny data zvou kan´ al˚ u jsou uloˇzena takto: CH1CH2CH1CH2CH1CH2 atd. Pˇriˇcemˇz blok CH1 resp. CH2 je dlouh´ y 1B ˇci 2B podle poˇctu byt˚ u na vzorek. Tabulka A.1: Popis hlaviˇcky souboru WAV
Popis
Obsah
Velikost
’RIFF’ v ASCII k´ odu
4
´ Udaj o velikosti souboru
4
Wave hlaviˇcka
’WAVE’ v ASCII k´ odu
4
Fmt hlaviˇcka
’FMT’ v ASCII k´ odu
4
16 B
4
1
2
1/2
2
22, 44.1Hz apod.
4
88200 B
4
Poˇcet byt˚ u na vzorek
2B
2
Poˇcet bit˚ u na vzorek
16 b
2
’DATA’ v ASCII k´ odu
4
d´elka souboru bez hlaviˇcky
4
RIFF hlaviˇcka Velikost z´aznamu v bytech
Fmt velikost (poˇcet byt˚ uu ´daj˚ u o form´ atu) Typ form´ atu (1=PCM) Poˇcet kan´al˚ u (mono=1, stereo=2) Vzorkovac´ı frekvence (poˇcet vzork˚ u/sec) Vzorkov´ an´ı (poˇcet byt˚ u/sec)
Data hlaviˇcka D´elka datov´e oblasti v B
I
Pˇ r´ıloha B
Instalace PostgreSQL serveru Pro bˇeh datab´ azov´e ˇc´asti aplikace je nutn´e nainstalovat datab´ azov´ y server PostgreSQL spolu s data providery pro .NET. Instalaˇcn´ı bal´ık pro datab´ azov´ y server PostgreSQL je ke staˇzen´ı na internetov´e adrese www.postgresql.org/download/. Zde je tˇreba vybrat verzi (posledn´ı stabiln´ı) a lokaci, ze kter´e bude PostgreSQL staˇzen. Ke staˇzen´ı se nab´ıdne verze PostgreSQL pro OS Linux, Unuix a Win32. Zvolte distribuci pro Win32. Nejjednoduˇsˇs´ı instalace PostgreSQL je instalace z Windows Installer package (z instalaˇcn´ıho souboru) dostupn´eho na PostgreSQL FTP archivu a jeho zrcadlech. Tento bal´ık obsahuje pˇreloˇzenou verzi PostgreSQL vˇcetnˇe aplikace pgAdmin (GUI administraˇcn´ı rozhran´ı), V´ ami vybran´e rozˇsiˇruj´ıc´ı (contrib) moduly a nˇekter´ y z procedur´ aln´ıch jazyk˚ u. Instal´ ator vyˇzaduje Windows 2000, 2003 XP, nebo Vista, kde je k dispozici sluˇzba Windows Installer. Instal´ ator vytvoˇr´ı, pokud je tˇreba, pro sluˇzbu u ´ˇcet a inicializuje datab´ azov´ y klastr. Souˇc´ast´ı instalace mus´ı b´ yt instalace .NET data provideru pro PostgreSQL. Jeho instalace by se mˇela nab´ıdnout sama bˇehem instalace PostgreSQL. Pokud se tak nestane, je data adapter, vˇcetnˇe potˇreb´e knihovny pro C# ke staˇzen´ı na adrese pgfoundry.org/projects. Data adapter je stejnˇe jako PostgreSQL uvolnˇen pod BSD Licenc´ı. Pokud by bˇehem instalace nastaly probl´emy, lze se v´ıce o instalaci, vˇcetnˇe ˇreˇsen´ı nejˇcastˇejˇs´ıch probl´em˚ u, doˇc´ıst na adrese htt://www.pgsql.cz. PostgreSQL f´ orum je k dispozici na adrese www.samples.cz/.
II
Pˇ r´ıloha C
Pr´ ace s PostgreSQL v .NET Protoˇze vˇsak pouˇzit´ı PostgreSQL nen´ı v prostˇred´ı .NET bˇeˇzn´e, uv´ ad´ım pouˇzit´ı datov´eho adapt´eru, jeho instalaci a v´ ypis k´ od˚ u, kter´e dokumentuj´ı z´akladn´ı prvky spolupr´ ace PostgreSQL a C#.
C.1
Datov´ y adapt´ er
Aˇckoli je technologie .NET spojov´ ana sp´ıˇse s datab´azemi MS SQL, MS Access a Oracle, lze tak´e bezprobl´em˚ u pouˇz´ıvat datab´ azov´ y server PostgreSQL. K tomu je tˇreba na str´ ank´ ach projektu http://pgfoundry.org/projects/npgsql/ v sekci Downloads st´ ahnout datov´ y adapt´er pro .NET. Ten je tˇreba do projektu pˇridat standardn´ım zp˚ usobem, tj. Project, Add Existing Item a vybrat pˇr´ısluˇsnou dll knihovnu Npgsql.dll, n´ aslednˇe je tˇreba do projektu pˇridat referenci, tj. Project, Add Reference. Jmenn´ y prostor pˇridan´eho datov´eho adapt´eru je Npgsql.
C.2
V´ ypis ze zdrojov´ ych k´ od˚ u
Prvn´ı k´ od se star´a o pˇripojen´ı k datab´ azi PostgreSQL, druh´ y o vykon´ an´ı SQL dotazu a naˇcten´ı v´ ysledku.
III
ˇ ´ILOHA C. PRACE ´ PR S POSTGRESQL V .NET
IV
// hlavni formular aplikace, stara se mimo jine o pripojeni k databazi public partial class MainForm : Form { private string postgreConnectionString; bool connected2Database; IDbConnection dbConn; public MainForm() { postgreConnectionString = "Server=localhost;" + "Port=5432;" + "Database=VoiceFieldDB;" + "User ID=admin;" + "Password=heslo;"; makeConnection(postgreConnectionString); InitializeComponent(); } private void makeConnection(string connString) { try { dbConn = new NpgsqlConnection(connString); dbConn.Open(); Console.WriteLine("Pripojeno!"); connected2Database = true; } catch (Exception e) { Console.WriteLine("Nepripojeno: \n" + e); connected2Database = false; } } }
V pˇr´ıpadˇe ovladaˇce n´as krom zp˚ usobu pˇripojen´ı tak´e jeˇstˇe zaj´ım´a zp˚ usob vykon´ an´ı konkr´etn´ıho SQL pˇr´ıkazu:
ˇ ´ILOHA C. PRACE ´ PR S POSTGRESQL V .NET private void makeCommand() { IDbCommand dbcmd = dbConn.CreateCommand(); string query = "SELECT * FROM Pacient"; dbcmd.CommandText = query; IDataReader reader = dbcmd.ExecuteReader(); while (reader.Read()) { string FirstName = (string)reader["jmeno"]; string LastName = (string)reader["prijmeni"]; string diagnoza = (string)reader["dlouhodoba_diagnoza"]; Console.WriteLine("Jmeno: " + FirstName + " " + LastName); Console.WriteLine("Dlouhodoba diagnoza: " + diagnoza); } // clean up reader.Close(); reader = null; dbcmd.Dispose(); dbcmd = null; }
V
Pˇ r´ıloha D
.NET Framewor Class Model Na obr. D.1 je schematicky zn´ azornˇen jmenn´ y prostor .NET Framewor class library. Schema je uˇziteˇcn´e nejen pro orientaci v jmenn´em prostoru a v z´ avislostech tˇr´ıd, ale tak´e pˇri odvozov´ an´ı vlastn´ıch tˇr´ıd a ovl´ adac´ıch prvk˚ u. Kompletn´ı model lze nal´est na str´ank´ ach Microsoftu [23], odkud byl obr´ azek pˇrevzat.
Obr´ azek D.1: .NET Framework - sch´ema modelu
VI
Pˇ r´ıloha E
Uk´ azky z aplikace
Obr´ azek E.1: Aplikace hlasov´eho pole - vyˇsetˇren´ı
VII
ˇ ´ILOHA E. UKAZKY ´ PR Z APLIKACE
Obr´ azek E.2: Aplikace hlasov´eho pole - anal´ yza statistik
Obr´ azek E.3: Kartot´eka pacient˚ u - tisk vyˇsetˇren´ı
VIII