SlideShare a Scribd company logo
1 of 56
Download to read offline
ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta elektrotechnick´a
Cˇ VUT FEL katedra pocˇı´tacˇu˚
Bakal´aˇrsk´a pr´ace
Audio port pro ˇreˇcov´e aplikace
Martin Loskot
Vedouc´ı pr´ace: Ing. Miroslav Skrbek, Ph.D.
Studijn´ı program: Elektrotechnika a informatika, strukturovan´y bakal´aˇrsk´y
Obor: V´ypoˇcetn´ı technika
ˇcerven 2008
ii
Podˇekov´an´ı
Dˇekuji panu Ing. Miroslavu Skrbkovi, Ph.D., vedouc´ımu bakal´aˇrsk´e pr´ace, za jeho ochotu, ˇcas
a cenn´e rady, kter´e mi pomohly ke zd´arn´emu dokonˇcen´ı t´eto pr´ace. D´ale dˇekuji panu Dr. Ing.
Tom´aˇsi Mackovi za poskytnut´ı podklad˚u, pomoci a zpˇetn´e vazby.
iii
iv
Prohl´aˇsen´ı
Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady
uveden´e v pˇriloˇzen´em seznamu.
Nem´am z´avaˇzn´y d˚uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb.,
o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym a o zmˇenˇe nˇekter´ych z´akon˚u
(autorsk´y z´akon).
V Peˇcet´ınˇe dne 13.6.2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
v
vi
Abstract
This bachelor thesis discusses the analysis, the design and the implementation of an audio port
for speech recognition applications. The first and main output of this thesis is a fully functional
sample of a desk audio port containing a microphone, a speaker, a headphone connector and
three buttons. The port is connected to a personal computer using USB interface, the audio
device is a standard USB Audio Device and the button control is a standard Human Interface
Device. The second output is a control application vxmlclient converting button events into
voice recognizer commands. The third part of the thesis is considering the functionality and
the actual usability of the device using a sample VoiceXML document. The thesis also includes
the description of later design changes and recommended modifications.
Abstrakt
Pr´ace se zab´yv´a anal´yzou, n´avrhem a realizac´ı audio portu urˇcen´eho k ovl´ad´an´ı ˇreˇcov´ych ap-
likac´ı. Hlavn´ım v´ystupem pr´ace je funkˇcn´ı vzorek stoln´ıho audio portu obsahuj´ıc´ı mikrofon,
reproduktor, sluch´atkov´y v´ystup a tˇri ovl´adac´ı tlaˇc´ıtka. Port se pˇripojuje k osobn´ımu poˇc´ıtaˇci
pomoc´ı USB rozhran´ı, zvukov´e zaˇr´ızen´ı je standardn´ı USB Audio Device, tlaˇc´ıtkov´e ovl´ad´an´ı je
standardu Human Interface Device. Druh´ym c´ılem je vytvoˇren´ı ovl´adac´ıho programu vxmlclient
pˇrev´adˇej´ıc´ıho akce tlaˇc´ıtek na pˇr´ıkazy pro hlasov´y rozpozn´avaˇc. Tˇret´ı ˇc´ast´ı je zhodnocen´ı
funkˇcnosti a re´aln´e pouˇzitelnosti zaˇr´ızen´ı na vzorov´em VoiceXML dokumentu. Souˇc´ast´ı pr´ace
je i popis proveden´ych zmˇen proti p˚uvodn´ımu n´avrhu a dalˇs´ıch doporuˇcen´ych ´uprav.
vii
viii
Obsah
Seznam obr´azk˚u xi
Seznam tabulek xiii
1 ´Uvod 1
2 Popis probl´emu, specifikace c´ıle 3
2.1 Seznam poˇzadavk˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Standard VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Architektura VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.3 Pouˇzit´ı VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Charlie VoiceXML browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Pˇr´ıkazy VoiceXML browseru . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.2 Vlastn´ı ovl´ad´an´ı - pl´anovan´y vxmlclient . . . . . . . . . . . . . . . . . . 7
2.4 St´avaj´ıc´ı hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.1 Hotov´a ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.2 ´Uprava existuj´ıc´ıch ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Vlastn´ı ˇreˇsen´ı hardwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5.1 Universal Serial Bus (USB) . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5.1.1 USB Audio class . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5.1.2 USB Human Interface Device (HID) class . . . . . . . . . . . . 9
2.5.2 Idea vlastn´ıho ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 Anal´yza a n´avrh ˇreˇsen´ı 11
3.1 Volba hardwarov´e architektury . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1 Univerz´aln´ı obvody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 Specializovan´e obvody . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.3 V´ysledn´a hardwarov´a architektura . . . . . . . . . . . . . . . . . . . . . 11
3.2 Pouˇzit´e komponenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 PCM2904DB - audio kodek s rozhran´ım USB . . . . . . . . . . . . . . . 12
3.2.2 TPA6011A4PWP - v´ykonov´y audio zesilovaˇc . . . . . . . . . . . . . . . 13
3.2.3 OPA353UA - operaˇcn´ı zesilovaˇc . . . . . . . . . . . . . . . . . . . . . . . 15
3.2.4 REG103UA-A - stabiliz´ator napˇet´ı . . . . . . . . . . . . . . . . . . . . . 16
3.2.5 LSM-S20K - miniaturn´ı reproduktor . . . . . . . . . . . . . . . . . . . . 16
3.2.6 Genius MIC-01A - stoj´ankov´y mikrofon . . . . . . . . . . . . . . . . . . 17
3.2.7 Sluch´atka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Ovˇeˇren´ı dostateˇcnosti nap´ajen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4 Softwarov´e ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.1 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.2 Tlaˇc´ıtka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.3 Raw Input Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.4.3.1 Registrace raw input zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . 20
3.4.3.2 ˇCten´ı dat ze zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.4 Ovl´ad´an´ı VoiceXML browseru . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.5 Sekvence pˇr´ıkaz˚u zas´ılan´ych vxmlclientem . . . . . . . . . . . . . . . . . 22
3.5 Shrnut´ı n´avrhov´e ˇc´asti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
ix
4 Realizace 25
4.1 Hardwarov´a realizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.1 Sch´ema zapojen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.2 Ploˇsn´y spoj a mechanick´e ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . 25
4.1.3 Nutn´e zmˇeny hardwaru proti n´avrhu . . . . . . . . . . . . . . . . . . . . 25
4.1.3.1 Otoˇcen´ı tlaˇc´ıtek . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1.3.2 ´Uprava sluch´atkov´eho konektoru . . . . . . . . . . . . . . . . . 26
4.1.3.3 Diodov´y kod´er . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1.3.4 Zv´yˇsen´ı zes´ılen´ı operaˇcn´ıho zesilovaˇce . . . . . . . . . . . . . . 27
4.2 Softwarov´a realizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.1 Zpracov´an´ı zpr´av . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2.2 Potˇrebn´e hlaviˇckov´e soubory a knihovny . . . . . . . . . . . . . . . . . . 27
4.3 Doporuˇcen´e ´upravy a rozˇs´ıˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3.1 Hardwarov´e a mechanick´e ´upravy . . . . . . . . . . . . . . . . . . . . . . 28
4.3.2 Softwarov´e rozˇs´ıˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5 Pouˇzit´ı 31
5.1 Pouˇzit´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.1 Pˇripojen´ı hardwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.2 Spuˇstˇen´ı klienta a pˇripojen´ı k serveru . . . . . . . . . . . . . . . . . . . 31
5.1.3 Naˇcten´ı VXML dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.4 Zad´av´an´ı pˇr´ıkaz˚u pro organiz´er . . . . . . . . . . . . . . . . . . . . . . . 31
5.1.5 Ukonˇcen´ı pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Tvorba vlastn´ıch dokument˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3 Testovac´ı dokument organizer.vxml . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.4 Re´aln´a pouˇzitelnost zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6 Z´avˇer 35
7 Seznam literatury 37
A Sch´ema zapojen´ı - ˇc´ast kodeku 39
B Sch´ema zapojen´ı - ˇc´ast zesilovaˇce 40
C Seznam souˇc´astek 41
D Obsah CD 42
x
Seznam obr´azk˚u
1.1 Nasazen´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1 Architektura VoiceXML, pˇrevzato z [8] . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Pˇr´ım´e a asynchronn´ı odpovˇedi, pˇrevzato z [10] . . . . . . . . . . . . . . . . . . 6
2.3 Maxim´aln´ı ´ubytky nap´ajec´ıho napˇet´ı pˇri pouˇzit´ı bus-powered hubu, pˇrevzato z
[14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 Blokov´e sch´ema audioportu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Blokov´e sch´ema PCM2904, pˇrevzato z [13] . . . . . . . . . . . . . . . . . . . . . 13
3.3 Z´akladn´ı zapojen´ı PCM2904, pˇrevzato z [13] . . . . . . . . . . . . . . . . . . . . 14
3.4 Blokov´e sch´ema TPA6011A4, pˇrevzato z [7] . . . . . . . . . . . . . . . . . . . . 15
3.5 Z´akladn´ı zapojen´ı TPA6011A4, pˇrevzato z [7] . . . . . . . . . . . . . . . . . . . 16
3.6 Operaˇcn´ı zesilovaˇc OPA353, pˇrevzato z [6] . . . . . . . . . . . . . . . . . . . . . 17
3.7 Nastaviteln´y stabiliz´ator napˇet´ı REG103A, pˇrevzato z [9] . . . . . . . . . . . . 17
3.8 Reproduktor LSM-S20K, pˇrevzato z [2] . . . . . . . . . . . . . . . . . . . . . . 18
3.9 Nap´ajen´ı elektretov´eho mikrofonu, pˇrevzato z [3] . . . . . . . . . . . . . . . . . 19
3.10 Blokov´e sch´ema komunikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1 Ilustraˇcn´ı negativ desky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.2 V´ıko audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 Vnitˇrn´ı uspoˇr´ad´an´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4 Kompletn´ı audio port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5 Diodov´y kod´er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1 Okno vxmlclienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A.1 Sch´ema zapojen´ı - ˇc´ast kodeku . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
B.1 Sch´ema zapojen´ı - ˇc´ast zesilovaˇce . . . . . . . . . . . . . . . . . . . . . . . . . . 40
D.1 Obsah CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
xi
xii
Seznam tabulek
3.1 Parametry reproduktoru LSM-S20K . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Popis pin˚u HID0 aˇz HID2 kodeku PCM2904 . . . . . . . . . . . . . . . . . . . . 20
5.1 Pˇriˇrazen´ı tlaˇc´ıtek audio portu dokumentu organizer.vxml . . . . . . . . . . . . 32
C.1 Seznam souˇc´astek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
xiii
xiv
KAPITOLA 1. ´UVOD 1
1 ´Uvod
C´ılem t´eto pr´ace je realizovat zaˇr´ızen´ı umoˇzˇnuj´ıc´ı pouˇz´ıv´an´ı prohl´ıˇzeˇce hlasov´ych dokument˚u
ve form´atu VoiceXML. Pouˇzit´y prohl´ıˇzeˇc Charlie VoiceXML browser s dokumentac´ı a seznam
poˇzadavk˚u mi byl poskytnut firmou IBM ˇCesk´a republika, spol. s r.o. D˚uleˇzit´ym poˇzadavkem
zadavatel˚u byla jednoduch´a instalace a provoz na jak´emkoli poˇc´ıtaˇci vybaven´em operaˇcn´ım
syst´emem Microsoft Windows XP. Hlavn´ım pˇr´ınosem pro uˇzivatele by mˇelo b´yt zjednoduˇsen´ı
kaˇzdodenn´ıch rutinn´ıch ´ukol˚u, a to i na poˇc´ıtaˇci, kter´y dosud nen´ı vybaven zvukov´ym sub-
syst´emem. Po doplnˇen´ı patˇriˇcn´eho softwaru by mˇelo b´yt moˇzn´e napˇr. spouˇstˇet aplikace,
vyhled´avat ´udaje v datab´az´ıch nebo vytoˇcit telefonn´ı ˇc´ıslo a v´est a ovl´adat hovor.
V n´asleduj´ıch kapitole nejprve formuluji vˇsechny poˇzadavky, kter´e byly na zaˇr´ızen´ı kladeny a
naznaˇc´ım moˇzn´e pˇr´ıstupy k probl´emu. Zm´ın´ım se o podstatˇe pouˇzit´ı jazyka VoiceXML a jeho
moˇznostech a pop´ıˇsi existuj´ıc´ı VoiceXML browser a zp˚usob jeho ovl´ad´an´ı. Provedu v´ybˇer hard-
waru a metody komunikace s n´ım, z ˇcehoˇz pˇri n´avrhu vyplyne pouˇzit´ı sofwarov´ych prostˇredk˚u.
V n´avrhov´e ˇc´asti detailnˇe rozeberu zvolen´y koncept ˇreˇsen´ı a provedu principi´aln´ı n´avrh jak
hardwaru - audio portu, tak softwaru - obsluˇzn´eho programu vxmlclient. V realizaˇcn´ı kapi-
tole pop´ıˇsi samotn´y postup implementace, sch´ema zapojen´ı, ploˇsn´y spoj a hotov´e zaˇr´ızen´ı
vˇcetnˇe odliˇsnost´ı proti p˚uvodn´ımu n´avrhu. Popis dopln´ım doporuˇcen´ymi zmˇenami a n´amˇety
na rozˇs´ıˇren´ı. V pˇredposedn´ı kapitole vysvˇetl´ım instalaci a pouˇzit´ı portu a doporuˇc´ım dalˇs´ı
testov´an´ı. Z´avˇer bude patˇrit shrnut´ı a zhodnocen´ı pˇr´ınosu pr´ace.
Nasazen´ı audio portu je na obr. 2.3. Obsahem doprovodn´eho CD je elektronick´a podoba t´eto
pr´ace spolu s komentovan´ymi zdrojov´ymi k´ody obluˇzn´eho programu, datasheety pouˇzit´ych
komponent, sch´ematem zapojen´ı a n´avrhem ploˇsn´eho spoje.
Obr´azek 1.1: Nasazen´ı audio portu
2 KAPITOLA 1. ´UVOD
KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 3
2 Popis probl´emu, specifikace c´ıle
2.1 Seznam poˇzadavk˚u
Zde se pokus´ım shrnout vˇsechny poˇzadavky, kter´e byly na audio port poloˇzeny. Nˇekter´e byly
obsaˇzeny v zad´an´ı bakal´aˇrsk´e pr´ace, jin´e vyplynuly pˇri konzultac´ıch se zadavateli v pr˚ubˇehu
tvorby.
• Audio port bude obsahovat mikrofon a reproduktor (mono) s moˇznost´ı pˇripojen´ı sluch´atek
(stereo) a alespoˇn tˇri tlaˇc´ıtka.
• Audio port bude pˇripojiteln´y pˇres USB rozhran´ı k jak´emukoli poˇc´ıtaˇci vybaven´emu
operaˇcn´ım syst´emem Microsoft Windows XP.
• Audio port bude nap´ajen ze sbˇernice USB.
• Zvukov´a ˇc´ast audio portu se bude hl´asit jako standardn´ı USB zaˇr´ızen´ı tˇr´ıdy Audio.
• Minim´aln´ı vzorkovac´ı frekvence audiokodeku bude 16 kHz.
• Minim´aln´ı rozliˇsen´ı A/D a D/A pˇrevodn´ıku bude 16 bit˚u.
• Hlasov´y v´ystup na reproduktor a sluch´atka bude srozumiteln´y s dostateˇcnou a regulo-
vatelnou hlasitost´ı.
• Hlasov´y vstup z mikrofonu bude dostateˇcnˇe kvalitn´ı pro pouˇzit´y rozpozn´avaˇc.
• Akce tlaˇc´ıtek bude moˇzno v´azat na ovl´ad´an´ı aplikac´ı a ˇr´ızen´ı hlasov´eho rozpozn´avaˇce
Charlie VoiceXML browser firmy IBM, nejl´epe prostˇrednictv´ım zaˇr´ızen´ı tˇr´ıdy Human
Interface Device (HID).
• Audio port bude fyzicky ˇreˇsen jako ergonomick´e stoln´ı zaˇr´ızen´ı v podobˇe stabiln´ıho
stoj´ankov´eho mikrofonu s tlaˇc´ıtky na z´akladnˇe.
• Vˇsechny komponenty mus´ı b´yt dostupn´e v ˇCesk´e republice, a to i v kusov´ych mnoˇzstv´ıch
a s dodac´ı lh˚utou do jednoho mˇes´ıce.
2.2 VoiceXML
K porozumˇen´ı c´ıl˚um t´eto pr´ace je nutn´e porozumˇet princip˚um pouˇzit´ı jazyka VoiceXML (Voice
Extensible Markup Language, VXML)[8], na nˇemˇz je funkˇcnost hlasov´eho rozpozn´avaˇce a v
d˚usledku i audio portu zaloˇzena.
2.2.1 Standard VoiceXML
VoiceXML je standard vyhl´aˇsen´y World Wide Web Consortiem urˇcen´y pro popis a realizaci
pˇredevˇs´ım hlasov´ych dialog˚u mezi ˇclovˇekem a poˇc´ıtaˇcem [8]. Tento standard definuje dialogy
za pouˇzit´ı rozpozn´an´ı a z´aznamu ˇreˇci, syntetizovan´e ˇreˇci, digit´aln´ıch audioz´aznam˚u, telefonu,
telefonn´ı t´onov´e volby (DTMF) a konverzace se sm´ıˇsenou iniciativou.
Pomoc´ı VoiceXML lze vytv´aˇret hlasov´e aplikace stejnˇe jednoduˇse jako bˇeˇzn´e HTML str´anky.
Form´atovac´ı pˇr´ıkazy podobn´e HTML tag˚um urˇcuj´ı ˇcasovou posloupnost jednotliv´ych akc´ı, kter´e
bˇehem dialogu VoiceXML browser interpretuje a prov´ad´ı. VoiceXML aplikace urˇcen´e pro PC
lze adaptovat i na aplikace vyuˇz´ıvaj´ıc´ı bˇeˇzn´e telefonn´ı linky.
4 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
2.2.2 Architektura VoiceXML
VoiceXML syst´em sest´av´a ze tˇr´ı ˇc´ast´ı: dokumentov´eho serveru, prohl´ıˇzeˇce a implementaˇcn´ı
platformy (obr. 2.3).
Obr´azek 2.1: Architektura VoiceXML, pˇrevzato z [8]
Dokumentov´y server na poˇz´ad´an´ı poskytuje prohl´ıˇzeˇci VoiceXML soubory, kter´e prohl´ıˇzeˇc in-
terpretuje podle poˇzadavk˚u implementaˇcn´ı platformy - obsluˇzn´eho programu. Obsluˇzn´y pro-
gram zajiˇsˇtuje odezvu uˇzivateli, zas´ıl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci, spouˇstˇen´ı uˇzivatelsk´ych program˚u
a pˇr´ıpadnˇe diagnostiku a konfiguraci cel´e sestavy.
2.2.3 Pouˇzit´ı VoiceXML
Samotn´y VoiceXML dokument je obsah textov´eho souboru uzavˇren´y elementy
<vxml>...</vxml>,
funkcionalita dokumentu je zajiˇstˇena dialogy menu
<menu>...</menu>
a formul´aˇr
<form>...<form>.
Menu uˇzivateli umoˇzˇnuje v´ybˇer z nab´ızen´ych alternativ a t´ım ˇr´ızen´ı pr˚ubˇehu dialogu, formul´aˇr
zajiˇsˇtuje vstup a v´ystup informac´ı. Konverzace obvykle zaˇc´ın´a proveden´ım prvn´ıho dialogu,
pˇred´av´a se na dalˇs´ı dialogy a konˇc´ı, pokud nˇekter´y dialog neurˇc´ı sv´eho n´asledn´ıka. D´ale je
moˇzn´e pouˇz´ıvat promˇenn´e k ukl´ad´an´ı ´udaj˚u, podm´ınky pro ˇr´ızen´ı a vˇetven´ı dialogu, poddia-
logy, pˇr´ıkazy k z´aznamu a reprodukci zvuku a mnoho dalˇs´ıch element˚u. Pˇri pouˇzit´ı rozpozn´avaˇce
je nutn´e kaˇzd´emu vstupn´ımu poli (field) definovat pouˇzitou gramatiku, tj. mnoˇzinu platn´ych
vstup˚u, a to buˇd pˇr´ımo v dokumentu, nebo v jin´em souboru.
KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 5
N´asleduje pˇr´ıklad jednoduch´eho VoiceXML dokumentu, pˇrevzat´eho z [8], kter´y jsem doplnil o
vysvˇetluj´ıc´ı koment´aˇre:
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd"
version="2.0">
<!--Prvn´ı dialog-->
<form>
<!--Vstupn´ı pole-->
<field name="drink">
<!--Dotaz na uˇzivatele-->
<prompt>Would you like coffee, tea, milk, or nothing?</prompt>
<!--Definice gramatiky uloˇzen´e v souboru drink.grxml-->
<grammar src="drink.grxml" type="application/srgs+xml"/>
</field>
<block>
<!--Odkaz na n´asleduj´ıc´ı dialog-->
<submit next="http://www.drink.example.com/drink2.asp"/>
</block>
</form>
</vxml>
Pr˚ubˇeh konverzace mezi poˇc´ıtaˇcem (C) a ˇclovˇekem (H):
C: Would you like coffee, tea, milk, or nothing?
H: Orange juice. (chybn´a volba)
C: I did not understand. (chybov´a zpr´ava z´avisl´a na konkr´etn´ım prohl´ıˇzeˇci)
C: Would you like coffee, tea, milk, or nothing?
H: Tea. (spr´avn´a volba)
C: (pokraˇcuje dokumentem drink2.asp)
Je zde vidˇet, ˇze pˇrev´aˇznou vˇetˇsinu funkˇcnosti vˇcetnˇe oˇsetˇren´ı nekorektn´ıch vstup˚u mus´ı obstarat
prohl´ıˇzeˇc. Obdobnˇe by mˇel fungovat i testovac´ı dokument intepretovan´y Charlie VoiceXML
browserem.
2.3 Charlie VoiceXML browser
Charlie VoiceXML browser [11] je konzolov´y prohl´ıˇzeˇc VoiceXML dokument˚u pro MS Windows.
Je schopen pracovat ve dvou z´akladn´ıch reˇzimech. Prvn´ım je reˇzim pˇr´ıkazov´eho ˇr´adku, ve
kter´em se dokument naˇcte pˇr´ıkazem
ebrowser filename.vxml
6 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
a automaticky se zaˇcne prov´adˇet od prvn´ıho formul´aˇre. Druh´ym je reˇzim XML Voice Browser
(XVB) serveru, ve kter´em prohl´ıˇzeˇc naslouch´a na dan´em portu (obvykle 7777) a ˇcek´a na TCP
spojen´ı a n´asledn´e pˇr´ıkazy. Volba reˇzimu a mnoha dalˇs´ıch parametr˚u (portu, jazykov´ych sou-
bor˚u, vzorkov´an´ı, logov´an´ı, timeout˚u apod.) se prov´ad´ı konfiguraˇcn´ım souborem mastercfg.cfg
podle dokumentace pˇriloˇzen´e k browseru [11].
2.3.1 Pˇr´ıkazy VoiceXML browseru
Charlie VoiceXML browser pracuje jako stavov´y automat, vykon´av´a pˇr´ıchoz´ı pˇr´ıkazy a odes´ıl´a
na nˇe pˇr´ım´e (direct) a asynchronn´ı odpovˇedi, mezi nimi jsou i informace o kaˇzd´e zmˇenˇe stavu
prohl´ıˇzeˇce (obr. 2.2). Kaˇzd´emu poˇzadavku m˚uˇze klient urˇcit jedineˇcn´e ID, kter´ym jsou pak
identifikov´any vˇsechny pˇr´ım´e odpovˇedi. Asynchronn´ı odpovˇedi ID nemaj´ı a jsou povaˇzov´any za
odpovˇedi na posledn´ı zpracovan´y pˇr´ıkaz. K testov´an´ı pˇr´ıkaz˚u pro serverov´y reˇzim je k dispozici
konzolov´y klient xvbc, umoˇzˇnuj´ıc´ı pˇres TCP spojen´ı zas´ılat jednotliv´e XVB pˇr´ıkazy nebo d´avky
pˇr´ıkaz˚u [10].
Obr´azek 2.2: Pˇr´ım´e a asynchronn´ı odpovˇedi, pˇrevzato z [10]
Toto je typick´a sekvence XVB pˇr´ıkaz˚u:
<!--Inicializace browseru-->
<xvb><init id="1"/></xvb>
<!--Naˇcten´ı dokumentu-->
<xvb><load id="2" uri="menu.vxml"/></xvb>
<!--Zaˇc´atek vykon´av´an´ı-->
<xvb><exec id="3"/></xvb>
<!--Storno vykon´av´an´ı-->
<xvb><cancel id="4"/></xvb>
<!--Izolace od browseru-->
<xvb><detach id="5"/></xvb>
<!--´Upln´e odpojen´ı od browseru-->
<xvb><disconnect id="6"/></xvb>
Na poˇzadavek o inicializaci pˇriˇsly postupnˇe tyto dvˇe odpovˇedi, znaˇc´ıc´ı postupn´e pˇrechody do
stav˚u ”initializing” a ”initialized”. Prvn´ı z nich je asynchronn´ı. Druh´a odpovˇeˇd je pˇr´ım´a, tedy
KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 7
je u n´ı moˇzn´e urˇcit, kter´ym pˇr´ıkazem byla vyvol´ana:
<?xml version="1.0"?>
<xvb version="0.4">
<result state="initializing"/>
</xvb>
<?xml version="1.0"?>
<xvb version="0.4">
<result id="1" state="initialized">
<session sid="2" remoteuri="" localuri="" vxmluri="" rooturi="" key="2Kb7FzP"
state="initialized"/>
</result>
</xvb>
Charlie VoiceXML browser je d´ale vybaven ”SocketIO Charlie extension”, coˇz mu umoˇzˇnuje
zas´ılat data (napˇr. rozpoznan´e vstupy) pˇres TCP spojen´ı na adresu a port definovan´y ve
VoiceXML dokumentu. Obdobnˇe funguje ”FileIO Charlie extension” umoˇzˇnuj´ıc´ı pr´aci se
soubory.
2.3.2 Vlastn´ı ovl´ad´an´ı - pl´anovan´y vxmlclient
Jedn´ım z c´ıl˚u t´eto pr´ace je pr´avˇe napsat jedno´uˇcelov´y zkuˇsebn´ı obsluˇzn´y program vxmlclient,
kter´y by nahradil uviverz´aln´ı xvbc a poskytl tak pohotovˇejˇs´ı podporu pˇri testov´an´ı audioportu.
Princip jeho funkce popisuje druh´a polovina pˇr´ıˇst´ı kapitoly.
2.4 St´avaj´ıc´ı hardware
Pˇri hled´an´ı optim´aln´ıho hardwarov´eho ˇreˇsen´ı jsem se nejprve zamˇeˇril na nalezen´ı hotov´eho
produktu nebo vyuˇzit´ı existuj´ıc´ıch komponent, pot´e jsem prozkoumal moˇzn´e cesty pˇri n´avrhu
vlastn´ıho zaˇr´ızen´ı.
2.4.1 Hotov´a ˇreˇsen´ı
Na trhu existuje velk´e mnoˇzstv´ı audiozaˇr´ızen´ı, z nichˇz vˇetˇsina splˇnuje poˇzadavky kladen´e na
zvukovou ˇc´ast audio portu, jako je vzorkovac´ı frekvence, rozliˇsen´ı pˇrevodn´ıku, sluch´atkov´e a
repro v´ystupy a pˇripojen´ı jako standardn´ı USB Audio. Hlasitost b´yv´a u jednoduˇsˇs´ıch z nich
ovl´ad´ana prostˇrednictv´ım poˇc´ıtaˇce, sloˇzitˇejˇs´ı m´ıvaj´ı vlastn´ı regul´atory ˇci ekvaliz´ery. ˇZ´adn´e
z nich vˇsak nen´ı provedeno jako stoln´ı zaˇr´ızen´ı s vestavˇen´ym reproduktorem a mikrofonem.
Jako z´asadn´ı probl´em se tak´e uk´azala neexistence tlaˇc´ıtek s program´atorsky nebo uˇzivatelsky
definovateln´ymi funkcemi, potˇrebn´ymi k ovl´ad´an´ı VoiceXML prohl´ıˇzeˇce.
2.4.2 ´Uprava existuj´ıc´ıch ˇreˇsen´ı
Zv´aˇzil jsem moˇznost upravit existuj´ıc´ı zvukovou kartu pˇrid´an´ım mikrofonu a reproduktoru
s v´ystupn´ım v´ykonov´ym zesilovaˇcem a tlaˇc´ıtkov´e ovl´ad´an´ı realizovat oddˇelenˇe jako zvl´aˇstn´ı
zaˇr´ızen´ı standardu HID. V´yhodou tohoto ˇreˇsen´ı by byla jednoduch´a realizace cel´e zvukov´e
ˇc´asti, i kdyˇz by znaˇcn´a ˇc´ast funkˇcnosti zvukov´e karty z˚ustala nevyuˇzita. Nev´yhodou je vˇsak
obt´ıˇzn´e a zbyteˇcnˇe komplikovan´e spojen´ı zvukov´e a tlaˇc´ıtkov´e ˇc´asti do jednoho celku, neboˇt
jsem se chtˇel vyhnout moˇznosti pˇripojovat obˇe ˇc´asti zvl´aˇsˇt jako samostatn´e jednotky pˇres USB
8 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
rozboˇcovaˇc, ˇc´ımˇz by se pˇrid´avaly relativnˇe nepotˇrebn´e podp˚urn´e komponenty. D´ale by se neod-
stranila nutnost tvorby ploˇsn´eho spoje, kter´y by byl nutn´y pro realizaci v´ystupn´ıho zesilovaˇce.
T´ım by rostla velikost a cena zaˇr´ızen´ı.
Po zv´aˇzen´ı tˇechto fakt˚u jsem zvolil variantu vlastn´ıho ˇreˇsen´ı cel´eho portu, kter´e se mi jevilo
jako pˇr´ımoˇcar´e a efektivn´ı.
2.5 Vlastn´ı ˇreˇsen´ı hardwaru
V´yvoj vlastn´ıho ˇreˇsen´ı jsem zah´ajil studiem specifikace USB [14], USB Audio Class [5] a USB
HID class [1]. Zde uv´ad´ım struˇcn´e shrnut´ı tˇech v´ysledk˚u, kter´e se pˇr´ımo v´aˇz´ı k n´avrhu audio
portu.
2.5.1 Universal Serial Bus (USB)
USB je nejrozˇs´ıˇrenˇejˇs´ı s´eriov´e rozhran´ı urˇcen´e k pˇripojov´an´ı periferi´ı k PC, pomoc´ı rozboˇcovaˇc˚u
umoˇzˇnuje pˇripojen´ı aˇz 127 zaˇr´ızen´ı v aˇz sedmi ´urovn´ıch a podporuje pˇripojov´an´ı od odpojov´an´ı
za bˇehu syst´emu (hot swapping) a automatickou konfiguraci zaˇr´ızen´ı (plug-and-play). Jedno
fyzick´e zaˇr´ızen´ı m˚uˇze disponovat v´ıce logick´ymi rozhran´ımi (napˇr. zvukov´ym a ovl´adac´ım),
pak se jedn´a o tzv. ”USB composite device”. D´ale je pro n´as podstatn´e to, ˇze umoˇzˇnuje jak
pˇripojen´ı zaˇr´ızen´ı s vlastn´ım nap´ajen´ım (self-powered device), tak i nap´ajen´ı zaˇr´ızen´ı s menˇs´ım
odbˇerem proudu pˇr´ımo ze sbˇernice (bus-powered device).
USB poskytuje zaˇr´ızen´ı nap´ajen´ı 5 V s pˇetiprocetn´ı toleranc´ı. Po pˇripojen´ı sm´ı zaˇr´ızen´ı odeb´ırat
proud max. 100 mA, avˇsak sm´ı poˇz´adat o nav´yˇsen´ı aˇz do 500 mA po kroc´ıch 2 mA. Pˇri pouˇzit´ı
mezilehl´ych bus-powered hub˚u se vˇsak pˇr´ıdˇel sniˇzuje na 400 mA. Nav´ıc na kaˇzd´em prvku doch´az´ı
k ´ubytku napˇet´ı, jak ukazuje obr. 2.3 [14]. I pˇri pˇripojen´ı pˇr´ımo ke koˇrenov´emu hubu v PC nebo
k jin´emu samostatnˇe nap´ajen´emu hubu se tedy m˚uˇze st´at, ˇze zaˇr´ızen´ı bude m´ıt k dispozici pouze
4,5 V. Operaˇcn´ı syst´em hostitelsk´eho poˇc´ıtaˇce typicky proudov´e zat´ıˇzen´ı sbˇernice monitoruje a
varuje uˇzivatele v pˇr´ıpadˇe, ˇze je poˇzadov´an vˇetˇs´ı proud, neˇz je dostupn´y. Z toho vypl´yv´a, ˇze
vˇsechny komponenty navrhovan´eho zaˇr´ızen´ı mus´ı b´yt schopn´e pracovat pˇri napˇet´ı menˇs´ım nebo
rovn´em 4,5 V (v ide´aln´ım pˇr´ıpadˇe vˇsechny pˇri stejn´em) a souhrnn´y odbˇer nesm´ı pˇres´ahnout
500 mA.
Obr´azek 2.3: Maxim´aln´ı ´ubytky nap´ajec´ıho napˇet´ı pˇri pouˇzit´ı bus-powered hubu, pˇrevzato z
[14]
Zaˇr´ızen´ı pˇripojen´a k rozhran´ı USB mohou b´yt navrˇzen´a zcela dle v˚ule v´yrobce, a pak potˇrebuj´ı
specifick´y ovladaˇc. Druhou moˇznost´ı je postavit zaˇr´ızen´ı spadaj´ıc´ı do nˇekter´ych z tzv. USB
device classes - tˇr´ıd standardn´ıch USB zaˇr´ızen´ı. Tyto tˇr´ıdy definuj´ı jednotnou identifikaci a
KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 9
chov´an´ı zaˇr´ızen´ı, takˇze jeden ovladaˇc m˚uˇze b´yt pouˇzit pro vˇsechna zaˇr´ızen´ı dan´e tˇr´ıdy. Operaˇcn´ı
syst´em by mˇel implementovat ovladaˇce vˇsech tˇr´ıd a t´ım zajistit podporu libovoln´emu zaˇr´ızen´ı
spadaj´ıc´ımu do nˇekter´e z nich. Tento rys USB architektury umoˇzˇnuje, abychom za pouˇzit´ı dvou
USB tˇr´ıd realizovali audio port bez nutnosti ps´at jak´ekoli ovladaˇce. Pro naˇse ´uˇcely se nab´ız´ı
Audio class a Human Interface Device (HID) class.
2.5.1.1 USB Audio class
Tˇr´ıdu USB Audio definuje USB Implementers Forum, Inc. [5] jako tˇr´ıdu obsahuj´ıc´ı veˇsker´a
zaˇr´ızen´ı pod´ılej´ıc´ı se na zpracov´an´ı zvuku a ˇr´ızen´ı zvukov´ych funkc´ı. To znamen´a, ˇze obstar´av´a
operace s digit´aln´ımi i analogov´ymi audio daty stejnˇe jako ovl´ad´an´ı hlasitosti, ekvaliz´er, mix´er,
gener´atory efekt˚u a dalˇs´ı. Zaˇr´ızen´ı t´eto tˇr´ıdy se po pˇripojen´ı k poˇc´ıtaˇci bude chovat jako
zvukov´a karta se vˇsemi tˇemito funkcemi, pokud byly implementov´any.
2.5.1.2 USB Human Interface Device (HID) class
Tˇr´ıda USB Human Interface Device je pops´ana v´ıce dokumenty USB Implementers Fora [1].
Je to tˇr´ıda popisuj´ıc´ı zaˇr´ızen´ı pro pˇr´ımou komunikaci ˇclovˇeka a poˇc´ıtaˇce, jako jsou kl´avesnice,
myˇsi, hern´ı ovladaˇce, tlaˇc´ıtkov´e panely a alfanumerick´e displeje. HID zaˇr´ızen´ı jsou podle typu
dˇelena do ”usage pages” (str´anky uˇzit´ı), kter´e bl´ıˇze urˇcuj´ı pouˇzit´ı dan´eho zaˇr´ızen´ı (napˇr. Key-
board/Keypad, LEDs, Telephony, Consumer, Game Controls, Button apod.).
Kaˇzd´a usage page seskupuje jednotliv´a ”usages” podobn´eho druhu (napˇr. Consumer usage
page zahrnuje Stop, Eject, Pause, Quit, Help a dalˇs´ı usages) a d´ale m˚uˇze obsahovat i spoleˇcnˇe
vystupuj´ıc´ı skupiny logicky bl´ızk´ych prvk˚u (napˇr. do skupiny Consumer Control patˇr´ı Vo-
lume Increment, Volume Decrement, Mute a dalˇs´ı). Jak usage pages, tak i jednotliv´e usages a
skupiny bl´ızk´ych usages jsou identifikov´any dvojm´ıst´ymi hexadecim´aln´ımi ˇc´ısly.
Informace z HID zaˇr´ızen´ı jsou typicky pˇri kaˇzd´e ud´alosti pˇren´aˇseny pˇres interruptov´e rozhran´ı
ve formˇe ˇc´ıseln´ych scan-k´od˚u popisuj´ıc´ıch stav ovl´adac´ıch prvk˚u. Tyto scan-k´ody mohou b´yt
d´ıky API operaˇcn´ıho syst´emu zas´ıl´any ve formˇe zpr´av obsluˇzn´ym aplikac´ım.
2.5.2 Idea vlastn´ıho ˇreˇsen´ı
Hlavn´ı myˇslenkou m´eho ˇreˇsen´ı je maxim´aln´ı vyuˇzit´ı standardizovan´ych zaˇr´ızen´ı a rozhran´ı. Jako
optim´aln´ı se jev´ı vyuˇzit´ı komponent tˇr´ıdy Audio pro ˇc´ast zvukovou a tˇr´ıdy Human Interface
Device pro ˇc´ast tlaˇc´ıtkovou. V ide´aln´ım pˇr´ıpadˇe se podaˇr´ı naj´ıt integrovan´e reˇsen´ı, kter´e obstar´a
jak USB komunikaci, tak zpracov´an´ı zvuku a obsluhu tlaˇc´ıtek. V dalˇs´ı ˇc´asti pr´ace se pokus´ım
takov´yto vhodn´y hardware nal´ezt a v z´avislosti na nˇem pak vypracovat hardwarov´e i softwarov´e
ˇreˇsen´ı.
10 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 11
3 Anal´yza a n´avrh ˇreˇsen´ı
V t´eto kapitole provedu a vysvˇetl´ım v´ybˇer hardwarov´ych komponent a pop´ıˇsi jejich propojen´ı.
Na to nav´aˇzi n´avrhem obsluˇzn´eho programu a testovac´ıho dokumentu.
3.1 Volba hardwarov´e architektury
3.1.1 Univerz´aln´ı obvody
Pˇri n´avrhu nov´eho zaˇr´ızen´ı bylo v z´asadˇe moˇzn´e postupovat dvˇema smˇery. Jako prvn´ı jsem
zv´aˇzil moˇznost implementace z´akladn´ı funkcionality pomoc´ı univerz´aln´ıch mikroprocesor˚u.
Prohl´edl jsem nab´ıdku firem Microchip, Atmel, Analog Devices, Zilog, NXP Semiconduc-
tors, Freescale Semiconductor, ON Semiconductor, National Semiconductor, Maxim Integrated
Products a Texas Instruments. Aˇckoli existuje velk´e mnoˇzstv´ı procesor˚u, nepodaˇrilo se mi
nal´ezt ˇz´adn´y, kter´y by souˇcasnˇe disponoval A/D a D/A kodekem poˇzadovan´e kvality, audio
v´ybavou a USB rozhran´ım. Bylo by tedy pravdˇepodobnˇe nutn´e pouˇz´ıt tˇri samostatn´e obvody:
kodek, sign´alov´y procesor a USB controller (a d´ale samozˇrejmˇe stabiliz´ator napˇet´ı a vstupn´ı
a v´ystupn´ı zesilovaˇce). Zaˇr´ızen´ı by tedy bylo relativnˇe sloˇzit´e a n´aroˇcn´e na tvorbu firmwaru i
obsluˇzn´e aplikace.
3.1.2 Specializovan´e obvody
Druhou cestou bylo pouˇzit´ı specializovan´eho obvodu vyroben´eho na m´ıru podobn´ym aplikac´ım.
Opˇet jsem proˇsel nab´ıdky v´yˇse zm´ınˇen´ych firem a z nevelk´eho v´ybˇeru jsem jako jedin´e vhodn´e
zhodnotil obvody ˇrady PCM290x firmy Texas Instruments. Jejich hlavn´ı v´yhodou je v´yznamn´a
jednoduchost proti vˇsem ostatn´ım. Funkce tˇechto kodek˚u s USB rozhran´ım pˇresnˇe pokr´yvaj´ı
pˇr´ısluˇsn´e poˇzadavky ze zad´an´ı a mimo nˇe nenab´ızej´ı ˇz´adn´e nadbyteˇcn´e schopnosti. Nakonec
jsem se rozhodl pro kodek PCM2904, kter´y je nejjednoduˇsˇs´ım z kodek˚u pracuj´ıc´ıch v z´akladn´ım
proveden´ı pˇri nap´ajec´ım napˇet´ı kolem 5 V a umoˇzˇnuj´ıc´ıch poˇz´adat USB hostitele o proud aˇz
500 mA.
3.1.3 V´ysledn´a hardwarov´a architektura
V´ybˇer komponent jsem pˇrizp˚usobil vlastnostem kodeku PCM2904 [13]. Ten s´am o sobˇe
neposkytuje dostateˇcn´y v´ykon pro buzen´ı reproduktor˚u, ani nen´ı pˇrizp˚usoben pro pˇr´ım´e
pˇripojen´ı mikrofonu a nedok´aˇze tyto souˇc´asti nap´ajet. I pˇres doplnˇen´ı tˇechto relativnˇe
nez´avisl´ych prvk˚u z˚ustane zaˇr´ızen´ı pomˇernˇe jednoduch´e a snadno modifikovateln´e.
Pˇri v´ybˇeru dalˇs´ıch souˇc´astek jsem z˚ustal u firmy Texas Instruments, neboˇt nab´ız´ı dostateˇcn´y
sortiment zesilovaˇc˚u i stabiliz´ator˚u vˇcetnˇe dobr´e dokumentace a uk´azkov´ych zapojen´ı. Texas
Instruments m´a zastoupen´ı a s´ıˇt distributor˚u i v ˇCR a jej´ı produkty jsou u n´as jiˇz zabˇehl´e.
Pro experiment´aln´ı v´yvoj je pˇr´ızniv´e i to, ˇze nab´ız´ı bezplatn´e zasl´an´ı vzork˚u souˇc´astek s dobou
doruˇcen´ı dvou aˇz tˇr´ı t´ydn˚u.
Zaˇr´ızen´ı tedy bude obsahovat tyto ˇctyˇri z´akladn´ı komponenty (obr. 3.1):
• kodek PCM2904DB zajiˇsˇtuj´ıc´ı komunikaci pˇres USB, zpracov´an´ı zvukov´ych proud˚u a
obsluhu tlaˇc´ıtek,
• v´ystupn´ı zesilovaˇc TPA6011A4PWP dod´avaj´ıc´ı v´ykon reproduktoru a sluch´atk˚um,
• vstupn´ı zesilovaˇc OPA353UA pro buzen´ı A/D pˇrevodn´ıku kodeku mikrofonn´ım sign´alem,
12 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
• nastaviteln´y stabiliz´ator napˇet´ı REG103UA-A pro nap´ajen´ı obou zesilovaˇc˚u, mikrofonu a
ovl´adac´ıch prvk˚u.
Obr´azek 3.1: Blokov´e sch´ema audioportu
3.2 Pouˇzit´e komponenty
3.2.1 PCM2904DB - audio kodek s rozhran´ım USB
Je pops´an v datasheetu [13]. Jedn´a se o jednoˇcipov´y stereo audio kodek s USB rozhran´ım verze
1.1. Pracuje bez jak´ehokoli uˇzivatelsk´eho softwarov´eho k´odu a chov´a se jako v´yˇse zm´ınˇen´e USB
audio zaˇr´ızen´ı (zvukov´a ˇc´ast), resp. HID zaˇr´ızen´ı Consumer usage page (0x0C), Consumer Con-
trol (0x01) (tlaˇc´ıtkov´a ˇc´ast) [1]. PCM2904 obsahuje 16-bitov´e Delta-Sigma pˇrevodn´ıky (obr.
3.2). D/A pˇrevodn´ık pracuje pˇri vzorkovac´ı frekvenci 32, 44,1 nebo 48 kHz, A/D pˇrevodn´ık pˇri
8, 11,025, 16, 22,05, 32, 44,1 a 48 kHz. Regulace hlasitosti je zajiˇstˇena v rozsahu 0 aˇz -64 dB s
krokem 1 dB nez´avisle pro kaˇzd´y o obou kan´al˚u.
Zaˇr´ızen´ı HID m´a z pouzdra vyvedeno piny HID0, HID1 a HID2, jak je vidˇet na obr. 3.2 a
3.3. Stav tlaˇc´ıtek je zjiˇsˇtov´an a hl´aˇsen kaˇzd´ych 32 milisekund. ˇC´ıseln´e hodnoty scan-k´od˚u
pouˇziteln´e obluˇznou aplikac´ı jsou tvoˇreny jako tˇr´ıbitov´y bin´arn´ı k´od, kde HID0 m´a v´yznam
nejniˇzˇs´ıho a HID2 nejvyˇsˇs´ıho bitu, tedy dosahuj´ı hodnot 0 aˇz 7.
Po pˇripojen´ı k USB a enumeraci poˇz´ad´a kodek o nap´ajen´ı 500 mA, pot´e power manager zmˇenou
sign´alu SSPND do jedniˇcky povol´ı ˇcinnost podp˚urn´ych obvod˚u (obr. 3.3). Z´aroveˇn zaˇcne
vodiˇc SSPND slouˇzit jako zdroj napˇet´ı pro HID piny vybaven´e intern´ım pull-down rezistorem,
ovl´ad´an´ı tedy prob´ıh´a pˇripojov´an´ım kladn´eho napˇet´ı. Kodek pro svou potˇrebu d´ale obsahuje
integrovan´y regul´ator napˇet´ı 3,3 V, je si tedy schopen s´am zajistit nap´ajen´ı. Pro svou funkci
potˇrebuje pouze 12 MHz krystalov´y rezon´ator a nˇekolik rezistor˚u a blokovac´ıch kondenz´ator˚u.
Poˇzadovan´e nap´ajec´ı napˇet´ı je 4,35 aˇz 5,25 V a odbˇer proudu 56 mA. Fyzicky je kodek proveden
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 13
Obr´azek 3.2: Blokov´e sch´ema PCM2904, pˇrevzato z [13]
jako 28-v´yvodov´a SMD souˇc´astka v pouzdru SSOP (DB) s rozteˇc´ı v´yvod˚u 0,65 mm. Tyto
vlastnosti jej po doplnˇen´ı o vstupn´ı a v´ystupn´ı zesilovaˇce pˇredurˇcuj´ı k pouˇzit´ı v audio portu.
3.2.2 TPA6011A4PWP - v´ykonov´y audio zesilovaˇc
Je pops´an v datasheetu [7]. TPA6011A4 je v´ystupn´ı v´ykonov´y stereo zesilovaˇc urˇcen´y k pouˇzit´ı
pˇredevˇs´ım v notebooc´ıch a kapesn´ıch poˇc´ıtaˇc´ıch. Do kaˇzd´eho kan´alu je schopn´y dod´avat v´ykon
2 W pˇri z´atˇeˇzi s impedanc´ı 3 ohmy. Umoˇzˇnuje pouˇzit´ı diferenˇcn´ıch nebo (pro n´as vhodnˇejˇs´ıch)
single-ended vstup˚u. Pomoc´ı multiplexor˚u lze volit mezi dvˇema shodn´ymi stereovstupy (pro
dva r˚uzn´e zdroje sign´alu) a dvˇema r˚uzn´ymi reˇzimy t´ehoˇz stereov´ystupu (jedn´ım pro sluch´atka,
druh´ym pro reproduktory), jak ukazuje blokov´e sch´ema 3.4.
Aktivn´ı je vˇzdy pr´avˇe jeden vstup voliten´y pinem HP/LINE, nula aktivuje vstupy RLINEIN
a LLINEIN, jedniˇcka pˇripoj´ı RHPIN a LHPIN. Pro audio port jsem pouˇzil prvn´ı moˇznost,
HP/LINE, RHPIN i LHPIN jsem pˇrizemnil a RLINEIN a LLINEIN jsem pˇres vazebn´ı kon-
14 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.3: Z´akladn´ı zapojen´ı PCM2904, pˇrevzato z [13]
denz´ator 10M pˇripojil pˇr´ımo k v´ystupu kodeku. Nez´avisle na vstupu lze pinem SE/BTL v nule
pˇripojit pˇr´ıdavn´e zesilovaˇce na v´yvodech LOUT- a ROUT- a t´ım vybrat reˇzim BTL (reproduk-
tor je pak zapojen mezi ROUT+ a ROUT-, resp. LOUT+ a LOUT-). Jedniˇcka tyto zesilovaˇce
odpoj´ı a t´ım se pˇrejde do reˇzimu SE (sluch´atka pak jsou pˇres vazebn´ı kondenz´atory Cc pˇripojena
mezi ROUT+ resp. LOUT+ a zemi). Nastaven´ı SE/BTL je pˇri pouˇzit´ı sluch´atkov´eho konek-
toru se sp´ınaˇcem prov´adˇeno automaticky d´ıky odporov´emu dˇeliˇci, obr. 3.5. Takto jsem se
rozhodl zapojit i v´ystup audio portu, ovˇsem pro mono reproduktor jsem pouˇzil pouze lev´y
kan´al.
ˇR´ızen´ı hlasitosti zajiˇsˇtuje jednotka ”32-Step Volume Control” na obr. 3.4. Stejnosmˇern´ym
napˇet´ım na pinech VOLUME, SEDIFF a SEMAX se nastavuje hlasitost v´ystupu, rozd´ıl hlasi-
tosti reproduktor˚u a sluch´atek a maxim´aln´ı hlasitost sluch´atek. Ovl´adac´ı napˇet´ı se sm´ı pohy-
bovat v intervalu od nuly do aktu´aln´ıho nap´ajec´ıho napˇet´ı zesilovaˇce a je rovnomˇernˇe rozdˇeleno
na 32 krok˚u, z nichˇz kaˇzd´y mimo prvn´ıho odpov´ıd´a 2 dB zisku zesiovaˇce, kter´e se tak m˚uˇze
pohybovat v rozmez´ı -46 aˇz +14 dB. Prvn´ı interval od 0 znamen´a zisk -85 dB, tedy fakticky
nulovou hlasitost. V audio portu nen´ı tato regulace hlasitosti pro bˇeˇzn´y provoz potˇrebn´a, neboˇt
je jiˇz vyˇreˇsena kodekem. Proto jsem se rozhodl osadit pouze tˇri trimry 100k pro poˇc´ateˇcn´ı nas-
taven´ı.
Doporuˇcen´e nap´ajec´ı napˇet´ı je 4 aˇz 5,5 V. Pˇri pˇredpokl´adan´e z´atˇeˇzi 8 ohm a nap´ajec´ım napˇet´ı
4,5 V by zesilovaˇc mˇel pˇredat maxim´aln´ı v´ykon 1 W a pˇritom vyz´aˇrit nejv´yˇse 0,6 W, coˇz by mˇel
pokr´yt nap´ajec´ı proud 355 mA. Fyzicky je obvod proveden jako 20-v´yvodov´a SMD souˇc´astka
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 15
Obr´azek 3.4: Blokov´e sch´ema TPA6011A4, pˇrevzato z [7]
v pouzdru HTSSOP (PWP) s rozteˇc´ı v´yvod˚u 0,65 mm.
3.2.3 OPA353UA - operaˇcn´ı zesilovaˇc
Je pops´an v datasheetu [6] a zobrazen na obr. 3.6 a firmou Texas Instruments je doporuˇcen´y
pro pˇripojov´an´ı vstup˚u ke kodek˚um ˇrady PCM290x [12]. Je to rail-to-rail operaˇcn´ı zesilovaˇc
urˇcen´y pro nasazen´ı v miniaturizovan´ych aplikac´ıch a vhodn´y pro buzen´ı A/D pˇrevodn´ık˚u.
Pouˇz´ıv´a nesymetrick´e nap´ajen´ı 2,7 aˇz 5,5 V a m´a klidov´y odbˇer proudu do 8 mA. Vzhledem k
pˇripojen´ı na vysokoimpedanˇcn´ı vstup kodeku nehroz´ı v´yrazn´y vzestup odbˇeru.
Vyr´ab´ı se jak samostatnˇe, tak ve v´ıce kopi´ıch ve spoleˇcn´em pouzdˇre. Zvolil jsem variantu
samostatn´eho OPA353UA v osmiv´yvodov´em SMD pouzdˇre SOIC (D) s rozteˇc´ı v´yvod˚u 1,27
mm. Na vstup jsem pˇripojil mono mikrofon a v´ystup jsem rozdˇelil na dvˇe ˇc´asti pˇriveden´e pˇres
blokovac´ı kondenz´atory do vstup˚u VINL a VINR kodeku.
16 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.5: Z´akladn´ı zapojen´ı TPA6011A4, pˇrevzato z [7]
3.2.4 REG103UA-A - stabiliz´ator napˇet´ı
Je pops´an v datasheetu [9] a jeho zapojen´ı je naznaˇceno na obr. 3.7. Jedn´a se o stabiliz´ator
napˇet´ı o nastaviteln´e velikosti 1,295 aˇz 5,5 V, pochopitelnˇe shora d´ale omezen´eho nap´ajec´ım
napˇet´ım samotn´eho stabiliz´atoru. Zvolil jsem jej pro stabilizaci nap´ajec´ıho napˇet´ı obou ze-
silovaˇc˚u, neboˇt pouˇziteln´y pr˚unik povolen´ych napˇet´ı zesilovaˇc˚u a garantovan´eho napˇet´ı posky-
tovan´eho USB rozhran´ım (po odeˇcten´ı ´ubytku na stabiliz´atoru) je 4 aˇz 4,385 V.
Nastaven´ı v´ystupn´ıho napˇet´ı se prov´ad´ı volbou rezistor˚u R1 a R2 podle vzorce na obr. 3.7.
Pouˇzil jsem hodnoty R1 = 30k a R2 = 13k, coˇz odpov´ıd´a napˇet´ı 4,28 V leˇz´ıc´ımu ve v´yˇse
uveden´em intervalu, kter´e my mˇelo postaˇcovat s rezervou na obou stran´ach. Proudov´a rezerva je
tak´e zajiˇstˇena, i v extr´emn´ıch podm´ınk´ach m´a stabiliz´ator dodat minim´alnˇe 500 mA. Vyz´aˇren´e
teplo vlastn´ıho stabiliz´atoru pˇri napˇet´ı USB rozhran´ı 5 V je P = (Vin - Vout)*Iout = (5 V -
4,28 V)*(355 mA + 8 mA) = 0,261 W, coˇz odpov´ıd´a vlastn´ımu odbˇeru stabiliz´atoru 52 mA.
3.2.5 LSM-S20K - miniaturn´ı reproduktor
Pouˇzit´y reproduktor mus´ı pˇredevˇs´ım vˇernˇe reprodukovat ˇreˇc. Nen´ı tedy nutn´e snaˇzit se za
kaˇzdou cenu pokr´yt cel´e slyˇsiteln´e zvukov´e spektrum, ale staˇc´ı zajistit reprodukci pˇribliˇznˇe
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 17
Obr´azek 3.6: Operaˇcn´ı zesilovaˇc OPA353, pˇrevzato z [6]
Obr´azek 3.7: Nastaviteln´y stabiliz´ator napˇet´ı REG103A, pˇrevzato z [9]
v rozmez´ı 125 Hz aˇz 8 kHz. Horn´ı hranice 8 kHz je z´aroveˇn maxim´aln´ı frekvenc´ı, kterou je
podle Nyquistova vzorkovac´ıho teor´emu teoreticky moˇzn´e zachytit pˇri vzorkovac´ı frekvenci 16
kHz, kter´a je pro audio port poˇzadov´ana. Impedance reproduktoru mus´ı odpov´ıdat n´arok˚um
zesilovaˇce. Z´aroveˇn mus´ı b´yt povolen´y v´ykon reproduktoru vˇetˇs´ı nebo roven v´ykonu zesilovaˇce,
neboˇt by jinak mohlo doj´ıt k jeho poˇskozen´ı. V neposledn´ı ˇradˇe by mˇel b´yt reproduktor kom-
paktn´ı a fyzicky proveden´y tak, aby jej bylo moˇzno do experiment´aln´ıho zaˇr´ızen´ı namontovat
bez potˇreby lepen´ı.
Rozhodl jsem se pouˇz´ıt miniaturn´ı reproduktor LSM-S20K [2] z obr. 3.8. Je to miniaturn´ı
reproduktor prim´arnˇe urˇcen´y pro pouˇzit´ı v notebooc´ıch, monitorech a vestavˇen´ych zaˇr´ızen´ıch.
Jeho z´akladn´ı parametry shrnuje tabulka 3.1. Je vidˇet, ˇze by mˇel poˇzadavk˚um audioportu plnˇe
vyhovovat.
3.2.6 Genius MIC-01A - stoj´ankov´y mikrofon
Stejnˇe jako reproduktor i mikrofon mus´ı vˇernˇe pˇren´aˇset hlas, coˇz vˇsechny mikrofony splˇnuj´ı.
Pro uˇzit´ı ve stoln´ıch mikrofonech jsou vhodn´e levn´e a kvalitn´ı elektretov´e mikrofony, prin-
cipi´alnˇe zaloˇzen´e na sn´ım´an´ı zmˇen napˇet´ı pˇri zmˇen´ach kapacity kondez´atoru tvoˇren´eho kmitaj´ıc´ı
membr´anou. Zmˇeny jsou velmi mal´e, proto je do mikrofonn´ıch vloˇzek vestavov´an zesilovaˇc s
tranzistory FET a mikrofon vyˇzaduje nap´ajen´ı (obr. 3.9). Nap´ajec´ı napˇet´ı Vs o velikosti 2,5
aˇz 10 V se pˇriv´ad´ı pˇres rezistor 2k2, mikrofon je pak od vstupu zesilovaˇce nutn´e oddˇelit kon-
denz´atorem 10M. Nap´ajec´ı proud je nejv´yˇse 1 mA.
18 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.8: Reproduktor LSM-S20K, pˇrevzato z [2]
Typ Jednotka LSM-S20K
Impedance Ω 8
Jmenovit´y v´ykon W 1 ± 15%
Maxim´aln´ı v´ykon W 2
Rezonanˇcn´ı frekvence Hz 500 ± 20%
Akustick´y tlak dB 83 ± 3
Frekvenˇcn´ı p´asmo Hz Fo ∼ 20000
Tabulka 3.1: Parametry reproduktoru LSM-S20K
Z d˚uvodu jednoduch´e mont´aˇze jsem zvolil hotov´y stoj´ankov´y mikrofon Genius MIC-01A. Jeho
frekvenˇcn´ı rozsah je 100Hz aˇz 11kHz, v´ystupn´ı impedance 2 kΩ.
3.2.7 Sluch´atka
Pˇredpokl´ad´a se pouˇzit´ı bˇeˇzn´ych sluch´atek k osobn´ımu poˇc´ıtaˇci o impedanci 32 Ω, pro kter´e je
pˇrizp˚usoben zesilovaˇc. Hlasitost je moˇzno upravit piny SEDIFF se SEMAX zesilovaˇce.
3.3 Ovˇeˇren´ı dostateˇcnosti nap´ajen´ı
Souhrnn´y odbˇer proudu cel´eho zaˇr´ızen´ı je 56 mA (kodek) + 355 mA (v´ystupn´ı zesilovaˇc) + 8
mA (vstupn´ı zesilovaˇc) + 52 mA (stabiliz´ator) = 471 mA pˇri souˇcasn´em pln´em zat´ıˇzen´ı vˇsech
komponent. Mˇela by tedy st´ale b´yt k dispozici urˇcit´a rezerva pro ovl´adac´ı prvky, nap´ajen´ı
mikrofonu (dohromady jednotky mA) a neoˇcek´avan´e pˇr´ıpady. Audio port nap´ajen´y z USB je
tedy pomoc´ı tˇechto komponent realizovateln´y.
3.4 Softwarov´e ˇreˇsen´ı
V t´eto ˇc´asti rozeberu softwarovou obsluhu zaˇr´ızen´ı pod MS Windows XP, hlavn´ı d˚uraz bude
kladen zejm´ena na raw input API.
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 19
Obr´azek 3.9: Nap´ajen´ı elektretov´eho mikrofonu, pˇrevzato z [3]
3.4.1 Audio
Jak jiˇz bylo ˇreˇceno, kodek PCM2904 je standardn´ım USB audio zaˇr´ızen´ım, takˇze jej lze pouˇz´ıt
jako bˇeˇznou zvukovou kartu. Pˇri pˇripojen´ı k poˇc´ıtaˇci se automaticky rozpozn´a, doinstaluj´ı se
pro nˇej ovladaˇce a nahrad´ı se j´ım dosavadn´ı aktivn´ı zvukov´e zaˇr´ızen´ı. Regulace v´ystupn´ı hla-
sitosti se prov´ad´ı klasicky, tj. programem ”Ovl´ad´an´ı hlasitosti” na liˇstˇe Windows. Nastaven´ı
hlasitosti mikrofonu nen´ı sofwarovˇe provediteln´e. Pˇri odpojen´ı kodeku se okamˇzitˇe obnov´ı nas-
taven´ı a funkˇcnost p˚uvodn´ıho zaˇr´ızen´ı.
Rozpozn´avaˇc a ˇreˇcov´y syntenz´ator Charlie VoiceXML browseru pˇri bˇeˇzn´em nastaven´ı pracuje
s pr´avˇe aktivn´ım zaˇr´ızen´ım, ˇz´adn´e ´upravy ani popis dalˇs´ıch detail˚u proto nen´ı potˇrebn´y.
3.4.2 Tlaˇc´ıtka
Tlaˇc´ıtka na pinech HID0 aˇz HID2 jsou ve Windows defaultnˇe mapov´ana jako ovl´ad´an´ı hlasi-
tosti, viz tab. 3.2. M´ym ´ukolem tedy bylo zjistit, jak lze obsluˇzn´ym programem z´ıskat infor-
mace o stavech a zmˇen´ach stav˚u tˇechto tlaˇc´ıtek. Ideou bylo odchyt´avat vlastn´ı aplikac´ı vˇsechny
tlaˇc´ıtkov´e ud´alosti a reagovat na nˇe zas´ıl´an´ım odpov´ıdaj´ıch pˇr´ıkaz˚u VoiceXML prohl´ıˇzeˇci. Pr´aci
na probl´emu jsem zah´ajil vyhled´av´an´ım podklad˚u v MSDN Library [4], kde jsem se na do-
poruˇcen´ı vedouc´ıho pr´ace zamˇeˇril na uˇzivatelsk´y vstup podle raw input modelu.
3.4.3 Raw Input Model
Raw Input Model pouˇz´ıvan´y MS Windows XP je urˇcen ke snadn´e obsluze zaˇr´ızen´ı uˇzivatelsk´eho
rozhran´ı zaˇr´ızen´ı HID (Human Interface Device). Pˇredpokl´ad´a pouˇzit´ı Windows API. Proti
tradiˇcn´ımu pˇr´ıstupu by mˇel m´ıt pro autora aplikac´ı tyto v´yhody [4]:
• aplikace nemus´ı detekovat ani otev´ırat zaˇr´ızen´ı,
• aplikace z´ısk´av´a data pˇr´ımo ze zaˇr´ızen´ı (nikoli virtu´aln´ı k´ody) a zpracov´av´a je podle sv´ych
potˇreb,
• aplikace m˚uˇze rozliˇsit v´ıce vstupn´ıch zdroj˚u, i kdyˇz jsou stejn´eho typu (napˇr. v´ıce r˚uzn´ych
kl´avesnic),
• aplikace ˇr´ıd´ı datov´y provoz v´ybˇerem dat buˇd z cel´e skupiny zaˇr´ızen´ı, nebo jen z vybran´ych
typ˚u,
• zaˇr´ızen´ı mohou b´yt pouˇzita okamˇzitˇe po uveden´ı na trh, nen´ı tˇreba ˇcekat na vytvoˇren´ı
specifick´ych typ˚u zpr´av a jejich implementaci do operaˇcn´ıho syst´emu.
20 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Pin Usage ID Scan-k´od Funkce
HID0 0xE2 1 Mute
HID1 0xE9 2 Volume up
HID2 0xEA 4 Volume down
Tabulka 3.2: Popis pin˚u HID0 aˇz HID2 kodeku PCM2904
Raw input model tedy pˇrin´aˇs´ı moˇznost implementovat zaˇr´ızen´ı zp˚usobem ”vyrob hardware -
pˇripoj k PC - oˇsetˇri zpr´avy - zaˇcni prod´avat”. Tento pˇr´ıstup je pro n´as vhodn´y, proto jsem jej
pouˇzil. Obsluˇzn´y program jsem psal v jazyce C++.
3.4.3.1 Registrace raw input zaˇr´ızen´ı
Aby mohla aplikace pouˇz´ıvat raw input a odchyt´avat ud´alosti, mus´ı si nejprve obsluhovan´e
zaˇr´ızen´ı zaregistrovat. K registraci zaˇr´ızen´ı je nutn´e vytvoˇrit struktury typu RAWINPUT-
DEVICE a uloˇzit do nich pole TLC (top level collection) pro poˇzadovan´a zaˇr´ızen´ı, kter´a se
skl´adaj´ı z identifik´ator˚u UsagePage a Usage tˇechto zaˇr´ızen´ı. D´ale je moˇzn´e nastavit urˇcit´e
pˇr´ıznaky dwFlags, nˇekter´e z nich jsou vˇsak pˇr´ıpustn´e jen pro kl´avesnice a polohovac´ı zaˇr´ızen´ı.
Pak se provede vlastn´ı registrace zavol´an´ım RegisterRawInputDevices().
Tento k´od prov´ad´ı v obsluˇzn´em programu ”vcmlclient” registraci tlaˇc´ıtkov´e ˇc´asti audio portu:
RAWINPUTDEVICE Rid;
// UsagePage kodeku je Consumer Page (0x0C)
Rid.usUsagePage = 0x0C;
// Usage kodeku je Consumer Control (0x01)
Rid.usUsage = 0x01;
// S t´ımto pˇr´ıznakem bude aplikace pˇrij´ımat zpr´avy i na pozad´ı
Rid.dwFlags = RIDEV_INPUTSINK;
// Zpr´avy bude obluhovat handler hlavn´ıho okna
Rid.hwndTarget = hwndMainWindow;
// Pokud se registrace nepodaˇr´ı, nahl´as´ı se chyba
if (RegisterRawInputDevices(&Rid, 1, sizeof(Rid)) == FALSE) SignalizeError();
D˚uleˇzit´y je fakt, ˇze lze zaregistrovat i zaˇr´ızen´ı, kter´e nen´ı aktu´alnˇe k poˇc´ıtaˇci pˇripojeno - stane
se pouze to, ˇze od nˇej nebudou pˇrich´azet ˇz´adn´e zpr´avy. Po pˇripojen´ı zaˇr´ızen´ı zaˇcne Windows
Manager automaticky raw input pos´ılat.
Seznam raw input zaˇr´ızen´ı aktu´alnˇe pˇripojen´ych k poˇc´ıtaˇci lze z´ıskat zavol´an´ım GetRawInput-
DeviceList(). Za pouˇzit´ı hDevice z tohoto vol´an´ı m˚uˇze aplikace vol´an´ım GetRawInputDevice-
Info() zjistit o dan´em zaˇr´ızen´ı detaily.
3.4.3.2 ˇCten´ı dat ze zaˇr´ızen´ı
Aplikace pˇrij´ım´a raw input z kaˇzd´eho zaregistrovan´eho zaˇr´ızen´ı. Pˇri pˇrijet´ı vstupu je do fronty
zpr´av aplikace pˇrid´ana zpr´ava WM INPUT a frontˇe se nastav´ı pˇr´ıznak QS RAWINPUT. Raw
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 21
input nijak nedefinuje v´yznam dat, jejich interpretace je proto plnˇe v naˇs´ı moci. Data se mohou
ˇc´ıst dvˇema zp˚usoby: buˇd standardnˇe (bez bufferov´an´ı), nebo za pouˇzit´ı bufferu.
Bezbufferov´a metoda znamen´a, ˇze se ˇctou data nejv´yˇse z jedn´e RAWINPUT struktury. Ap-
likace zavol´a GetMessage() pro z´ısk´an´ı WM INPUT zpr´avy. Pak zavol´a GetRawInputData()
za pouˇzit´ı handleru obsaˇzen´eho ve zpr´avˇe. Bufferov´a metoda naopak ˇcte najednou cel´e pole
RAWINPUT struktur vol´an´ım GetRawInputBuffer(). To b´yv´a v´yhodn´e pro zaˇr´ızen´ı, kter´a pro-
dukuj´ı velk´a mnoˇzstv´ı dat. Pole se pak proch´az´ı pomoc´ı makra NEXTRAWINPUTBLOCK.
Pro potˇreby audio portu je tedy postaˇcuj´ıc´ı metoda bezbufferov´a, pouˇzit´a ve vxmlclientovi tak,
ˇze se prvn´ım vol´an´ım GetRawInputData() zjist´ı pouze velikost dat. Pak se vytvoˇr´ı odpov´ıdaj´ıc´ı
pole, do kter´eho se pˇri druh´em vol´an´ı data uloˇz´ı. Nakonec se sjednot´ı typy ukazatel˚u, jak
ukazuje k´od:
// Promˇenn´a pro uloˇzen´ı velikosti
UINT cbSize;
GetRawInputData(
// Handler z´ıskan´y ze zpr´avy WM_INPUT
(HRAWINPUT) hRawInput,
// Pˇr´ıznak RID_INPUT ˇcte data, RID_HEADER hlaviˇcku
(UINT) RID_INPUT,
// Ukazatel na ˇcten´a data, pokud je NULL, je do &cbSize uloˇzena velikost dat
(LPVOID) NULL,
// Velikost dat v bytech
(PUINT) &cbSize,
// Velikost hlaviˇcky
(UINT) sizeof(RAWINPUTHEADER));
LPBYTE lpbBuffer = new BYTE[cbSize];
GetRawInputData(
(HRAWINPUT) hRawInput,
(UINT) RID_INPUT,
(LPVOID) lpbBuffer,
(PUINT) &cbSize,
(UINT) sizeof(RAWINPUTHEADER));
RAWINPUT * pRawInput = (RAWINPUT *) lpbBuffer;
Scan-k´od tlaˇc´ıtkov´eho rozhran´ı ze z´ısk´a ze struktury pRawInput (typu RAWINPUT) z jej´ı pod-
struktury hid (typu RAWHID), kter´a m´a promˇennou bRawData (typu BYTE). Experiment´alnˇe
jsem zjistil, ˇze hodnota scan-k´odu pouˇzit´eho kodeku je uloˇzena v prvn´ım bytu:
USHORT usScanCode;
usScanCode = pRawInput->data.hid.bRawData[1];
22 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
T´ım jsem z´ıskal ˇc´ıselnou hodnotu, kterou jsem mohl pˇr´ımo pouˇz´ıt pro vˇetven´ı programu.
Podobnˇe se d´a z´ıskat poˇcet HID vstup˚u v bRawData i velikost kaˇzd´eho vstupu, jak je pops´ano
v [4].
3.4.4 Ovl´ad´an´ı VoiceXML browseru
Jak jiˇz bylo ˇreˇceno v kapitole o VoiceXML browseru, prohl´ıˇzeˇc je prakticky nez´avisl´a aplikace a
jedin´a komunikace mezi n´ım a moj´ı zkuˇsebn´ı klientskou aplikac´ı vxmlclient se m˚uˇze odehr´avat
pˇres socketov´e TCP spojen´ı. Jeho ˇr´ızen´ı tedy spoˇc´ıv´a v generov´an´ı vhodn´ych XVB (XML
Voice Browser) pˇr´ıkaz˚u v z´avislosti na stisc´ıch tlaˇc´ıtek audio portu, o audio kan´aly se starat
nemus´ıme (obr. 3.10).
Zkuˇsebn´ı vxmlclient nevyˇzaduje zpˇetnou vazbu od browseru, a nen´ı tady tˇreba pˇrij´ımat
odpovˇedi, kter´e by pˇrinesly mnoh´e komplikace. Komplikac´ı by byla zejm´ena nutnost zpra-
cov´avat pˇr´ıchoz´ı odpovˇedi prostˇrednictv´ım lexik´aln´ıho a syntaktick´eho analyz´atoru, coˇz by
vyˇzadovalo dokonalou znalost syntaxe cel´e mnoˇziny XVB pˇr´ıkaz˚u a odpovˇed´ı, kter´a se nadto
st´ale mˇen´ı. Pro v´yvojov´e a diagnostick´e ´uˇcely se lze spolehnout na konzolov´e v´ystupy browseru.
Pˇri testovac´ım provozu by chybn´e ˇci nadbyteˇcn´e zasl´an´ı pˇr´ıkazu nemˇelo zp˚usobit probl´emy,
neboˇt browser se chov´a jako stavov´y automat a pokud dostane neoˇcek´avan´y pˇr´ıkaz, pouze
ohl´as´ı chybu a jinak na pˇr´ıkaz nereaguje. Pokraˇcuje v ˇcek´an´ı na platn´y pˇr´ıkaz.
3.4.5 Sekvence pˇr´ıkaz˚u zas´ılan´ych vxmlclientem
Vxmlclient by mˇel vykon´avat tuto sekvenci operac´ı:
• spustit na pozad´ı Charlie VoiceXML browser,
• nav´azat TCP spojen´ı,
• poslat pˇr´ıkaz ”init” pro inicializaci browseru a ”load” pro naˇcten´ı VXML dokumentu,
• ˇcekat na ud´alosti od tlaˇc´ıtek,
• pˇri stisku tlaˇc´ıtka zaslat posloupnost pˇr´ıkaz˚u ”cancel”, ”exec” a ”listen” s vhodn´ymi
parametry, kter´a nejprve ukonˇc´ı potenci´aln´ı prov´adˇen´ı pˇredchoz´ıch formul´aˇr˚u VXML
dokumentu, pak skoˇc´ı na formul´aˇr dan´y ˇc´ıslem tlaˇc´ıtka a nakonec spust´ı z´aznam hlasu,
• pˇri uvolnˇen´ı tlaˇc´ıtka zaslat ”listen” s parametrem pro ukonˇcen´ı z´aznamu hlasu,
• pˇred sv´ym ukonˇcen´ım zavˇr´ıt TCP spojen´ı a ukonˇcit VoiceXML browser.
KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 23
Obr´azek 3.10: Blokov´e sch´ema komunikace
3.5 Shrnut´ı n´avrhov´e ˇc´asti
Souˇc´asti audiosyst´emu realizovan´eho pomoc´ı v´yˇse uveden´ych prostˇredk˚u budou:
• audio port,
• vxmlclient,
• Charlie VoiceXML browser,
• VXML dokument.
Pomoc´ı nich bude zajiˇstˇena cel´a poˇzadovan´a funkˇcnost. Propojen´ı bude provedeno podle
obr´azku 3.10.
24 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
KAPITOLA 4. REALIZACE 25
4 Realizace
4.1 Hardwarov´a realizace
Po v´ybˇeru z´akladn´ıch komponent jsem vybral souˇc´astky podle doporuˇcen´ı v datasheetech [13],
[7], [6] a [9]. Pˇri zapojov´an´ı mikrofonn´ıho zesilovaˇce jsem pouˇzil ˇc´ast zapojen´ı z desky DEM-
PCM2900/2902 EVM [12]. Snaˇzil jsem se pouˇz´ıvat pˇredevˇs´ım SMD souˇc´astky. Pro pˇripojen´ı
k USB jsem pouˇzil konektor typu B, pro sluch´atka 3,5 mm stereo konektor se sp´ınaˇci a jako
tlaˇc´ıtka typ P-B 1720A, vˇsechny tyto ˇc´asti v proveden´ı pro zap´ajen´ı do desky ploˇsn´eho spoje.
Seznam souˇc´astek i jejich pˇresn´a oznaˇcen´ı naleznete v pˇr´ıloze C.1.
4.1.1 Sch´ema zapojen´ı
K n´avrhu jsem pouˇzil software Eagle firmy CadSoft, verzi 4.16r2 pro Windows, v bezplatn´em
proveden´ı Light Edition (nab´ız´ı plnou funkˇcnost, ale m´a omezenou velikost ploˇsn´eho spoje a
podporuje pouze jednovrstv´e a dvouvrstv´e desky). V´ysledn´e sch´ema zapojen´ı je v pˇr´ıloze z
rozmˇerov´ych d˚uvod˚u rozdˇeleno na dvˇe ˇc´asti, prvn´ı zachycuje kodek, stabiliz´ator a vstupn´ı ze-
silovaˇc (A.1), druh´a obvod v´ystupn´ıho zesilovaˇce (B.1). Kompletn´ı sch´ema a upraven´e knihovny
souˇc´astkov´ych znaˇcek a pouzder jsou na pˇriloˇzen´em CD.
4.1.2 Ploˇsn´y spoj a mechanick´e ˇreˇsen´ı
Nejprve jsem musel nakreslit pouzdro zesilovaˇce, kter´e chybˇelo v knihovnˇe, a na vˇsechna pouz-
dra pak namapovat sch´ematick´e znaˇcky. Ploˇsn´y spoj jsem navrhoval tak, aby se veˇsel do
pˇr´ıstrojov´e krabiˇcky U-KP44 o vnˇejˇs´ıch rozmˇerech 90 x 22 x 65 mm. Realizoval jsem jej ve
dvou vrstv´ach na desce o rozmˇerech 67 x 57,5 mm spoji o ˇs´ıˇrce 10 mil, neboˇt bl´ızkost ploˇsek
kodeku a zesilovaˇce nikde nedovolovala ˇsirˇs´ı spoje. Deska je navrˇzena podle pokyn˚u v [16] a
[15]. Ilustraˇcn´ı negativ desky je na obr. 4.1, n´avrh z Eaglu na CD.
Zaˇr´ızen´ı jsem navrhoval tak, aby vˇsechny souˇc´asti mimo mikrofon a reproduktor byly pˇrip´ajeny
pˇr´ımo k desce ploˇsn´eho spoje. USB konektor je vyveden na zadn´ı stranu krabiˇcky a sluch´atkov´y
konektor na pˇredn´ı stranu, jejich otvory jsou proveden´e jako proˇrezy ve v´ıku (obr. 4.2). Na
tlaˇc´ıtka jsou pˇrilepeny knofl´ıky soustruˇzen´e ze silonu proch´azej´ıc´ı otvory na svrchn´ı stranˇe.
Cel´y ploˇsn´y spoj je pˇres distanˇcn´ı sloupky pˇripevnˇen zapuˇstˇen´ymi ˇsrouby k odn´ımateln´emu dnu
krabiˇcky. Stoj´ankov´y mikrofon je pˇripevnˇen tˇrmenem a dvˇema ˇsrouby k prav´e stˇenˇe krabiˇcky,
jeho osa je sklonˇen´a pˇribliˇznˇe 10 stupˇn˚u od svislice smˇerem ke stˇredu krabiˇcky. Pod´el t´eto osy
je tak´e moˇzn´e mikrofon nat´aˇcet. D´ale bylo z estetick´ych d˚uvod˚u nutn´e odˇr´ıznout od krabiˇcky
postrann´ı ´uchyty. Celkovou vnitˇrn´ı stavbu zachycuje obr. 4.3.
Reproduktor je zevnitˇr pˇriˇsroubov´an pod dˇerovanou svrchn´ı stranu krabiˇcky. P˚uvodn´ı tˇesn´e
uchycen´ı se neosvˇedˇcilo, neboˇt membr´ana kolidovala s krabiˇckou a zvuk byl tlumen´y. Po
podloˇzen´ı reproduktoru distanˇcn´ımi sloupky se kvalita a hlasitost reprodukce v´yraznˇe zv´yˇsila.
Veˇsker´e ˇsrouby na povrchu v´ıka jsou mosazn´e s p˚ulkulatou hlavou (obr. 4.4), protoˇze stˇena
v´ıka mi pro pouˇzit´ı zapuˇstˇen´ych ˇsroub˚u nepˇriˇsla dostateˇcnˇe siln´a.
4.1.3 Nutn´e zmˇeny hardwaru proti n´avrhu
Bˇehem tvorby audio portu jsem provedl nˇekolik zmˇen proti p˚uvodn´ımu n´avrhu. Tyto zmˇeny
nejsou zachyceny na sch´ematu ani na n´avrhu ploˇsn´eho spoje, jsou vˇsak nutn´e pro dosaˇzen´ı
funkˇcnosti zaˇr´ızen´ı.
26 KAPITOLA 4. REALIZACE
Obr´azek 4.1: Ilustraˇcn´ı negativ desky
4.1.3.1 Otoˇcen´ı tlaˇc´ıtek
Po nakoupen´ı tlaˇc´ıtek jsem zjistil, ˇze jsou napevno propojeny do dvojice vˇzdy jejich vzd´alenˇejˇs´ı
v´yvody (a ne bliˇzˇs´ı, jak jsem se chybnˇe domn´ıval). Proto jsem vˇsechna tlaˇc´ıtka musel otoˇcit o
90 stupˇn˚u a mechanicky pˇrizp˚usobit jejich v´yvody, aby ˇsly zasunout do otvor˚u desky.
4.1.3.2 ´Uprava sluch´atkov´eho konektoru
Pˇri n´avrhu ploˇsn´eho spoje jsem neovˇeˇril, zda jsou u n´as dostupn´e sluch´atkov´e 3,5 mm konektory
s dr´atˇen´ymi v´yvody. Proto jsem musel upravit konektor s ploch´ymi v´yvody jejich sestˇriˇzen´ım
na takovou velikost, aby proˇsly kruhov´ymi otvory v desce.
4.1.3.3 Diodov´y kod´er
V pr˚ubˇehu softwarov´e implementace vyˇslo najevo, ˇze v MS Windows pravdˇepodobnˇe nen´ı moˇzn´e
zabr´anit defaultn´ı interpretaci HID pin˚u kodeku. Experiment´alnˇe jsem zjistil, ˇze ze scan-k´od˚u
0 aˇz 7 maj´ı pouze k´ody 1, 2, 4 a 7 viditeln´y efekt (po ˇradˇe mute, volume increment, volume
decrement, mute). K´ody 0, 3, 5 a 6 jsou nevyuˇzit´e.
Proto jsem se rozhodl upravit zapojen´ı tak, aby se pˇri stisku kaˇzd´eho z tlaˇc´ıtek aktivovala vˇzdy
odliˇsn´a dvojice HID pin˚u a pˇri uvolnˇen´ı vˇsch tlaˇc´ıtek z˚ustaly HID piny neaktivn´ı. Toho jsem
dos´ahl zapojen´ım ˇsesti diod 1N4148 do jednoduch´eho kod´eru, kter´y mˇen´ı k´od ”1 ze 3” na k´od
”2 ze 3” (obr. 4.5). Vedlejˇs´ı efekt tohoto zapojen´ı je, ˇze pˇri souˇcasn´em stisku v´ıce tlaˇc´ıtek se
vygeneruje k´od 7, kter´y aktivuje/deaktivuje funkci mute.
KAPITOLA 4. REALIZACE 27
Obr´azek 4.2: V´ıko audio portu
4.1.3.4 Zv´yˇsen´ı zes´ılen´ı operaˇcn´ıho zesilovaˇce
Pˇri prvn´ıch pokusech o z´aznam zvuku se uk´azalo, ˇze hlasitost nahr´av´an´ı je ponˇekud n´ızk´a.
Proto jsem rezistor R14 mezi mikrofonem a vstupn´ım zesilovaˇcem nahradil propojkou a hlasitost
se t´ım zv´yˇsila na pˇrijatelnou ´uroveˇn.
4.2 Softwarov´a realizace
Obsluˇzn´y program jsem se rozhodl implementovat v jazyce C++ v prostˇred´ı MS Visual Studio
2008. Psal jsem jej jako okenn´ı aplikaci pro MS Windows XP za pouˇzit´ı WinAPI. Zdrojov´y
k´od je na pˇriloˇzen´em CD, popis ovl´ad´an´ı v kapitole 5.
Hlavn´ı tˇr´ıdou programu je WinMain, kter´a vytvoˇr´ı hlavn´ı okno, jeho tlaˇc´ıtka a nˇekolik pol´ı edit
a label. Spust´ı registraci HID zaˇr´ızen´ı RegisterInput() a smyˇcku pˇrekladu a rozdˇelov´an´ı zpr´av.
4.2.1 Zpracov´an´ı zpr´av
Zpr´avy zpracov´av´a procedura WindowProcedure(). Zpr´ava WM COMMAND odpov´ıd´a vˇsem
ud´alostem tlaˇc´ıtek. Tlaˇc´ıtko ”Connect” zavol´a PrepareServer(), ˇc´ımˇz spust´ı VoiceXML Browser
a provede pˇripojen´ı. Pˇri stisku ”Load and test” vytvoˇr´ı ze zadan´e adresy dokumentu load pˇr´ıkaz
a pomoc´ı SendCommand() jej odeˇsle. Stiskem ”Exit” se na hlavn´ı okno zavol´a DestroyWin-
dow().
Zpr´ava WM INPUT znamen´a, ˇze bylo stisknuto nˇekter´e z tlaˇc´ıtek. Vyvol´a spuˇstˇen´ı procedury
GetHIDData(), kter´a nahraje do promˇenn´e usScanCode k´od tlaˇc´ıtek. Na to se zavol´a proce-
dura ServeButtons(), kter´a zajist´ı zasl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci.
Na zpr´avu WM Destroy se reaguje zavˇren´ım spojen´ı se serverem, ukonˇcen´ım serveru a koncem
samotn´eho klienta.
4.2.2 Potˇrebn´e hlaviˇckov´e soubory a knihovny
Vxmlclient vyˇzaduje zahrnout do sekce include hlaviˇckov´e soubory windows.h a altstr.h.
Pro ´uspˇeˇsnou kompilaci bylo d´ale nutn´e pˇridat mezi parametry linkeru socketovou knihovnu
28 KAPITOLA 4. REALIZACE
Obr´azek 4.3: Vnitˇrn´ı uspoˇr´ad´an´ı audio portu
WSOCK32.lib. Aby bylo moˇzn´e spouˇstˇet Vxmlclienta i na poˇc´ıtaˇc´ıch bez instalovan´eho Visual
Studia, staticky jsem pˇrilinkoval potˇrebnou knihovnu msvcr90d.dll.
4.3 Doporuˇcen´e ´upravy a rozˇs´ıˇren´ı
Zmˇeny d˚uleˇzit´e pro funkci zaˇr´ızen´ı jsem zm´ınil v´yˇse. Zde se zamˇeˇr´ım na doporuˇcen´e ´upravy
pro zajiˇstˇen´ı lepˇs´ı pouˇzitelnosti zaˇr´ızen´ı.
4.3.1 Hardwarov´e a mechanick´e ´upravy
Jako prvn´ı ´upravu doporuˇcuji prov´est zmˇenu sch´ematu zapojen´ı a n´aslednˇe redesign desky
ploˇsn´eho spoje v souladu s podsekc´ı ”Nutn´e zmˇeny hardwaru proti n´avrhu”. Z´aroveˇn by bylo
vhodn´e pˇrem´ıstit tlaˇc´ıtka do vˇetˇs´ı vzd´alenosti od okraje v´ıka a zvˇetˇsit jejich pr˚umˇer.
Zadavatel d´ale navrhl pˇridat LED signalizuj´ıc´ı stisk tlaˇc´ıtka a konektor pro pˇripojen´ı extern´ıho
mikrofonu (tyto dvˇe zmˇeny budou realizov´any u druh´eho vzorku). Alternativnˇe by bylo moˇzn´e
vestavˇet cel´y port do pouzdra ruˇcn´ıho mikrofonu a hlasov´e funkce i tlaˇc´ıtka pak efektnˇe pouˇz´ıvat
napˇr. pˇri prezentac´ıch.
4.3.2 Softwarov´e rozˇs´ıˇren´ı
Vhodn´ym rozˇs´ıˇren´ım vxmlclienta by bylo umoˇznˇen´ı pˇr´ıjmu zpˇetn´e vazby od prohl´ıˇzeˇce, nejl´epe
pomoc´ı ”SocketIO Charlie extension”. Pak by bylo moˇzn´e zadat do VXML dokumentu jm´ena
program˚u nebo maker a jejich parametr˚u, kter´e by pak vxmlclient spustil (napˇr. Skype dialer,
diktafon, ovl´ad´an´ı dom´ac´ı elektroniky).
Klient i server by mohly bˇeˇzet podobnˇe jako sluˇzba na pozad´ı. Zaj´ımavou ´upravou by byla i
aktivace zvukov´eho zaˇr´ızen´ı v audio portu pouze pˇri stisku tlaˇc´ıtka, tj. bˇeˇznˇe by se pouˇz´ıvala
KAPITOLA 4. REALIZACE 29
Obr´azek 4.4: Kompletn´ı audio port
Obr´azek 4.5: Diodov´y kod´er
intern´ı zvukov´a karta poˇc´ıtaˇce a jen pro zad´av´an´ı pˇr´ıkaz˚u by se pouˇzil port. Tyto ´upravy vˇsak
sahaj´ı mimo r´amec t´eto pr´ace.
30 KAPITOLA 4. REALIZACE
KAPITOLA 5. POUˇZIT´I 31
5 Pouˇzit´ı
5.1 Pouˇzit´ı audio portu
5.1.1 Pˇripojen´ı hardwaru
Audio port pˇripojte USB kabelem s konektorem ”B” k poˇc´ıtaˇci a poˇckejte na enumeraci zaˇr´ızen´ı
a automatick´e nahr´an´ı ovladaˇc˚u. Z reproduktoru se ozve slab´e zabzuˇcen´ı signalizuj´ıc´ı ´uspˇeˇsn´e
pˇripojen´ı. Od t´eto chv´ıle je aktivn´ı zvukovou kartou pr´avˇe audio port. Ovˇeˇrte, zda je zapnut´y
zvuk a spr´avnˇe nastavena hlasitost portu. Zvuk lze kdykoli vypnout nebo zapnout souˇcasn´ym
stiskem dvou nebo tˇr´ı tlaˇc´ıtek portu.
5.1.2 Spuˇstˇen´ı klienta a pˇripojen´ı k serveru
Spusˇtte klienta vxmlclient, do pole ”VoiceXML browser address” zadejte um´ıstˇen´ı browseru a
kliknˇete na tlaˇc´ıtko ”Connect” (obr. 3.10). T´ım dojde ke spuˇstˇen´ı browseru na pozad´ı a pokusu
o nav´az´an´ı TCP spojen´ı. Nepovede-li se pˇripojen´ı a pˇritom je adresa spr´avn´a, je pravdˇepodobnˇe
nutn´e povolit ve firewallu pˇripojen´ı z localhosta na port 7777. Po ´uspˇeˇsn´em pˇripojen´ı se pole i
tlaˇc´ıtko znepˇr´ıstupn´ı a titulek tlaˇc´ıtka se zmˇen´ı na ”Connected”.
Obr´azek 5.1: Okno vxmlclienta
5.1.3 Naˇcten´ı VXML dokumentu
Do pole ”VoiceXML document address” zadejte um´ıstˇen´ı dokumentu (na doprovodn´em CD
je pˇripraven testovac´ı dokument organizer.vxml) a kliknˇete na tlaˇc´ıtko ”Load and test”. V
pˇr´ıpadˇe ´uspˇeˇsn´eho naˇcten´ı pˇrehraje port ozn´amen´ı ”loaded” a je pˇripraven k pouˇzit´ı.
5.1.4 Zad´av´an´ı pˇr´ıkaz˚u pro organiz´er
Testovac´ı dokument organizer.vxml (viz n´ıˇze) obsahuje ˇctyˇri formul´aˇre. Formul´aˇr s ID ”loaded”
slouˇz´ı pouze k ovˇeˇren´ı ´uspˇeˇsn´eho nahr´an´ı. Pˇriˇrazen´ı ostatn´ıch formul´aˇr˚u ukazuje tabulka 5.1.
Stisknˇete a drˇzte vybran´e tlaˇc´ıtko a vyslovte jednu z voleb. Uvolnˇete tlaˇc´ıtko a poˇckejte na
odpovˇeˇd.
Kdykoli je moˇzn´e zadat dalˇs´ı pˇr´ıkaz, a to i pˇred dokonˇcen´ım st´avaj´ıc´ıho. Pokud rozpozn´avaˇc
nedostane srozumiteln´y pˇr´ıkaz, zaˇcne v´as opakovanˇe vyz´yvat k nov´emu zad´an´ı. V´yzvy lze
32 KAPITOLA 5. POUˇZIT´I
Tlaˇc´ıtko Na spoji Scan-k´od Formul´aˇr Funkce Moˇzn´e volby
Lev´e SW3 6 form1 Adres´aˇr Alice, Bob, Eve
Stˇredn´ı SW2 3 form2 Kalend´aˇr Sunday, Monday,. . . , Saturday
Prav´e SW1 5 form3 J´ızdn´ı ˇr´ad One, two, three
Tabulka 5.1: Pˇriˇrazen´ı tlaˇc´ıtek audio portu dokumentu organizer.vxml
ukonˇcit zad´an´ım platn´eho pˇr´ıkazu nebo pˇr´ıkazem ”exit”. Po vykon´an´ı kaˇzd´eho pˇr´ıkazu ˇcek´a
prohl´ıˇzeˇc na dalˇs´ı. Po celou dobu klient zobrazuje, kter´e tlaˇc´ıtko pro volbu formul´aˇr˚u je pr´avˇe
stisknuto.
5.1.5 Ukonˇcen´ı pr´ace
Kliknˇete na tlaˇc´ıtko ”Exit” nebo zavˇrete okno vxmlclienta. Provede se zavˇren´ı spojen´ı s
browserem, ukonˇcen´ı browseru a ukonˇcen´ı klienta.
5.2 Tvorba vlastn´ıch dokument˚u
Podle n´ıˇze uveden´eho vzoru je moˇzn´e tvoˇrit vlastn´ı VXML dokumenty pouˇziteln´e pro audio
port. Z´avazn´e je pouˇz´ıt pro testovac´ı formul´aˇr n´azev ”loaded” a pro pracovn´ı formul´aˇre ”form1”
aˇz ”form3”. Deatiln´ı popis VXML a dalˇs´ı uk´azky k´odu naleznete v dokumentu [8].
5.3 Testovac´ı dokument organizer.vxml
<?xml version="1.0"?>
<vxml version="1.0">
<!--Definice promˇenn´ych-->
<var name="email" expr="’none’"/>
<var name="todo" expr="’none’"/>
<var name="bustime" expr="’none’"/>
<!--Formul´aˇr pro otestov´an´ı ´uspˇeˇsn´eho nahr´an´ı-->
<form id = "loaded">
<block>
<prompt>Loaded.</prompt>
</block>
</form>
<!--Prvn´ı ppacovn´ı formul´aˇr-->
<form id = "form1">
<!--Pole rozpozn´avaj´ıc´ı slovo-->
<field name="fmailinglist">
<grammar> Alice | Bob | Eve </grammar>
<!--Akce po vyplnˇen´ı: pˇri splnˇen´ı podm´ınky nastav promˇennou-->
<filled>
<if cond="fmailinglist == ’Alice’">
KAPITOLA 5. POUˇZIT´I 33
<assign name="email" expr="’alice@google.com’"/>
<elseif cond="fmailinglist == ’Bob’"/>
<assign name="email" expr="’bob@yahoo.com’"/>
<elseif cond="fmailinglist == ’Eve’"/>
<assign name="email" expr="’eve@post.org’"/>
</if>
<!--Pˇrehr´an´ı kompletn´ı odpovˇedi-->
<prompt>
value expr="fmailinglist"/>’s email is <value expr="email"/>.
</prompt>
</filled>
</field>
</form>
...
<!--Obdobnˇe pro form2 a form3-->
...
</vxml>
5.4 Re´aln´a pouˇzitelnost zaˇr´ızen´ı
Audio port na testovac´ım dokumentu prok´azal, ˇze je zp˚usobil´y k nasazen´ı do testovac´ıho
provozu. Ot´azkou z˚ust´av´a, jak se osvˇedˇc´ı pˇri rozpozn´av´an´ı za pouˇzit´ı rozs´ahl´ych gramatik.
Podle v´ysledku testu by pak bylo vhodn´e zv´aˇzit pouˇzit´ı kvalitnˇejˇs´ıho mikrofonu a zdokonalen´ı
vstupn´ıho zesilovaˇce. Usability testing by mˇel zhodnotit ergonomii zaˇr´ızen´ı a zajistit ´upravy
vedouc´ı ke snadnˇejˇs´ımu pouˇzit´ı hardwaru i softwaru.
34 KAPITOLA 5. POUˇZIT´I
KAPITOLA 6. Z ´AVˇER 35
6 Z´avˇer
Prostudoval jsem dokumentaci jazyka VXML, VoiceXML browseru a ˇc´asti dokumentace MS
Windows API (Raw Input) a specifikace USB (nap´ajen´ı a tˇr´ıdy zaˇr´ızen´ı). Vybral jsem hard-
warov´e komponenty a softwarov´e prostˇredky a navrhnul strukturu audio portu.
Navrhnul jsem sch´ema zapojen´ı, ploˇsn´y spoj a mechanick´e uspoˇr´ad´an´ı, kter´e jsem realizo-
val. Napsal jsem aplikaci vxmlclient s uk´azkov´ym dokumentem organizer.vxml. ´Uspˇeˇsnˇe jsem
provedl testov´an´ı na uk´azkov´em dokumentu.
V´ysledkem pr´ace je funkˇcn´ı vzorek audio portu vˇcetnˇe obsluˇzn´e aplikace vxmlclient. Port je
pouˇziteln´y pro z´aznam i reprodukci hlasu i pro tlaˇc´ıtkov´e ovl´ad´an´ı klienta. Souˇc´ast´ı je uk´azkov´y
VXML dokument pro demonstraci moˇznost´ı portu.
Hlavn´ım pˇr´ınosem zaˇr´ızen´ı je moˇznost uˇzivatelsky definovat libovoln´e reakce na stisk tlaˇc´ıtek,
coˇz dosavadn´ı jedno´uˇcelov´a zvukov´a zaˇr´ızen´ı nenab´ızej´ı. To pˇrin´aˇs´ı univerzalitu pouˇzit´ı a
moˇznost nasazen´ı nejen jako stoln´ı zaˇr´ızen´ı, ale i jako souˇc´ast vestavˇen´ych zaˇr´ızen´ı, hlasov´ych
termin´al˚u apod. Z uk´azkov´eho vxmlclienta je moˇzn´e vych´azet pˇri n´avrhu sofistikovanˇejˇs´ıho
uˇzivatelsk´eho rozhran´ı. Douf´am, ˇze zaˇr´ızen´ı bude dobˇre slouˇzit.
36 KAPITOLA 6. Z ´AVˇER
KAPITOLA 7. SEZNAM LITERATURY 37
7 Seznam literatury
[1] HID Related Specifications.
USB Implementers Forum, Inc.
www.usb.org/developers/hidpage/.
[2] LSM-S20K - informace o produktu.
Conrad Electronic GmbH.
www.conrad.cz/miniaturni-reproduktor-8-ohm-100-mw+dp47825.
[3] MCE102 - datasheet.
Vanson Electronics Inc.
www.gme.cz/_dokumentace/dokumenty/643/643-022/dsh.643-022.1.pdf.
[4] MSDN Library.
Microsoft Corporation.
msdn.microsoft.com/cs-cz/library/default(en-us).aspx.
[5] Universal Serial Bus Device Class Definition for Audio Devices.
USB Implementers Forum, Inc., march 1998.
www.usb.org/developers/docs/usb_20_040908.zip.
[6] OPA 353 - High-Speed, Single-Supply, Rail-to-Rail Operational Amplifiers
MicroAmplifierTM Series.
Texas Instruments Incorporated, march 1999.
focus.ti.com/lit/ds/symlink/opa353.pdf.
[7] TPA6011A4 - 3-W Stereo Audio Power Amplifier with Advanced DC Volume Control.
Texas Instruments Incorporated, february 2004.
focus.ti.com/lit/ds/symlink/tpa6011a4.pdf.
[8] Voice Extensible Markup Language (VoiceXML) Version 2.0.
W3C Recommendation, march 2004.
www.w3.org/TR/voicexml20/.
[9] REG103 - DMOS 500mA Low-Dropout Regulator.
Texas Instruments Incorporated, september 2005.
focus.ti.com/lit/ds/symlink/reg103-a.pdf.
[10] XVB - XML Voice Browser Proposal 0.3.
IBM Voice Technologies and Systems, Prague, july 2005.
[11] Charlie VoiceXML browser documentation and examples.
IBM Voice Technologies and Systems, Prague, september 2006.
[12] DEM-PCM2900/2902 EVM - User’s Guide.
Texas Instruments Incorporated, march 2007.
focus.ti.com/lit/ug/sleu024a/sleu024a.pdf.
[13] PCM2904/PCM2906 - Stereo Audio CODEC with USB Interface, Single-Ended Analog
Input/Output and S/PDIF.
Texas Instruments Incorporated, november 2007.
focus.ti.com/lit/ds/symlink/pcm2904.pdf.
38 KAPITOLA 7. SEZNAM LITERATURY
[14] Universal Serial Bus Revision 2.0 specification.
USB Implementers Forum, Inc., april 2008.
www.usb.org/developers/docs/usb_20_040908.zip.
[15] M. Skrbek. Jak vyrobit ploˇsn´y spoj.
Web katedry poˇc´ıtaˇc˚u.
service.felk.cvut.cz/lab/tistaky/index.html.
[16] V. Z´ahlava. N´avrh a konstrukce desek ploˇsn´ych spoj˚u.
ˇCesk´a technika - nakladatelstv´ı ˇCVUT, 1st edition, 2005.
P ˇR´ILOHA A. SCH´EMA ZAPOJEN´I - ˇC ´AST KODEKU 39
A Sch´ema zapojen´ı - ˇc´ast kodeku
Obr´azek A.1: Sch´ema zapojen´ı - ˇc´ast kodeku
40 P ˇR´ILOHA B. SCH´EMA ZAPOJEN´I - ˇC ´AST ZESILOVA ˇCE
B Sch´ema zapojen´ı - ˇc´ast zesilovaˇce
Obr´azek B.1: Sch´ema zapojen´ı - ˇc´ast zesilovaˇce
P ˇR´ILOHA C. SEZNAM SOU ˇC ´ASTEK 41
C Seznam souˇc´astek
Poˇcet Hodnota Pouzdro Oznaˇcen´ı
1 1M R1206 R8
2 1k R1206 R16, R17
4 1k5 R1206 R1, R2, R3, R7
1 2R2 R1206 R6
1 2k2 R1206 R15
1 3k9 R1206 R12
1 12k R1206 R13
1 13k R1206 R10
2 22R R1206 R4, R5
1 30k R1206 R9
1 100R R1206 R11
2 100k R1206 R18, R19
3 100k 4312-SMD100K R21, R22, R23 - trimr
1 100M E100M/16V C27
2 330M E330M/16V C23, C25
1 330p CK1206 C16
1 1800p CK1206 C17
2 M1 CK1206 C14, C22
9 1M CK1206 C3, C4, C7, C8, C13, C19, C20, C21, C24
8 10M CK1206 C1, C2, C9, C10, C11, C12, C15, C18
2 18p CK1206 C5, C6
1 12MHz QM 12.000MHZ Q1 - krystalov´y rezon´ator
6 1N4148 D1, D2, D3, D4, D5, D6
1 PCM2904DB kodek
1 TPA6011A4PWP v´ykonov´y zesilovaˇc
1 OPA353UA operaˇcn´ı zesilovaˇc
1 REG103UA-A stabiliz´ator napˇet´ı
3 P-B1720A tlaˇc´ıtka
3 SCJ-0354-5PU 3,5 mm stereo konektor se sp´ınaˇci
1 USB1X90B PCB USB konektor
1 CAB-USB-AB2 USB kabel A/B 2m
1 U-KP44 krabiˇcka
1 LSM-S20K reproduktor
1 Genius MIC-01A mikrofon
1 Audioport deska ploˇsn´eho spoje
Tabulka C.1: Seznam souˇc´astek
42 P ˇR´ILOHA D. OBSAH CD
D Obsah CD
Obr´azek D.1: Obsah CD
Datasheets Datov´e listy integrovan´ych obvod˚u, v´yvojov´e desky a reproduktoru
Eagle/lbr Upraven´e knihovny komponent Eaglu
Eagle/projects/audio port Podklady sch´ematu a ploˇsn´eho spoje audio portu
Eagle/projects/diode coder Podklady doplˇnkov´eho sch´ematu diodov´eho kod´eru
Images Fotografie audio portu
Src/Organizer Zdrojov´y k´od testovac´ıho VoiceXML dokumentu
Src/Vxmlclient Zdrojov´y k´od vxmlclienta a soubory projektu Visual Studia 2008
Src/Vxmlclient/Debug Zkompilovan´y vxmlclient a soubory Visual Studia 2008 pro kompilaci
Text Tento dokument ve form´atu PDF
Text/src LaTeX Obr´azky a podklady pro sazbu tohoto dokumentu v LaTeXu
USB Vybran´e ˇc´asti specifikace USB souvisej´ıc´ı s audio portem

More Related Content

Viewers also liked

metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprich
metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprichmetodo-de-violino-kreutzer-rodophe-42-estudos-e-caprich
metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprichAndré Levino
 
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...Priscila Macedo
 
Tecnologia y sociedad
Tecnologia y sociedadTecnologia y sociedad
Tecnologia y sociedadAngye61
 
Holiday Bling Tees
Holiday Bling TeesHoliday Bling Tees
Holiday Bling TeesAllen Donald
 
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.Julia Travaglini
 
Redes Sociais - Final - slideshare
Redes Sociais - Final - slideshareRedes Sociais - Final - slideshare
Redes Sociais - Final - slideshareDaniel Cardim
 
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...Université de Montréal
 
Lois Pereiro. LETRAS GALEGAS. 2011
Lois Pereiro. LETRAS GALEGAS. 2011Lois Pereiro. LETRAS GALEGAS. 2011
Lois Pereiro. LETRAS GALEGAS. 2011biliomalveiras
 
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE IMAGEM DA CANTORA SANDY -...
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE  IMAGEM DA CANTORA SANDY -...DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE  IMAGEM DA CANTORA SANDY -...
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE IMAGEM DA CANTORA SANDY -...Diego Moreau
 
Da minha adolescência à idade adulta (2/3)
Da minha adolescência à idade adulta (2/3)Da minha adolescência à idade adulta (2/3)
Da minha adolescência à idade adulta (2/3)Patricia de Portugal
 
A minha infância e adolescência (1/3)
A minha infância e adolescência (1/3)A minha infância e adolescência (1/3)
A minha infância e adolescência (1/3)Patricia de Portugal
 
Propriedades da matéria juliana c-31
Propriedades da matéria   juliana c-31Propriedades da matéria   juliana c-31
Propriedades da matéria juliana c-31emefguerreiro
 
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...Julia Travaglini
 

Viewers also liked (19)

Action plan week 5
Action plan week 5Action plan week 5
Action plan week 5
 
metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprich
metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprichmetodo-de-violino-kreutzer-rodophe-42-estudos-e-caprich
metodo-de-violino-kreutzer-rodophe-42-estudos-e-caprich
 
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...
Educacao das artes_visuais_na_perspectiva_da_cultura_visual_conceituacoes_pro...
 
Tecnologia y sociedad
Tecnologia y sociedadTecnologia y sociedad
Tecnologia y sociedad
 
Holiday Bling Tees
Holiday Bling TeesHoliday Bling Tees
Holiday Bling Tees
 
"Юный шашист"
"Юный шашист""Юный шашист"
"Юный шашист"
 
Web Design Tips for Startups
Web Design Tips for Startups Web Design Tips for Startups
Web Design Tips for Startups
 
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.
Campanha "Hope ensina": Uma análise dos estereótipos e ideologia envolvidas.
 
Redes Sociais - Final - slideshare
Redes Sociais - Final - slideshareRedes Sociais - Final - slideshare
Redes Sociais - Final - slideshare
 
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...
Coerência, desdobramento, dignidade: Repensando famílias e terapia - Instit...
 
Lois Pereiro. LETRAS GALEGAS. 2011
Lois Pereiro. LETRAS GALEGAS. 2011Lois Pereiro. LETRAS GALEGAS. 2011
Lois Pereiro. LETRAS GALEGAS. 2011
 
O mauro está a ler livros
O mauro está a ler livrosO mauro está a ler livros
O mauro está a ler livros
 
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE IMAGEM DA CANTORA SANDY -...
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE  IMAGEM DA CANTORA SANDY -...DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE  IMAGEM DA CANTORA SANDY -...
DISCUTÍVEL PERFEIÇÃO: UMA ANÁLISE DA CONSTRUÇÃO DE IMAGEM DA CANTORA SANDY -...
 
Validacao esterilizadores
Validacao esterilizadoresValidacao esterilizadores
Validacao esterilizadores
 
Conectores
Conectores Conectores
Conectores
 
Da minha adolescência à idade adulta (2/3)
Da minha adolescência à idade adulta (2/3)Da minha adolescência à idade adulta (2/3)
Da minha adolescência à idade adulta (2/3)
 
A minha infância e adolescência (1/3)
A minha infância e adolescência (1/3)A minha infância e adolescência (1/3)
A minha infância e adolescência (1/3)
 
Propriedades da matéria juliana c-31
Propriedades da matéria   juliana c-31Propriedades da matéria   juliana c-31
Propriedades da matéria juliana c-31
 
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...
Os elementos da teoria da comunicação aplicados à publicidade online - Teoria...
 

Similar to Loskot_Bachelor_Thesis

filip-zavadil-dp-2013
filip-zavadil-dp-2013filip-zavadil-dp-2013
filip-zavadil-dp-2013Filip Zavadil
 
filip-zavadil-bp-2011
filip-zavadil-bp-2011filip-zavadil-bp-2011
filip-zavadil-bp-2011Filip Zavadil
 
ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016Jan Brychta
 
012 ba vpm 07-2019 - cs
012   ba vpm 07-2019 - cs012   ba vpm 07-2019 - cs
012 ba vpm 07-2019 - csZdenkKahoun1
 
002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_csZdenkKahoun1
 
Viktor Kajml bachelor thesis
Viktor Kajml bachelor thesisViktor Kajml bachelor thesis
Viktor Kajml bachelor thesiskajmlv
 
003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_cs003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_csZdenkKahoun1
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_csZdenkKahoun1
 
009 ba_vm35_45_50_v40 - 08-2018 - cs
009  ba_vm35_45_50_v40 - 08-2018 - cs009  ba_vm35_45_50_v40 - 08-2018 - cs
009 ba_vm35_45_50_v40 - 08-2018 - csZdenkKahoun1
 
007 hkm 230-360_a1-a2-v - 10-2018_cs
007   hkm 230-360_a1-a2-v - 10-2018_cs007   hkm 230-360_a1-a2-v - 10-2018_cs
007 hkm 230-360_a1-a2-v - 10-2018_csZdenkKahoun1
 
006 ba_zv2_ev45-50 - 08-2013_cs
006  ba_zv2_ev45-50 - 08-2013_cs006  ba_zv2_ev45-50 - 08-2013_cs
006 ba_zv2_ev45-50 - 08-2013_csZdenkKahoun1
 
006 ba_zv2_ev45-50 - 08-2013_cs
006  ba_zv2_ev45-50 - 08-2013_cs006  ba_zv2_ev45-50 - 08-2013_cs
006 ba_zv2_ev45-50 - 08-2013_csZdenkKahoun1
 
Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Petra Pitrová
 
005 ba_dv56-70-90 - 20-04-2016_cs
005  ba_dv56-70-90 - 20-04-2016_cs005  ba_dv56-70-90 - 20-04-2016_cs
005 ba_dv56-70-90 - 20-04-2016_csZdenkKahoun1
 
007 ba_zv1_ev45-50 - 08-2018_cs
007  ba_zv1_ev45-50 - 08-2018_cs007  ba_zv1_ev45-50 - 08-2018_cs
007 ba_zv1_ev45-50 - 08-2018_csZdenkKahoun1
 
0a3d108a f490-11e8-9be7-6cae8b4eb554.data
0a3d108a f490-11e8-9be7-6cae8b4eb554.data0a3d108a f490-11e8-9be7-6cae8b4eb554.data
0a3d108a f490-11e8-9be7-6cae8b4eb554.dataEdson Silva
 

Similar to Loskot_Bachelor_Thesis (20)

filip-zavadil-dp-2013
filip-zavadil-dp-2013filip-zavadil-dp-2013
filip-zavadil-dp-2013
 
Diplomka
DiplomkaDiplomka
Diplomka
 
Diplomka2
Diplomka2Diplomka2
Diplomka2
 
filip-zavadil-bp-2011
filip-zavadil-bp-2011filip-zavadil-bp-2011
filip-zavadil-bp-2011
 
ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016ČTÚ D-Book, 4.03, srpen 2016
ČTÚ D-Book, 4.03, srpen 2016
 
User print 2
User print 2User print 2
User print 2
 
Diplomka
DiplomkaDiplomka
Diplomka
 
012 ba vpm 07-2019 - cs
012   ba vpm 07-2019 - cs012   ba vpm 07-2019 - cs
012 ba vpm 07-2019 - cs
 
002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs002 ba mks 350 - 03-2017_cs
002 ba mks 350 - 03-2017_cs
 
Viktor Kajml bachelor thesis
Viktor Kajml bachelor thesisViktor Kajml bachelor thesis
Viktor Kajml bachelor thesis
 
003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_cs003 ba vzo - 06-2017_cs
003 ba vzo - 06-2017_cs
 
004 ba csma_10-2019_cs
004 ba csma_10-2019_cs004 ba csma_10-2019_cs
004 ba csma_10-2019_cs
 
009 ba_vm35_45_50_v40 - 08-2018 - cs
009  ba_vm35_45_50_v40 - 08-2018 - cs009  ba_vm35_45_50_v40 - 08-2018 - cs
009 ba_vm35_45_50_v40 - 08-2018 - cs
 
007 hkm 230-360_a1-a2-v - 10-2018_cs
007   hkm 230-360_a1-a2-v - 10-2018_cs007   hkm 230-360_a1-a2-v - 10-2018_cs
007 hkm 230-360_a1-a2-v - 10-2018_cs
 
006 ba_zv2_ev45-50 - 08-2013_cs
006  ba_zv2_ev45-50 - 08-2013_cs006  ba_zv2_ev45-50 - 08-2013_cs
006 ba_zv2_ev45-50 - 08-2013_cs
 
006 ba_zv2_ev45-50 - 08-2013_cs
006  ba_zv2_ev45-50 - 08-2013_cs006  ba_zv2_ev45-50 - 08-2013_cs
006 ba_zv2_ev45-50 - 08-2013_cs
 
Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)Základy informatiky pro ekonomy 1(1)
Základy informatiky pro ekonomy 1(1)
 
005 ba_dv56-70-90 - 20-04-2016_cs
005  ba_dv56-70-90 - 20-04-2016_cs005  ba_dv56-70-90 - 20-04-2016_cs
005 ba_dv56-70-90 - 20-04-2016_cs
 
007 ba_zv1_ev45-50 - 08-2018_cs
007  ba_zv1_ev45-50 - 08-2018_cs007  ba_zv1_ev45-50 - 08-2018_cs
007 ba_zv1_ev45-50 - 08-2018_cs
 
0a3d108a f490-11e8-9be7-6cae8b4eb554.data
0a3d108a f490-11e8-9be7-6cae8b4eb554.data0a3d108a f490-11e8-9be7-6cae8b4eb554.data
0a3d108a f490-11e8-9be7-6cae8b4eb554.data
 

Loskot_Bachelor_Thesis

  • 1. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze Fakulta elektrotechnick´a Cˇ VUT FEL katedra pocˇı´tacˇu˚ Bakal´aˇrsk´a pr´ace Audio port pro ˇreˇcov´e aplikace Martin Loskot Vedouc´ı pr´ace: Ing. Miroslav Skrbek, Ph.D. Studijn´ı program: Elektrotechnika a informatika, strukturovan´y bakal´aˇrsk´y Obor: V´ypoˇcetn´ı technika ˇcerven 2008
  • 2. ii
  • 3. Podˇekov´an´ı Dˇekuji panu Ing. Miroslavu Skrbkovi, Ph.D., vedouc´ımu bakal´aˇrsk´e pr´ace, za jeho ochotu, ˇcas a cenn´e rady, kter´e mi pomohly ke zd´arn´emu dokonˇcen´ı t´eto pr´ace. D´ale dˇekuji panu Dr. Ing. Tom´aˇsi Mackovi za poskytnut´ı podklad˚u, pomoci a zpˇetn´e vazby. iii
  • 4. iv
  • 5. Prohl´aˇsen´ı Prohlaˇsuji, ˇze jsem svou bakal´aˇrskou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´y d˚uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ym a o zmˇenˇe nˇekter´ych z´akon˚u (autorsk´y z´akon). V Peˇcet´ınˇe dne 13.6.2008 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
  • 6. vi
  • 7. Abstract This bachelor thesis discusses the analysis, the design and the implementation of an audio port for speech recognition applications. The first and main output of this thesis is a fully functional sample of a desk audio port containing a microphone, a speaker, a headphone connector and three buttons. The port is connected to a personal computer using USB interface, the audio device is a standard USB Audio Device and the button control is a standard Human Interface Device. The second output is a control application vxmlclient converting button events into voice recognizer commands. The third part of the thesis is considering the functionality and the actual usability of the device using a sample VoiceXML document. The thesis also includes the description of later design changes and recommended modifications. Abstrakt Pr´ace se zab´yv´a anal´yzou, n´avrhem a realizac´ı audio portu urˇcen´eho k ovl´ad´an´ı ˇreˇcov´ych ap- likac´ı. Hlavn´ım v´ystupem pr´ace je funkˇcn´ı vzorek stoln´ıho audio portu obsahuj´ıc´ı mikrofon, reproduktor, sluch´atkov´y v´ystup a tˇri ovl´adac´ı tlaˇc´ıtka. Port se pˇripojuje k osobn´ımu poˇc´ıtaˇci pomoc´ı USB rozhran´ı, zvukov´e zaˇr´ızen´ı je standardn´ı USB Audio Device, tlaˇc´ıtkov´e ovl´ad´an´ı je standardu Human Interface Device. Druh´ym c´ılem je vytvoˇren´ı ovl´adac´ıho programu vxmlclient pˇrev´adˇej´ıc´ıho akce tlaˇc´ıtek na pˇr´ıkazy pro hlasov´y rozpozn´avaˇc. Tˇret´ı ˇc´ast´ı je zhodnocen´ı funkˇcnosti a re´aln´e pouˇzitelnosti zaˇr´ızen´ı na vzorov´em VoiceXML dokumentu. Souˇc´ast´ı pr´ace je i popis proveden´ych zmˇen proti p˚uvodn´ımu n´avrhu a dalˇs´ıch doporuˇcen´ych ´uprav. vii
  • 9. Obsah Seznam obr´azk˚u xi Seznam tabulek xiii 1 ´Uvod 1 2 Popis probl´emu, specifikace c´ıle 3 2.1 Seznam poˇzadavk˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.1 Standard VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2.2 Architektura VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.3 Pouˇzit´ı VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Charlie VoiceXML browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3.1 Pˇr´ıkazy VoiceXML browseru . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.2 Vlastn´ı ovl´ad´an´ı - pl´anovan´y vxmlclient . . . . . . . . . . . . . . . . . . 7 2.4 St´avaj´ıc´ı hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.1 Hotov´a ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4.2 ´Uprava existuj´ıc´ıch ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Vlastn´ı ˇreˇsen´ı hardwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5.1 Universal Serial Bus (USB) . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5.1.1 USB Audio class . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5.1.2 USB Human Interface Device (HID) class . . . . . . . . . . . . 9 2.5.2 Idea vlastn´ıho ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Anal´yza a n´avrh ˇreˇsen´ı 11 3.1 Volba hardwarov´e architektury . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.1 Univerz´aln´ı obvody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.2 Specializovan´e obvody . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1.3 V´ysledn´a hardwarov´a architektura . . . . . . . . . . . . . . . . . . . . . 11 3.2 Pouˇzit´e komponenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.1 PCM2904DB - audio kodek s rozhran´ım USB . . . . . . . . . . . . . . . 12 3.2.2 TPA6011A4PWP - v´ykonov´y audio zesilovaˇc . . . . . . . . . . . . . . . 13 3.2.3 OPA353UA - operaˇcn´ı zesilovaˇc . . . . . . . . . . . . . . . . . . . . . . . 15 3.2.4 REG103UA-A - stabiliz´ator napˇet´ı . . . . . . . . . . . . . . . . . . . . . 16 3.2.5 LSM-S20K - miniaturn´ı reproduktor . . . . . . . . . . . . . . . . . . . . 16 3.2.6 Genius MIC-01A - stoj´ankov´y mikrofon . . . . . . . . . . . . . . . . . . 17 3.2.7 Sluch´atka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3 Ovˇeˇren´ı dostateˇcnosti nap´ajen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4 Softwarov´e ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.1 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.2 Tlaˇc´ıtka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.3 Raw Input Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.3.1 Registrace raw input zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . 20 3.4.3.2 ˇCten´ı dat ze zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4.4 Ovl´ad´an´ı VoiceXML browseru . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4.5 Sekvence pˇr´ıkaz˚u zas´ılan´ych vxmlclientem . . . . . . . . . . . . . . . . . 22 3.5 Shrnut´ı n´avrhov´e ˇc´asti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ix
  • 10. 4 Realizace 25 4.1 Hardwarov´a realizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.1.1 Sch´ema zapojen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.1.2 Ploˇsn´y spoj a mechanick´e ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . 25 4.1.3 Nutn´e zmˇeny hardwaru proti n´avrhu . . . . . . . . . . . . . . . . . . . . 25 4.1.3.1 Otoˇcen´ı tlaˇc´ıtek . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.3.2 ´Uprava sluch´atkov´eho konektoru . . . . . . . . . . . . . . . . . 26 4.1.3.3 Diodov´y kod´er . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.1.3.4 Zv´yˇsen´ı zes´ılen´ı operaˇcn´ıho zesilovaˇce . . . . . . . . . . . . . . 27 4.2 Softwarov´a realizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.1 Zpracov´an´ı zpr´av . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.2 Potˇrebn´e hlaviˇckov´e soubory a knihovny . . . . . . . . . . . . . . . . . . 27 4.3 Doporuˇcen´e ´upravy a rozˇs´ıˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.3.1 Hardwarov´e a mechanick´e ´upravy . . . . . . . . . . . . . . . . . . . . . . 28 4.3.2 Softwarov´e rozˇs´ıˇren´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 Pouˇzit´ı 31 5.1 Pouˇzit´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.1 Pˇripojen´ı hardwaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.2 Spuˇstˇen´ı klienta a pˇripojen´ı k serveru . . . . . . . . . . . . . . . . . . . 31 5.1.3 Naˇcten´ı VXML dokumentu . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.4 Zad´av´an´ı pˇr´ıkaz˚u pro organiz´er . . . . . . . . . . . . . . . . . . . . . . . 31 5.1.5 Ukonˇcen´ı pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Tvorba vlastn´ıch dokument˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.3 Testovac´ı dokument organizer.vxml . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.4 Re´aln´a pouˇzitelnost zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 Z´avˇer 35 7 Seznam literatury 37 A Sch´ema zapojen´ı - ˇc´ast kodeku 39 B Sch´ema zapojen´ı - ˇc´ast zesilovaˇce 40 C Seznam souˇc´astek 41 D Obsah CD 42 x
  • 11. Seznam obr´azk˚u 1.1 Nasazen´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.1 Architektura VoiceXML, pˇrevzato z [8] . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Pˇr´ım´e a asynchronn´ı odpovˇedi, pˇrevzato z [10] . . . . . . . . . . . . . . . . . . 6 2.3 Maxim´aln´ı ´ubytky nap´ajec´ıho napˇet´ı pˇri pouˇzit´ı bus-powered hubu, pˇrevzato z [14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.1 Blokov´e sch´ema audioportu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Blokov´e sch´ema PCM2904, pˇrevzato z [13] . . . . . . . . . . . . . . . . . . . . . 13 3.3 Z´akladn´ı zapojen´ı PCM2904, pˇrevzato z [13] . . . . . . . . . . . . . . . . . . . . 14 3.4 Blokov´e sch´ema TPA6011A4, pˇrevzato z [7] . . . . . . . . . . . . . . . . . . . . 15 3.5 Z´akladn´ı zapojen´ı TPA6011A4, pˇrevzato z [7] . . . . . . . . . . . . . . . . . . . 16 3.6 Operaˇcn´ı zesilovaˇc OPA353, pˇrevzato z [6] . . . . . . . . . . . . . . . . . . . . . 17 3.7 Nastaviteln´y stabiliz´ator napˇet´ı REG103A, pˇrevzato z [9] . . . . . . . . . . . . 17 3.8 Reproduktor LSM-S20K, pˇrevzato z [2] . . . . . . . . . . . . . . . . . . . . . . 18 3.9 Nap´ajen´ı elektretov´eho mikrofonu, pˇrevzato z [3] . . . . . . . . . . . . . . . . . 19 3.10 Blokov´e sch´ema komunikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1 Ilustraˇcn´ı negativ desky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.2 V´ıko audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Vnitˇrn´ı uspoˇr´ad´an´ı audio portu . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Kompletn´ı audio port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5 Diodov´y kod´er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1 Okno vxmlclienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 A.1 Sch´ema zapojen´ı - ˇc´ast kodeku . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 B.1 Sch´ema zapojen´ı - ˇc´ast zesilovaˇce . . . . . . . . . . . . . . . . . . . . . . . . . . 40 D.1 Obsah CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 xi
  • 12. xii
  • 13. Seznam tabulek 3.1 Parametry reproduktoru LSM-S20K . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Popis pin˚u HID0 aˇz HID2 kodeku PCM2904 . . . . . . . . . . . . . . . . . . . . 20 5.1 Pˇriˇrazen´ı tlaˇc´ıtek audio portu dokumentu organizer.vxml . . . . . . . . . . . . 32 C.1 Seznam souˇc´astek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 xiii
  • 14. xiv
  • 15. KAPITOLA 1. ´UVOD 1 1 ´Uvod C´ılem t´eto pr´ace je realizovat zaˇr´ızen´ı umoˇzˇnuj´ıc´ı pouˇz´ıv´an´ı prohl´ıˇzeˇce hlasov´ych dokument˚u ve form´atu VoiceXML. Pouˇzit´y prohl´ıˇzeˇc Charlie VoiceXML browser s dokumentac´ı a seznam poˇzadavk˚u mi byl poskytnut firmou IBM ˇCesk´a republika, spol. s r.o. D˚uleˇzit´ym poˇzadavkem zadavatel˚u byla jednoduch´a instalace a provoz na jak´emkoli poˇc´ıtaˇci vybaven´em operaˇcn´ım syst´emem Microsoft Windows XP. Hlavn´ım pˇr´ınosem pro uˇzivatele by mˇelo b´yt zjednoduˇsen´ı kaˇzdodenn´ıch rutinn´ıch ´ukol˚u, a to i na poˇc´ıtaˇci, kter´y dosud nen´ı vybaven zvukov´ym sub- syst´emem. Po doplnˇen´ı patˇriˇcn´eho softwaru by mˇelo b´yt moˇzn´e napˇr. spouˇstˇet aplikace, vyhled´avat ´udaje v datab´az´ıch nebo vytoˇcit telefonn´ı ˇc´ıslo a v´est a ovl´adat hovor. V n´asleduj´ıch kapitole nejprve formuluji vˇsechny poˇzadavky, kter´e byly na zaˇr´ızen´ı kladeny a naznaˇc´ım moˇzn´e pˇr´ıstupy k probl´emu. Zm´ın´ım se o podstatˇe pouˇzit´ı jazyka VoiceXML a jeho moˇznostech a pop´ıˇsi existuj´ıc´ı VoiceXML browser a zp˚usob jeho ovl´ad´an´ı. Provedu v´ybˇer hard- waru a metody komunikace s n´ım, z ˇcehoˇz pˇri n´avrhu vyplyne pouˇzit´ı sofwarov´ych prostˇredk˚u. V n´avrhov´e ˇc´asti detailnˇe rozeberu zvolen´y koncept ˇreˇsen´ı a provedu principi´aln´ı n´avrh jak hardwaru - audio portu, tak softwaru - obsluˇzn´eho programu vxmlclient. V realizaˇcn´ı kapi- tole pop´ıˇsi samotn´y postup implementace, sch´ema zapojen´ı, ploˇsn´y spoj a hotov´e zaˇr´ızen´ı vˇcetnˇe odliˇsnost´ı proti p˚uvodn´ımu n´avrhu. Popis dopln´ım doporuˇcen´ymi zmˇenami a n´amˇety na rozˇs´ıˇren´ı. V pˇredposedn´ı kapitole vysvˇetl´ım instalaci a pouˇzit´ı portu a doporuˇc´ım dalˇs´ı testov´an´ı. Z´avˇer bude patˇrit shrnut´ı a zhodnocen´ı pˇr´ınosu pr´ace. Nasazen´ı audio portu je na obr. 2.3. Obsahem doprovodn´eho CD je elektronick´a podoba t´eto pr´ace spolu s komentovan´ymi zdrojov´ymi k´ody obluˇzn´eho programu, datasheety pouˇzit´ych komponent, sch´ematem zapojen´ı a n´avrhem ploˇsn´eho spoje. Obr´azek 1.1: Nasazen´ı audio portu
  • 16. 2 KAPITOLA 1. ´UVOD
  • 17. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 3 2 Popis probl´emu, specifikace c´ıle 2.1 Seznam poˇzadavk˚u Zde se pokus´ım shrnout vˇsechny poˇzadavky, kter´e byly na audio port poloˇzeny. Nˇekter´e byly obsaˇzeny v zad´an´ı bakal´aˇrsk´e pr´ace, jin´e vyplynuly pˇri konzultac´ıch se zadavateli v pr˚ubˇehu tvorby. • Audio port bude obsahovat mikrofon a reproduktor (mono) s moˇznost´ı pˇripojen´ı sluch´atek (stereo) a alespoˇn tˇri tlaˇc´ıtka. • Audio port bude pˇripojiteln´y pˇres USB rozhran´ı k jak´emukoli poˇc´ıtaˇci vybaven´emu operaˇcn´ım syst´emem Microsoft Windows XP. • Audio port bude nap´ajen ze sbˇernice USB. • Zvukov´a ˇc´ast audio portu se bude hl´asit jako standardn´ı USB zaˇr´ızen´ı tˇr´ıdy Audio. • Minim´aln´ı vzorkovac´ı frekvence audiokodeku bude 16 kHz. • Minim´aln´ı rozliˇsen´ı A/D a D/A pˇrevodn´ıku bude 16 bit˚u. • Hlasov´y v´ystup na reproduktor a sluch´atka bude srozumiteln´y s dostateˇcnou a regulo- vatelnou hlasitost´ı. • Hlasov´y vstup z mikrofonu bude dostateˇcnˇe kvalitn´ı pro pouˇzit´y rozpozn´avaˇc. • Akce tlaˇc´ıtek bude moˇzno v´azat na ovl´ad´an´ı aplikac´ı a ˇr´ızen´ı hlasov´eho rozpozn´avaˇce Charlie VoiceXML browser firmy IBM, nejl´epe prostˇrednictv´ım zaˇr´ızen´ı tˇr´ıdy Human Interface Device (HID). • Audio port bude fyzicky ˇreˇsen jako ergonomick´e stoln´ı zaˇr´ızen´ı v podobˇe stabiln´ıho stoj´ankov´eho mikrofonu s tlaˇc´ıtky na z´akladnˇe. • Vˇsechny komponenty mus´ı b´yt dostupn´e v ˇCesk´e republice, a to i v kusov´ych mnoˇzstv´ıch a s dodac´ı lh˚utou do jednoho mˇes´ıce. 2.2 VoiceXML K porozumˇen´ı c´ıl˚um t´eto pr´ace je nutn´e porozumˇet princip˚um pouˇzit´ı jazyka VoiceXML (Voice Extensible Markup Language, VXML)[8], na nˇemˇz je funkˇcnost hlasov´eho rozpozn´avaˇce a v d˚usledku i audio portu zaloˇzena. 2.2.1 Standard VoiceXML VoiceXML je standard vyhl´aˇsen´y World Wide Web Consortiem urˇcen´y pro popis a realizaci pˇredevˇs´ım hlasov´ych dialog˚u mezi ˇclovˇekem a poˇc´ıtaˇcem [8]. Tento standard definuje dialogy za pouˇzit´ı rozpozn´an´ı a z´aznamu ˇreˇci, syntetizovan´e ˇreˇci, digit´aln´ıch audioz´aznam˚u, telefonu, telefonn´ı t´onov´e volby (DTMF) a konverzace se sm´ıˇsenou iniciativou. Pomoc´ı VoiceXML lze vytv´aˇret hlasov´e aplikace stejnˇe jednoduˇse jako bˇeˇzn´e HTML str´anky. Form´atovac´ı pˇr´ıkazy podobn´e HTML tag˚um urˇcuj´ı ˇcasovou posloupnost jednotliv´ych akc´ı, kter´e bˇehem dialogu VoiceXML browser interpretuje a prov´ad´ı. VoiceXML aplikace urˇcen´e pro PC lze adaptovat i na aplikace vyuˇz´ıvaj´ıc´ı bˇeˇzn´e telefonn´ı linky.
  • 18. 4 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 2.2.2 Architektura VoiceXML VoiceXML syst´em sest´av´a ze tˇr´ı ˇc´ast´ı: dokumentov´eho serveru, prohl´ıˇzeˇce a implementaˇcn´ı platformy (obr. 2.3). Obr´azek 2.1: Architektura VoiceXML, pˇrevzato z [8] Dokumentov´y server na poˇz´ad´an´ı poskytuje prohl´ıˇzeˇci VoiceXML soubory, kter´e prohl´ıˇzeˇc in- terpretuje podle poˇzadavk˚u implementaˇcn´ı platformy - obsluˇzn´eho programu. Obsluˇzn´y pro- gram zajiˇsˇtuje odezvu uˇzivateli, zas´ıl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci, spouˇstˇen´ı uˇzivatelsk´ych program˚u a pˇr´ıpadnˇe diagnostiku a konfiguraci cel´e sestavy. 2.2.3 Pouˇzit´ı VoiceXML Samotn´y VoiceXML dokument je obsah textov´eho souboru uzavˇren´y elementy <vxml>...</vxml>, funkcionalita dokumentu je zajiˇstˇena dialogy menu <menu>...</menu> a formul´aˇr <form>...<form>. Menu uˇzivateli umoˇzˇnuje v´ybˇer z nab´ızen´ych alternativ a t´ım ˇr´ızen´ı pr˚ubˇehu dialogu, formul´aˇr zajiˇsˇtuje vstup a v´ystup informac´ı. Konverzace obvykle zaˇc´ın´a proveden´ım prvn´ıho dialogu, pˇred´av´a se na dalˇs´ı dialogy a konˇc´ı, pokud nˇekter´y dialog neurˇc´ı sv´eho n´asledn´ıka. D´ale je moˇzn´e pouˇz´ıvat promˇenn´e k ukl´ad´an´ı ´udaj˚u, podm´ınky pro ˇr´ızen´ı a vˇetven´ı dialogu, poddia- logy, pˇr´ıkazy k z´aznamu a reprodukci zvuku a mnoho dalˇs´ıch element˚u. Pˇri pouˇzit´ı rozpozn´avaˇce je nutn´e kaˇzd´emu vstupn´ımu poli (field) definovat pouˇzitou gramatiku, tj. mnoˇzinu platn´ych vstup˚u, a to buˇd pˇr´ımo v dokumentu, nebo v jin´em souboru.
  • 19. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 5 N´asleduje pˇr´ıklad jednoduch´eho VoiceXML dokumentu, pˇrevzat´eho z [8], kter´y jsem doplnil o vysvˇetluj´ıc´ı koment´aˇre: <?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd" version="2.0"> <!--Prvn´ı dialog--> <form> <!--Vstupn´ı pole--> <field name="drink"> <!--Dotaz na uˇzivatele--> <prompt>Would you like coffee, tea, milk, or nothing?</prompt> <!--Definice gramatiky uloˇzen´e v souboru drink.grxml--> <grammar src="drink.grxml" type="application/srgs+xml"/> </field> <block> <!--Odkaz na n´asleduj´ıc´ı dialog--> <submit next="http://www.drink.example.com/drink2.asp"/> </block> </form> </vxml> Pr˚ubˇeh konverzace mezi poˇc´ıtaˇcem (C) a ˇclovˇekem (H): C: Would you like coffee, tea, milk, or nothing? H: Orange juice. (chybn´a volba) C: I did not understand. (chybov´a zpr´ava z´avisl´a na konkr´etn´ım prohl´ıˇzeˇci) C: Would you like coffee, tea, milk, or nothing? H: Tea. (spr´avn´a volba) C: (pokraˇcuje dokumentem drink2.asp) Je zde vidˇet, ˇze pˇrev´aˇznou vˇetˇsinu funkˇcnosti vˇcetnˇe oˇsetˇren´ı nekorektn´ıch vstup˚u mus´ı obstarat prohl´ıˇzeˇc. Obdobnˇe by mˇel fungovat i testovac´ı dokument intepretovan´y Charlie VoiceXML browserem. 2.3 Charlie VoiceXML browser Charlie VoiceXML browser [11] je konzolov´y prohl´ıˇzeˇc VoiceXML dokument˚u pro MS Windows. Je schopen pracovat ve dvou z´akladn´ıch reˇzimech. Prvn´ım je reˇzim pˇr´ıkazov´eho ˇr´adku, ve kter´em se dokument naˇcte pˇr´ıkazem ebrowser filename.vxml
  • 20. 6 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE a automaticky se zaˇcne prov´adˇet od prvn´ıho formul´aˇre. Druh´ym je reˇzim XML Voice Browser (XVB) serveru, ve kter´em prohl´ıˇzeˇc naslouch´a na dan´em portu (obvykle 7777) a ˇcek´a na TCP spojen´ı a n´asledn´e pˇr´ıkazy. Volba reˇzimu a mnoha dalˇs´ıch parametr˚u (portu, jazykov´ych sou- bor˚u, vzorkov´an´ı, logov´an´ı, timeout˚u apod.) se prov´ad´ı konfiguraˇcn´ım souborem mastercfg.cfg podle dokumentace pˇriloˇzen´e k browseru [11]. 2.3.1 Pˇr´ıkazy VoiceXML browseru Charlie VoiceXML browser pracuje jako stavov´y automat, vykon´av´a pˇr´ıchoz´ı pˇr´ıkazy a odes´ıl´a na nˇe pˇr´ım´e (direct) a asynchronn´ı odpovˇedi, mezi nimi jsou i informace o kaˇzd´e zmˇenˇe stavu prohl´ıˇzeˇce (obr. 2.2). Kaˇzd´emu poˇzadavku m˚uˇze klient urˇcit jedineˇcn´e ID, kter´ym jsou pak identifikov´any vˇsechny pˇr´ım´e odpovˇedi. Asynchronn´ı odpovˇedi ID nemaj´ı a jsou povaˇzov´any za odpovˇedi na posledn´ı zpracovan´y pˇr´ıkaz. K testov´an´ı pˇr´ıkaz˚u pro serverov´y reˇzim je k dispozici konzolov´y klient xvbc, umoˇzˇnuj´ıc´ı pˇres TCP spojen´ı zas´ılat jednotliv´e XVB pˇr´ıkazy nebo d´avky pˇr´ıkaz˚u [10]. Obr´azek 2.2: Pˇr´ım´e a asynchronn´ı odpovˇedi, pˇrevzato z [10] Toto je typick´a sekvence XVB pˇr´ıkaz˚u: <!--Inicializace browseru--> <xvb><init id="1"/></xvb> <!--Naˇcten´ı dokumentu--> <xvb><load id="2" uri="menu.vxml"/></xvb> <!--Zaˇc´atek vykon´av´an´ı--> <xvb><exec id="3"/></xvb> <!--Storno vykon´av´an´ı--> <xvb><cancel id="4"/></xvb> <!--Izolace od browseru--> <xvb><detach id="5"/></xvb> <!--´Upln´e odpojen´ı od browseru--> <xvb><disconnect id="6"/></xvb> Na poˇzadavek o inicializaci pˇriˇsly postupnˇe tyto dvˇe odpovˇedi, znaˇc´ıc´ı postupn´e pˇrechody do stav˚u ”initializing” a ”initialized”. Prvn´ı z nich je asynchronn´ı. Druh´a odpovˇeˇd je pˇr´ım´a, tedy
  • 21. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 7 je u n´ı moˇzn´e urˇcit, kter´ym pˇr´ıkazem byla vyvol´ana: <?xml version="1.0"?> <xvb version="0.4"> <result state="initializing"/> </xvb> <?xml version="1.0"?> <xvb version="0.4"> <result id="1" state="initialized"> <session sid="2" remoteuri="" localuri="" vxmluri="" rooturi="" key="2Kb7FzP" state="initialized"/> </result> </xvb> Charlie VoiceXML browser je d´ale vybaven ”SocketIO Charlie extension”, coˇz mu umoˇzˇnuje zas´ılat data (napˇr. rozpoznan´e vstupy) pˇres TCP spojen´ı na adresu a port definovan´y ve VoiceXML dokumentu. Obdobnˇe funguje ”FileIO Charlie extension” umoˇzˇnuj´ıc´ı pr´aci se soubory. 2.3.2 Vlastn´ı ovl´ad´an´ı - pl´anovan´y vxmlclient Jedn´ım z c´ıl˚u t´eto pr´ace je pr´avˇe napsat jedno´uˇcelov´y zkuˇsebn´ı obsluˇzn´y program vxmlclient, kter´y by nahradil uviverz´aln´ı xvbc a poskytl tak pohotovˇejˇs´ı podporu pˇri testov´an´ı audioportu. Princip jeho funkce popisuje druh´a polovina pˇr´ıˇst´ı kapitoly. 2.4 St´avaj´ıc´ı hardware Pˇri hled´an´ı optim´aln´ıho hardwarov´eho ˇreˇsen´ı jsem se nejprve zamˇeˇril na nalezen´ı hotov´eho produktu nebo vyuˇzit´ı existuj´ıc´ıch komponent, pot´e jsem prozkoumal moˇzn´e cesty pˇri n´avrhu vlastn´ıho zaˇr´ızen´ı. 2.4.1 Hotov´a ˇreˇsen´ı Na trhu existuje velk´e mnoˇzstv´ı audiozaˇr´ızen´ı, z nichˇz vˇetˇsina splˇnuje poˇzadavky kladen´e na zvukovou ˇc´ast audio portu, jako je vzorkovac´ı frekvence, rozliˇsen´ı pˇrevodn´ıku, sluch´atkov´e a repro v´ystupy a pˇripojen´ı jako standardn´ı USB Audio. Hlasitost b´yv´a u jednoduˇsˇs´ıch z nich ovl´ad´ana prostˇrednictv´ım poˇc´ıtaˇce, sloˇzitˇejˇs´ı m´ıvaj´ı vlastn´ı regul´atory ˇci ekvaliz´ery. ˇZ´adn´e z nich vˇsak nen´ı provedeno jako stoln´ı zaˇr´ızen´ı s vestavˇen´ym reproduktorem a mikrofonem. Jako z´asadn´ı probl´em se tak´e uk´azala neexistence tlaˇc´ıtek s program´atorsky nebo uˇzivatelsky definovateln´ymi funkcemi, potˇrebn´ymi k ovl´ad´an´ı VoiceXML prohl´ıˇzeˇce. 2.4.2 ´Uprava existuj´ıc´ıch ˇreˇsen´ı Zv´aˇzil jsem moˇznost upravit existuj´ıc´ı zvukovou kartu pˇrid´an´ım mikrofonu a reproduktoru s v´ystupn´ım v´ykonov´ym zesilovaˇcem a tlaˇc´ıtkov´e ovl´ad´an´ı realizovat oddˇelenˇe jako zvl´aˇstn´ı zaˇr´ızen´ı standardu HID. V´yhodou tohoto ˇreˇsen´ı by byla jednoduch´a realizace cel´e zvukov´e ˇc´asti, i kdyˇz by znaˇcn´a ˇc´ast funkˇcnosti zvukov´e karty z˚ustala nevyuˇzita. Nev´yhodou je vˇsak obt´ıˇzn´e a zbyteˇcnˇe komplikovan´e spojen´ı zvukov´e a tlaˇc´ıtkov´e ˇc´asti do jednoho celku, neboˇt jsem se chtˇel vyhnout moˇznosti pˇripojovat obˇe ˇc´asti zvl´aˇsˇt jako samostatn´e jednotky pˇres USB
  • 22. 8 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE rozboˇcovaˇc, ˇc´ımˇz by se pˇrid´avaly relativnˇe nepotˇrebn´e podp˚urn´e komponenty. D´ale by se neod- stranila nutnost tvorby ploˇsn´eho spoje, kter´y by byl nutn´y pro realizaci v´ystupn´ıho zesilovaˇce. T´ım by rostla velikost a cena zaˇr´ızen´ı. Po zv´aˇzen´ı tˇechto fakt˚u jsem zvolil variantu vlastn´ıho ˇreˇsen´ı cel´eho portu, kter´e se mi jevilo jako pˇr´ımoˇcar´e a efektivn´ı. 2.5 Vlastn´ı ˇreˇsen´ı hardwaru V´yvoj vlastn´ıho ˇreˇsen´ı jsem zah´ajil studiem specifikace USB [14], USB Audio Class [5] a USB HID class [1]. Zde uv´ad´ım struˇcn´e shrnut´ı tˇech v´ysledk˚u, kter´e se pˇr´ımo v´aˇz´ı k n´avrhu audio portu. 2.5.1 Universal Serial Bus (USB) USB je nejrozˇs´ıˇrenˇejˇs´ı s´eriov´e rozhran´ı urˇcen´e k pˇripojov´an´ı periferi´ı k PC, pomoc´ı rozboˇcovaˇc˚u umoˇzˇnuje pˇripojen´ı aˇz 127 zaˇr´ızen´ı v aˇz sedmi ´urovn´ıch a podporuje pˇripojov´an´ı od odpojov´an´ı za bˇehu syst´emu (hot swapping) a automatickou konfiguraci zaˇr´ızen´ı (plug-and-play). Jedno fyzick´e zaˇr´ızen´ı m˚uˇze disponovat v´ıce logick´ymi rozhran´ımi (napˇr. zvukov´ym a ovl´adac´ım), pak se jedn´a o tzv. ”USB composite device”. D´ale je pro n´as podstatn´e to, ˇze umoˇzˇnuje jak pˇripojen´ı zaˇr´ızen´ı s vlastn´ım nap´ajen´ım (self-powered device), tak i nap´ajen´ı zaˇr´ızen´ı s menˇs´ım odbˇerem proudu pˇr´ımo ze sbˇernice (bus-powered device). USB poskytuje zaˇr´ızen´ı nap´ajen´ı 5 V s pˇetiprocetn´ı toleranc´ı. Po pˇripojen´ı sm´ı zaˇr´ızen´ı odeb´ırat proud max. 100 mA, avˇsak sm´ı poˇz´adat o nav´yˇsen´ı aˇz do 500 mA po kroc´ıch 2 mA. Pˇri pouˇzit´ı mezilehl´ych bus-powered hub˚u se vˇsak pˇr´ıdˇel sniˇzuje na 400 mA. Nav´ıc na kaˇzd´em prvku doch´az´ı k ´ubytku napˇet´ı, jak ukazuje obr. 2.3 [14]. I pˇri pˇripojen´ı pˇr´ımo ke koˇrenov´emu hubu v PC nebo k jin´emu samostatnˇe nap´ajen´emu hubu se tedy m˚uˇze st´at, ˇze zaˇr´ızen´ı bude m´ıt k dispozici pouze 4,5 V. Operaˇcn´ı syst´em hostitelsk´eho poˇc´ıtaˇce typicky proudov´e zat´ıˇzen´ı sbˇernice monitoruje a varuje uˇzivatele v pˇr´ıpadˇe, ˇze je poˇzadov´an vˇetˇs´ı proud, neˇz je dostupn´y. Z toho vypl´yv´a, ˇze vˇsechny komponenty navrhovan´eho zaˇr´ızen´ı mus´ı b´yt schopn´e pracovat pˇri napˇet´ı menˇs´ım nebo rovn´em 4,5 V (v ide´aln´ım pˇr´ıpadˇe vˇsechny pˇri stejn´em) a souhrnn´y odbˇer nesm´ı pˇres´ahnout 500 mA. Obr´azek 2.3: Maxim´aln´ı ´ubytky nap´ajec´ıho napˇet´ı pˇri pouˇzit´ı bus-powered hubu, pˇrevzato z [14] Zaˇr´ızen´ı pˇripojen´a k rozhran´ı USB mohou b´yt navrˇzen´a zcela dle v˚ule v´yrobce, a pak potˇrebuj´ı specifick´y ovladaˇc. Druhou moˇznost´ı je postavit zaˇr´ızen´ı spadaj´ıc´ı do nˇekter´ych z tzv. USB device classes - tˇr´ıd standardn´ıch USB zaˇr´ızen´ı. Tyto tˇr´ıdy definuj´ı jednotnou identifikaci a
  • 23. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 9 chov´an´ı zaˇr´ızen´ı, takˇze jeden ovladaˇc m˚uˇze b´yt pouˇzit pro vˇsechna zaˇr´ızen´ı dan´e tˇr´ıdy. Operaˇcn´ı syst´em by mˇel implementovat ovladaˇce vˇsech tˇr´ıd a t´ım zajistit podporu libovoln´emu zaˇr´ızen´ı spadaj´ıc´ımu do nˇekter´e z nich. Tento rys USB architektury umoˇzˇnuje, abychom za pouˇzit´ı dvou USB tˇr´ıd realizovali audio port bez nutnosti ps´at jak´ekoli ovladaˇce. Pro naˇse ´uˇcely se nab´ız´ı Audio class a Human Interface Device (HID) class. 2.5.1.1 USB Audio class Tˇr´ıdu USB Audio definuje USB Implementers Forum, Inc. [5] jako tˇr´ıdu obsahuj´ıc´ı veˇsker´a zaˇr´ızen´ı pod´ılej´ıc´ı se na zpracov´an´ı zvuku a ˇr´ızen´ı zvukov´ych funkc´ı. To znamen´a, ˇze obstar´av´a operace s digit´aln´ımi i analogov´ymi audio daty stejnˇe jako ovl´ad´an´ı hlasitosti, ekvaliz´er, mix´er, gener´atory efekt˚u a dalˇs´ı. Zaˇr´ızen´ı t´eto tˇr´ıdy se po pˇripojen´ı k poˇc´ıtaˇci bude chovat jako zvukov´a karta se vˇsemi tˇemito funkcemi, pokud byly implementov´any. 2.5.1.2 USB Human Interface Device (HID) class Tˇr´ıda USB Human Interface Device je pops´ana v´ıce dokumenty USB Implementers Fora [1]. Je to tˇr´ıda popisuj´ıc´ı zaˇr´ızen´ı pro pˇr´ımou komunikaci ˇclovˇeka a poˇc´ıtaˇce, jako jsou kl´avesnice, myˇsi, hern´ı ovladaˇce, tlaˇc´ıtkov´e panely a alfanumerick´e displeje. HID zaˇr´ızen´ı jsou podle typu dˇelena do ”usage pages” (str´anky uˇzit´ı), kter´e bl´ıˇze urˇcuj´ı pouˇzit´ı dan´eho zaˇr´ızen´ı (napˇr. Key- board/Keypad, LEDs, Telephony, Consumer, Game Controls, Button apod.). Kaˇzd´a usage page seskupuje jednotliv´a ”usages” podobn´eho druhu (napˇr. Consumer usage page zahrnuje Stop, Eject, Pause, Quit, Help a dalˇs´ı usages) a d´ale m˚uˇze obsahovat i spoleˇcnˇe vystupuj´ıc´ı skupiny logicky bl´ızk´ych prvk˚u (napˇr. do skupiny Consumer Control patˇr´ı Vo- lume Increment, Volume Decrement, Mute a dalˇs´ı). Jak usage pages, tak i jednotliv´e usages a skupiny bl´ızk´ych usages jsou identifikov´any dvojm´ıst´ymi hexadecim´aln´ımi ˇc´ısly. Informace z HID zaˇr´ızen´ı jsou typicky pˇri kaˇzd´e ud´alosti pˇren´aˇseny pˇres interruptov´e rozhran´ı ve formˇe ˇc´ıseln´ych scan-k´od˚u popisuj´ıc´ıch stav ovl´adac´ıch prvk˚u. Tyto scan-k´ody mohou b´yt d´ıky API operaˇcn´ıho syst´emu zas´ıl´any ve formˇe zpr´av obsluˇzn´ym aplikac´ım. 2.5.2 Idea vlastn´ıho ˇreˇsen´ı Hlavn´ı myˇslenkou m´eho ˇreˇsen´ı je maxim´aln´ı vyuˇzit´ı standardizovan´ych zaˇr´ızen´ı a rozhran´ı. Jako optim´aln´ı se jev´ı vyuˇzit´ı komponent tˇr´ıdy Audio pro ˇc´ast zvukovou a tˇr´ıdy Human Interface Device pro ˇc´ast tlaˇc´ıtkovou. V ide´aln´ım pˇr´ıpadˇe se podaˇr´ı naj´ıt integrovan´e reˇsen´ı, kter´e obstar´a jak USB komunikaci, tak zpracov´an´ı zvuku a obsluhu tlaˇc´ıtek. V dalˇs´ı ˇc´asti pr´ace se pokus´ım takov´yto vhodn´y hardware nal´ezt a v z´avislosti na nˇem pak vypracovat hardwarov´e i softwarov´e ˇreˇsen´ı.
  • 24. 10 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
  • 25. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 11 3 Anal´yza a n´avrh ˇreˇsen´ı V t´eto kapitole provedu a vysvˇetl´ım v´ybˇer hardwarov´ych komponent a pop´ıˇsi jejich propojen´ı. Na to nav´aˇzi n´avrhem obsluˇzn´eho programu a testovac´ıho dokumentu. 3.1 Volba hardwarov´e architektury 3.1.1 Univerz´aln´ı obvody Pˇri n´avrhu nov´eho zaˇr´ızen´ı bylo v z´asadˇe moˇzn´e postupovat dvˇema smˇery. Jako prvn´ı jsem zv´aˇzil moˇznost implementace z´akladn´ı funkcionality pomoc´ı univerz´aln´ıch mikroprocesor˚u. Prohl´edl jsem nab´ıdku firem Microchip, Atmel, Analog Devices, Zilog, NXP Semiconduc- tors, Freescale Semiconductor, ON Semiconductor, National Semiconductor, Maxim Integrated Products a Texas Instruments. Aˇckoli existuje velk´e mnoˇzstv´ı procesor˚u, nepodaˇrilo se mi nal´ezt ˇz´adn´y, kter´y by souˇcasnˇe disponoval A/D a D/A kodekem poˇzadovan´e kvality, audio v´ybavou a USB rozhran´ım. Bylo by tedy pravdˇepodobnˇe nutn´e pouˇz´ıt tˇri samostatn´e obvody: kodek, sign´alov´y procesor a USB controller (a d´ale samozˇrejmˇe stabiliz´ator napˇet´ı a vstupn´ı a v´ystupn´ı zesilovaˇce). Zaˇr´ızen´ı by tedy bylo relativnˇe sloˇzit´e a n´aroˇcn´e na tvorbu firmwaru i obsluˇzn´e aplikace. 3.1.2 Specializovan´e obvody Druhou cestou bylo pouˇzit´ı specializovan´eho obvodu vyroben´eho na m´ıru podobn´ym aplikac´ım. Opˇet jsem proˇsel nab´ıdky v´yˇse zm´ınˇen´ych firem a z nevelk´eho v´ybˇeru jsem jako jedin´e vhodn´e zhodnotil obvody ˇrady PCM290x firmy Texas Instruments. Jejich hlavn´ı v´yhodou je v´yznamn´a jednoduchost proti vˇsem ostatn´ım. Funkce tˇechto kodek˚u s USB rozhran´ım pˇresnˇe pokr´yvaj´ı pˇr´ısluˇsn´e poˇzadavky ze zad´an´ı a mimo nˇe nenab´ızej´ı ˇz´adn´e nadbyteˇcn´e schopnosti. Nakonec jsem se rozhodl pro kodek PCM2904, kter´y je nejjednoduˇsˇs´ım z kodek˚u pracuj´ıc´ıch v z´akladn´ım proveden´ı pˇri nap´ajec´ım napˇet´ı kolem 5 V a umoˇzˇnuj´ıc´ıch poˇz´adat USB hostitele o proud aˇz 500 mA. 3.1.3 V´ysledn´a hardwarov´a architektura V´ybˇer komponent jsem pˇrizp˚usobil vlastnostem kodeku PCM2904 [13]. Ten s´am o sobˇe neposkytuje dostateˇcn´y v´ykon pro buzen´ı reproduktor˚u, ani nen´ı pˇrizp˚usoben pro pˇr´ım´e pˇripojen´ı mikrofonu a nedok´aˇze tyto souˇc´asti nap´ajet. I pˇres doplnˇen´ı tˇechto relativnˇe nez´avisl´ych prvk˚u z˚ustane zaˇr´ızen´ı pomˇernˇe jednoduch´e a snadno modifikovateln´e. Pˇri v´ybˇeru dalˇs´ıch souˇc´astek jsem z˚ustal u firmy Texas Instruments, neboˇt nab´ız´ı dostateˇcn´y sortiment zesilovaˇc˚u i stabiliz´ator˚u vˇcetnˇe dobr´e dokumentace a uk´azkov´ych zapojen´ı. Texas Instruments m´a zastoupen´ı a s´ıˇt distributor˚u i v ˇCR a jej´ı produkty jsou u n´as jiˇz zabˇehl´e. Pro experiment´aln´ı v´yvoj je pˇr´ızniv´e i to, ˇze nab´ız´ı bezplatn´e zasl´an´ı vzork˚u souˇc´astek s dobou doruˇcen´ı dvou aˇz tˇr´ı t´ydn˚u. Zaˇr´ızen´ı tedy bude obsahovat tyto ˇctyˇri z´akladn´ı komponenty (obr. 3.1): • kodek PCM2904DB zajiˇsˇtuj´ıc´ı komunikaci pˇres USB, zpracov´an´ı zvukov´ych proud˚u a obsluhu tlaˇc´ıtek, • v´ystupn´ı zesilovaˇc TPA6011A4PWP dod´avaj´ıc´ı v´ykon reproduktoru a sluch´atk˚um, • vstupn´ı zesilovaˇc OPA353UA pro buzen´ı A/D pˇrevodn´ıku kodeku mikrofonn´ım sign´alem,
  • 26. 12 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I • nastaviteln´y stabiliz´ator napˇet´ı REG103UA-A pro nap´ajen´ı obou zesilovaˇc˚u, mikrofonu a ovl´adac´ıch prvk˚u. Obr´azek 3.1: Blokov´e sch´ema audioportu 3.2 Pouˇzit´e komponenty 3.2.1 PCM2904DB - audio kodek s rozhran´ım USB Je pops´an v datasheetu [13]. Jedn´a se o jednoˇcipov´y stereo audio kodek s USB rozhran´ım verze 1.1. Pracuje bez jak´ehokoli uˇzivatelsk´eho softwarov´eho k´odu a chov´a se jako v´yˇse zm´ınˇen´e USB audio zaˇr´ızen´ı (zvukov´a ˇc´ast), resp. HID zaˇr´ızen´ı Consumer usage page (0x0C), Consumer Con- trol (0x01) (tlaˇc´ıtkov´a ˇc´ast) [1]. PCM2904 obsahuje 16-bitov´e Delta-Sigma pˇrevodn´ıky (obr. 3.2). D/A pˇrevodn´ık pracuje pˇri vzorkovac´ı frekvenci 32, 44,1 nebo 48 kHz, A/D pˇrevodn´ık pˇri 8, 11,025, 16, 22,05, 32, 44,1 a 48 kHz. Regulace hlasitosti je zajiˇstˇena v rozsahu 0 aˇz -64 dB s krokem 1 dB nez´avisle pro kaˇzd´y o obou kan´al˚u. Zaˇr´ızen´ı HID m´a z pouzdra vyvedeno piny HID0, HID1 a HID2, jak je vidˇet na obr. 3.2 a 3.3. Stav tlaˇc´ıtek je zjiˇsˇtov´an a hl´aˇsen kaˇzd´ych 32 milisekund. ˇC´ıseln´e hodnoty scan-k´od˚u pouˇziteln´e obluˇznou aplikac´ı jsou tvoˇreny jako tˇr´ıbitov´y bin´arn´ı k´od, kde HID0 m´a v´yznam nejniˇzˇs´ıho a HID2 nejvyˇsˇs´ıho bitu, tedy dosahuj´ı hodnot 0 aˇz 7. Po pˇripojen´ı k USB a enumeraci poˇz´ad´a kodek o nap´ajen´ı 500 mA, pot´e power manager zmˇenou sign´alu SSPND do jedniˇcky povol´ı ˇcinnost podp˚urn´ych obvod˚u (obr. 3.3). Z´aroveˇn zaˇcne vodiˇc SSPND slouˇzit jako zdroj napˇet´ı pro HID piny vybaven´e intern´ım pull-down rezistorem, ovl´ad´an´ı tedy prob´ıh´a pˇripojov´an´ım kladn´eho napˇet´ı. Kodek pro svou potˇrebu d´ale obsahuje integrovan´y regul´ator napˇet´ı 3,3 V, je si tedy schopen s´am zajistit nap´ajen´ı. Pro svou funkci potˇrebuje pouze 12 MHz krystalov´y rezon´ator a nˇekolik rezistor˚u a blokovac´ıch kondenz´ator˚u. Poˇzadovan´e nap´ajec´ı napˇet´ı je 4,35 aˇz 5,25 V a odbˇer proudu 56 mA. Fyzicky je kodek proveden
  • 27. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 13 Obr´azek 3.2: Blokov´e sch´ema PCM2904, pˇrevzato z [13] jako 28-v´yvodov´a SMD souˇc´astka v pouzdru SSOP (DB) s rozteˇc´ı v´yvod˚u 0,65 mm. Tyto vlastnosti jej po doplnˇen´ı o vstupn´ı a v´ystupn´ı zesilovaˇce pˇredurˇcuj´ı k pouˇzit´ı v audio portu. 3.2.2 TPA6011A4PWP - v´ykonov´y audio zesilovaˇc Je pops´an v datasheetu [7]. TPA6011A4 je v´ystupn´ı v´ykonov´y stereo zesilovaˇc urˇcen´y k pouˇzit´ı pˇredevˇs´ım v notebooc´ıch a kapesn´ıch poˇc´ıtaˇc´ıch. Do kaˇzd´eho kan´alu je schopn´y dod´avat v´ykon 2 W pˇri z´atˇeˇzi s impedanc´ı 3 ohmy. Umoˇzˇnuje pouˇzit´ı diferenˇcn´ıch nebo (pro n´as vhodnˇejˇs´ıch) single-ended vstup˚u. Pomoc´ı multiplexor˚u lze volit mezi dvˇema shodn´ymi stereovstupy (pro dva r˚uzn´e zdroje sign´alu) a dvˇema r˚uzn´ymi reˇzimy t´ehoˇz stereov´ystupu (jedn´ım pro sluch´atka, druh´ym pro reproduktory), jak ukazuje blokov´e sch´ema 3.4. Aktivn´ı je vˇzdy pr´avˇe jeden vstup voliten´y pinem HP/LINE, nula aktivuje vstupy RLINEIN a LLINEIN, jedniˇcka pˇripoj´ı RHPIN a LHPIN. Pro audio port jsem pouˇzil prvn´ı moˇznost, HP/LINE, RHPIN i LHPIN jsem pˇrizemnil a RLINEIN a LLINEIN jsem pˇres vazebn´ı kon-
  • 28. 14 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I Obr´azek 3.3: Z´akladn´ı zapojen´ı PCM2904, pˇrevzato z [13] denz´ator 10M pˇripojil pˇr´ımo k v´ystupu kodeku. Nez´avisle na vstupu lze pinem SE/BTL v nule pˇripojit pˇr´ıdavn´e zesilovaˇce na v´yvodech LOUT- a ROUT- a t´ım vybrat reˇzim BTL (reproduk- tor je pak zapojen mezi ROUT+ a ROUT-, resp. LOUT+ a LOUT-). Jedniˇcka tyto zesilovaˇce odpoj´ı a t´ım se pˇrejde do reˇzimu SE (sluch´atka pak jsou pˇres vazebn´ı kondenz´atory Cc pˇripojena mezi ROUT+ resp. LOUT+ a zemi). Nastaven´ı SE/BTL je pˇri pouˇzit´ı sluch´atkov´eho konek- toru se sp´ınaˇcem prov´adˇeno automaticky d´ıky odporov´emu dˇeliˇci, obr. 3.5. Takto jsem se rozhodl zapojit i v´ystup audio portu, ovˇsem pro mono reproduktor jsem pouˇzil pouze lev´y kan´al. ˇR´ızen´ı hlasitosti zajiˇsˇtuje jednotka ”32-Step Volume Control” na obr. 3.4. Stejnosmˇern´ym napˇet´ım na pinech VOLUME, SEDIFF a SEMAX se nastavuje hlasitost v´ystupu, rozd´ıl hlasi- tosti reproduktor˚u a sluch´atek a maxim´aln´ı hlasitost sluch´atek. Ovl´adac´ı napˇet´ı se sm´ı pohy- bovat v intervalu od nuly do aktu´aln´ıho nap´ajec´ıho napˇet´ı zesilovaˇce a je rovnomˇernˇe rozdˇeleno na 32 krok˚u, z nichˇz kaˇzd´y mimo prvn´ıho odpov´ıd´a 2 dB zisku zesiovaˇce, kter´e se tak m˚uˇze pohybovat v rozmez´ı -46 aˇz +14 dB. Prvn´ı interval od 0 znamen´a zisk -85 dB, tedy fakticky nulovou hlasitost. V audio portu nen´ı tato regulace hlasitosti pro bˇeˇzn´y provoz potˇrebn´a, neboˇt je jiˇz vyˇreˇsena kodekem. Proto jsem se rozhodl osadit pouze tˇri trimry 100k pro poˇc´ateˇcn´ı nas- taven´ı. Doporuˇcen´e nap´ajec´ı napˇet´ı je 4 aˇz 5,5 V. Pˇri pˇredpokl´adan´e z´atˇeˇzi 8 ohm a nap´ajec´ım napˇet´ı 4,5 V by zesilovaˇc mˇel pˇredat maxim´aln´ı v´ykon 1 W a pˇritom vyz´aˇrit nejv´yˇse 0,6 W, coˇz by mˇel pokr´yt nap´ajec´ı proud 355 mA. Fyzicky je obvod proveden jako 20-v´yvodov´a SMD souˇc´astka
  • 29. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 15 Obr´azek 3.4: Blokov´e sch´ema TPA6011A4, pˇrevzato z [7] v pouzdru HTSSOP (PWP) s rozteˇc´ı v´yvod˚u 0,65 mm. 3.2.3 OPA353UA - operaˇcn´ı zesilovaˇc Je pops´an v datasheetu [6] a zobrazen na obr. 3.6 a firmou Texas Instruments je doporuˇcen´y pro pˇripojov´an´ı vstup˚u ke kodek˚um ˇrady PCM290x [12]. Je to rail-to-rail operaˇcn´ı zesilovaˇc urˇcen´y pro nasazen´ı v miniaturizovan´ych aplikac´ıch a vhodn´y pro buzen´ı A/D pˇrevodn´ık˚u. Pouˇz´ıv´a nesymetrick´e nap´ajen´ı 2,7 aˇz 5,5 V a m´a klidov´y odbˇer proudu do 8 mA. Vzhledem k pˇripojen´ı na vysokoimpedanˇcn´ı vstup kodeku nehroz´ı v´yrazn´y vzestup odbˇeru. Vyr´ab´ı se jak samostatnˇe, tak ve v´ıce kopi´ıch ve spoleˇcn´em pouzdˇre. Zvolil jsem variantu samostatn´eho OPA353UA v osmiv´yvodov´em SMD pouzdˇre SOIC (D) s rozteˇc´ı v´yvod˚u 1,27 mm. Na vstup jsem pˇripojil mono mikrofon a v´ystup jsem rozdˇelil na dvˇe ˇc´asti pˇriveden´e pˇres blokovac´ı kondenz´atory do vstup˚u VINL a VINR kodeku.
  • 30. 16 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I Obr´azek 3.5: Z´akladn´ı zapojen´ı TPA6011A4, pˇrevzato z [7] 3.2.4 REG103UA-A - stabiliz´ator napˇet´ı Je pops´an v datasheetu [9] a jeho zapojen´ı je naznaˇceno na obr. 3.7. Jedn´a se o stabiliz´ator napˇet´ı o nastaviteln´e velikosti 1,295 aˇz 5,5 V, pochopitelnˇe shora d´ale omezen´eho nap´ajec´ım napˇet´ım samotn´eho stabiliz´atoru. Zvolil jsem jej pro stabilizaci nap´ajec´ıho napˇet´ı obou ze- silovaˇc˚u, neboˇt pouˇziteln´y pr˚unik povolen´ych napˇet´ı zesilovaˇc˚u a garantovan´eho napˇet´ı posky- tovan´eho USB rozhran´ım (po odeˇcten´ı ´ubytku na stabiliz´atoru) je 4 aˇz 4,385 V. Nastaven´ı v´ystupn´ıho napˇet´ı se prov´ad´ı volbou rezistor˚u R1 a R2 podle vzorce na obr. 3.7. Pouˇzil jsem hodnoty R1 = 30k a R2 = 13k, coˇz odpov´ıd´a napˇet´ı 4,28 V leˇz´ıc´ımu ve v´yˇse uveden´em intervalu, kter´e my mˇelo postaˇcovat s rezervou na obou stran´ach. Proudov´a rezerva je tak´e zajiˇstˇena, i v extr´emn´ıch podm´ınk´ach m´a stabiliz´ator dodat minim´alnˇe 500 mA. Vyz´aˇren´e teplo vlastn´ıho stabiliz´atoru pˇri napˇet´ı USB rozhran´ı 5 V je P = (Vin - Vout)*Iout = (5 V - 4,28 V)*(355 mA + 8 mA) = 0,261 W, coˇz odpov´ıd´a vlastn´ımu odbˇeru stabiliz´atoru 52 mA. 3.2.5 LSM-S20K - miniaturn´ı reproduktor Pouˇzit´y reproduktor mus´ı pˇredevˇs´ım vˇernˇe reprodukovat ˇreˇc. Nen´ı tedy nutn´e snaˇzit se za kaˇzdou cenu pokr´yt cel´e slyˇsiteln´e zvukov´e spektrum, ale staˇc´ı zajistit reprodukci pˇribliˇznˇe
  • 31. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 17 Obr´azek 3.6: Operaˇcn´ı zesilovaˇc OPA353, pˇrevzato z [6] Obr´azek 3.7: Nastaviteln´y stabiliz´ator napˇet´ı REG103A, pˇrevzato z [9] v rozmez´ı 125 Hz aˇz 8 kHz. Horn´ı hranice 8 kHz je z´aroveˇn maxim´aln´ı frekvenc´ı, kterou je podle Nyquistova vzorkovac´ıho teor´emu teoreticky moˇzn´e zachytit pˇri vzorkovac´ı frekvenci 16 kHz, kter´a je pro audio port poˇzadov´ana. Impedance reproduktoru mus´ı odpov´ıdat n´arok˚um zesilovaˇce. Z´aroveˇn mus´ı b´yt povolen´y v´ykon reproduktoru vˇetˇs´ı nebo roven v´ykonu zesilovaˇce, neboˇt by jinak mohlo doj´ıt k jeho poˇskozen´ı. V neposledn´ı ˇradˇe by mˇel b´yt reproduktor kom- paktn´ı a fyzicky proveden´y tak, aby jej bylo moˇzno do experiment´aln´ıho zaˇr´ızen´ı namontovat bez potˇreby lepen´ı. Rozhodl jsem se pouˇz´ıt miniaturn´ı reproduktor LSM-S20K [2] z obr. 3.8. Je to miniaturn´ı reproduktor prim´arnˇe urˇcen´y pro pouˇzit´ı v notebooc´ıch, monitorech a vestavˇen´ych zaˇr´ızen´ıch. Jeho z´akladn´ı parametry shrnuje tabulka 3.1. Je vidˇet, ˇze by mˇel poˇzadavk˚um audioportu plnˇe vyhovovat. 3.2.6 Genius MIC-01A - stoj´ankov´y mikrofon Stejnˇe jako reproduktor i mikrofon mus´ı vˇernˇe pˇren´aˇset hlas, coˇz vˇsechny mikrofony splˇnuj´ı. Pro uˇzit´ı ve stoln´ıch mikrofonech jsou vhodn´e levn´e a kvalitn´ı elektretov´e mikrofony, prin- cipi´alnˇe zaloˇzen´e na sn´ım´an´ı zmˇen napˇet´ı pˇri zmˇen´ach kapacity kondez´atoru tvoˇren´eho kmitaj´ıc´ı membr´anou. Zmˇeny jsou velmi mal´e, proto je do mikrofonn´ıch vloˇzek vestavov´an zesilovaˇc s tranzistory FET a mikrofon vyˇzaduje nap´ajen´ı (obr. 3.9). Nap´ajec´ı napˇet´ı Vs o velikosti 2,5 aˇz 10 V se pˇriv´ad´ı pˇres rezistor 2k2, mikrofon je pak od vstupu zesilovaˇce nutn´e oddˇelit kon- denz´atorem 10M. Nap´ajec´ı proud je nejv´yˇse 1 mA.
  • 32. 18 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I Obr´azek 3.8: Reproduktor LSM-S20K, pˇrevzato z [2] Typ Jednotka LSM-S20K Impedance Ω 8 Jmenovit´y v´ykon W 1 ± 15% Maxim´aln´ı v´ykon W 2 Rezonanˇcn´ı frekvence Hz 500 ± 20% Akustick´y tlak dB 83 ± 3 Frekvenˇcn´ı p´asmo Hz Fo ∼ 20000 Tabulka 3.1: Parametry reproduktoru LSM-S20K Z d˚uvodu jednoduch´e mont´aˇze jsem zvolil hotov´y stoj´ankov´y mikrofon Genius MIC-01A. Jeho frekvenˇcn´ı rozsah je 100Hz aˇz 11kHz, v´ystupn´ı impedance 2 kΩ. 3.2.7 Sluch´atka Pˇredpokl´ad´a se pouˇzit´ı bˇeˇzn´ych sluch´atek k osobn´ımu poˇc´ıtaˇci o impedanci 32 Ω, pro kter´e je pˇrizp˚usoben zesilovaˇc. Hlasitost je moˇzno upravit piny SEDIFF se SEMAX zesilovaˇce. 3.3 Ovˇeˇren´ı dostateˇcnosti nap´ajen´ı Souhrnn´y odbˇer proudu cel´eho zaˇr´ızen´ı je 56 mA (kodek) + 355 mA (v´ystupn´ı zesilovaˇc) + 8 mA (vstupn´ı zesilovaˇc) + 52 mA (stabiliz´ator) = 471 mA pˇri souˇcasn´em pln´em zat´ıˇzen´ı vˇsech komponent. Mˇela by tedy st´ale b´yt k dispozici urˇcit´a rezerva pro ovl´adac´ı prvky, nap´ajen´ı mikrofonu (dohromady jednotky mA) a neoˇcek´avan´e pˇr´ıpady. Audio port nap´ajen´y z USB je tedy pomoc´ı tˇechto komponent realizovateln´y. 3.4 Softwarov´e ˇreˇsen´ı V t´eto ˇc´asti rozeberu softwarovou obsluhu zaˇr´ızen´ı pod MS Windows XP, hlavn´ı d˚uraz bude kladen zejm´ena na raw input API.
  • 33. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 19 Obr´azek 3.9: Nap´ajen´ı elektretov´eho mikrofonu, pˇrevzato z [3] 3.4.1 Audio Jak jiˇz bylo ˇreˇceno, kodek PCM2904 je standardn´ım USB audio zaˇr´ızen´ım, takˇze jej lze pouˇz´ıt jako bˇeˇznou zvukovou kartu. Pˇri pˇripojen´ı k poˇc´ıtaˇci se automaticky rozpozn´a, doinstaluj´ı se pro nˇej ovladaˇce a nahrad´ı se j´ım dosavadn´ı aktivn´ı zvukov´e zaˇr´ızen´ı. Regulace v´ystupn´ı hla- sitosti se prov´ad´ı klasicky, tj. programem ”Ovl´ad´an´ı hlasitosti” na liˇstˇe Windows. Nastaven´ı hlasitosti mikrofonu nen´ı sofwarovˇe provediteln´e. Pˇri odpojen´ı kodeku se okamˇzitˇe obnov´ı nas- taven´ı a funkˇcnost p˚uvodn´ıho zaˇr´ızen´ı. Rozpozn´avaˇc a ˇreˇcov´y syntenz´ator Charlie VoiceXML browseru pˇri bˇeˇzn´em nastaven´ı pracuje s pr´avˇe aktivn´ım zaˇr´ızen´ım, ˇz´adn´e ´upravy ani popis dalˇs´ıch detail˚u proto nen´ı potˇrebn´y. 3.4.2 Tlaˇc´ıtka Tlaˇc´ıtka na pinech HID0 aˇz HID2 jsou ve Windows defaultnˇe mapov´ana jako ovl´ad´an´ı hlasi- tosti, viz tab. 3.2. M´ym ´ukolem tedy bylo zjistit, jak lze obsluˇzn´ym programem z´ıskat infor- mace o stavech a zmˇen´ach stav˚u tˇechto tlaˇc´ıtek. Ideou bylo odchyt´avat vlastn´ı aplikac´ı vˇsechny tlaˇc´ıtkov´e ud´alosti a reagovat na nˇe zas´ıl´an´ım odpov´ıdaj´ıch pˇr´ıkaz˚u VoiceXML prohl´ıˇzeˇci. Pr´aci na probl´emu jsem zah´ajil vyhled´av´an´ım podklad˚u v MSDN Library [4], kde jsem se na do- poruˇcen´ı vedouc´ıho pr´ace zamˇeˇril na uˇzivatelsk´y vstup podle raw input modelu. 3.4.3 Raw Input Model Raw Input Model pouˇz´ıvan´y MS Windows XP je urˇcen ke snadn´e obsluze zaˇr´ızen´ı uˇzivatelsk´eho rozhran´ı zaˇr´ızen´ı HID (Human Interface Device). Pˇredpokl´ad´a pouˇzit´ı Windows API. Proti tradiˇcn´ımu pˇr´ıstupu by mˇel m´ıt pro autora aplikac´ı tyto v´yhody [4]: • aplikace nemus´ı detekovat ani otev´ırat zaˇr´ızen´ı, • aplikace z´ısk´av´a data pˇr´ımo ze zaˇr´ızen´ı (nikoli virtu´aln´ı k´ody) a zpracov´av´a je podle sv´ych potˇreb, • aplikace m˚uˇze rozliˇsit v´ıce vstupn´ıch zdroj˚u, i kdyˇz jsou stejn´eho typu (napˇr. v´ıce r˚uzn´ych kl´avesnic), • aplikace ˇr´ıd´ı datov´y provoz v´ybˇerem dat buˇd z cel´e skupiny zaˇr´ızen´ı, nebo jen z vybran´ych typ˚u, • zaˇr´ızen´ı mohou b´yt pouˇzita okamˇzitˇe po uveden´ı na trh, nen´ı tˇreba ˇcekat na vytvoˇren´ı specifick´ych typ˚u zpr´av a jejich implementaci do operaˇcn´ıho syst´emu.
  • 34. 20 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I Pin Usage ID Scan-k´od Funkce HID0 0xE2 1 Mute HID1 0xE9 2 Volume up HID2 0xEA 4 Volume down Tabulka 3.2: Popis pin˚u HID0 aˇz HID2 kodeku PCM2904 Raw input model tedy pˇrin´aˇs´ı moˇznost implementovat zaˇr´ızen´ı zp˚usobem ”vyrob hardware - pˇripoj k PC - oˇsetˇri zpr´avy - zaˇcni prod´avat”. Tento pˇr´ıstup je pro n´as vhodn´y, proto jsem jej pouˇzil. Obsluˇzn´y program jsem psal v jazyce C++. 3.4.3.1 Registrace raw input zaˇr´ızen´ı Aby mohla aplikace pouˇz´ıvat raw input a odchyt´avat ud´alosti, mus´ı si nejprve obsluhovan´e zaˇr´ızen´ı zaregistrovat. K registraci zaˇr´ızen´ı je nutn´e vytvoˇrit struktury typu RAWINPUT- DEVICE a uloˇzit do nich pole TLC (top level collection) pro poˇzadovan´a zaˇr´ızen´ı, kter´a se skl´adaj´ı z identifik´ator˚u UsagePage a Usage tˇechto zaˇr´ızen´ı. D´ale je moˇzn´e nastavit urˇcit´e pˇr´ıznaky dwFlags, nˇekter´e z nich jsou vˇsak pˇr´ıpustn´e jen pro kl´avesnice a polohovac´ı zaˇr´ızen´ı. Pak se provede vlastn´ı registrace zavol´an´ım RegisterRawInputDevices(). Tento k´od prov´ad´ı v obsluˇzn´em programu ”vcmlclient” registraci tlaˇc´ıtkov´e ˇc´asti audio portu: RAWINPUTDEVICE Rid; // UsagePage kodeku je Consumer Page (0x0C) Rid.usUsagePage = 0x0C; // Usage kodeku je Consumer Control (0x01) Rid.usUsage = 0x01; // S t´ımto pˇr´ıznakem bude aplikace pˇrij´ımat zpr´avy i na pozad´ı Rid.dwFlags = RIDEV_INPUTSINK; // Zpr´avy bude obluhovat handler hlavn´ıho okna Rid.hwndTarget = hwndMainWindow; // Pokud se registrace nepodaˇr´ı, nahl´as´ı se chyba if (RegisterRawInputDevices(&Rid, 1, sizeof(Rid)) == FALSE) SignalizeError(); D˚uleˇzit´y je fakt, ˇze lze zaregistrovat i zaˇr´ızen´ı, kter´e nen´ı aktu´alnˇe k poˇc´ıtaˇci pˇripojeno - stane se pouze to, ˇze od nˇej nebudou pˇrich´azet ˇz´adn´e zpr´avy. Po pˇripojen´ı zaˇr´ızen´ı zaˇcne Windows Manager automaticky raw input pos´ılat. Seznam raw input zaˇr´ızen´ı aktu´alnˇe pˇripojen´ych k poˇc´ıtaˇci lze z´ıskat zavol´an´ım GetRawInput- DeviceList(). Za pouˇzit´ı hDevice z tohoto vol´an´ı m˚uˇze aplikace vol´an´ım GetRawInputDevice- Info() zjistit o dan´em zaˇr´ızen´ı detaily. 3.4.3.2 ˇCten´ı dat ze zaˇr´ızen´ı Aplikace pˇrij´ım´a raw input z kaˇzd´eho zaregistrovan´eho zaˇr´ızen´ı. Pˇri pˇrijet´ı vstupu je do fronty zpr´av aplikace pˇrid´ana zpr´ava WM INPUT a frontˇe se nastav´ı pˇr´ıznak QS RAWINPUT. Raw
  • 35. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 21 input nijak nedefinuje v´yznam dat, jejich interpretace je proto plnˇe v naˇs´ı moci. Data se mohou ˇc´ıst dvˇema zp˚usoby: buˇd standardnˇe (bez bufferov´an´ı), nebo za pouˇzit´ı bufferu. Bezbufferov´a metoda znamen´a, ˇze se ˇctou data nejv´yˇse z jedn´e RAWINPUT struktury. Ap- likace zavol´a GetMessage() pro z´ısk´an´ı WM INPUT zpr´avy. Pak zavol´a GetRawInputData() za pouˇzit´ı handleru obsaˇzen´eho ve zpr´avˇe. Bufferov´a metoda naopak ˇcte najednou cel´e pole RAWINPUT struktur vol´an´ım GetRawInputBuffer(). To b´yv´a v´yhodn´e pro zaˇr´ızen´ı, kter´a pro- dukuj´ı velk´a mnoˇzstv´ı dat. Pole se pak proch´az´ı pomoc´ı makra NEXTRAWINPUTBLOCK. Pro potˇreby audio portu je tedy postaˇcuj´ıc´ı metoda bezbufferov´a, pouˇzit´a ve vxmlclientovi tak, ˇze se prvn´ım vol´an´ım GetRawInputData() zjist´ı pouze velikost dat. Pak se vytvoˇr´ı odpov´ıdaj´ıc´ı pole, do kter´eho se pˇri druh´em vol´an´ı data uloˇz´ı. Nakonec se sjednot´ı typy ukazatel˚u, jak ukazuje k´od: // Promˇenn´a pro uloˇzen´ı velikosti UINT cbSize; GetRawInputData( // Handler z´ıskan´y ze zpr´avy WM_INPUT (HRAWINPUT) hRawInput, // Pˇr´ıznak RID_INPUT ˇcte data, RID_HEADER hlaviˇcku (UINT) RID_INPUT, // Ukazatel na ˇcten´a data, pokud je NULL, je do &cbSize uloˇzena velikost dat (LPVOID) NULL, // Velikost dat v bytech (PUINT) &cbSize, // Velikost hlaviˇcky (UINT) sizeof(RAWINPUTHEADER)); LPBYTE lpbBuffer = new BYTE[cbSize]; GetRawInputData( (HRAWINPUT) hRawInput, (UINT) RID_INPUT, (LPVOID) lpbBuffer, (PUINT) &cbSize, (UINT) sizeof(RAWINPUTHEADER)); RAWINPUT * pRawInput = (RAWINPUT *) lpbBuffer; Scan-k´od tlaˇc´ıtkov´eho rozhran´ı ze z´ısk´a ze struktury pRawInput (typu RAWINPUT) z jej´ı pod- struktury hid (typu RAWHID), kter´a m´a promˇennou bRawData (typu BYTE). Experiment´alnˇe jsem zjistil, ˇze hodnota scan-k´odu pouˇzit´eho kodeku je uloˇzena v prvn´ım bytu: USHORT usScanCode; usScanCode = pRawInput->data.hid.bRawData[1];
  • 36. 22 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I T´ım jsem z´ıskal ˇc´ıselnou hodnotu, kterou jsem mohl pˇr´ımo pouˇz´ıt pro vˇetven´ı programu. Podobnˇe se d´a z´ıskat poˇcet HID vstup˚u v bRawData i velikost kaˇzd´eho vstupu, jak je pops´ano v [4]. 3.4.4 Ovl´ad´an´ı VoiceXML browseru Jak jiˇz bylo ˇreˇceno v kapitole o VoiceXML browseru, prohl´ıˇzeˇc je prakticky nez´avisl´a aplikace a jedin´a komunikace mezi n´ım a moj´ı zkuˇsebn´ı klientskou aplikac´ı vxmlclient se m˚uˇze odehr´avat pˇres socketov´e TCP spojen´ı. Jeho ˇr´ızen´ı tedy spoˇc´ıv´a v generov´an´ı vhodn´ych XVB (XML Voice Browser) pˇr´ıkaz˚u v z´avislosti na stisc´ıch tlaˇc´ıtek audio portu, o audio kan´aly se starat nemus´ıme (obr. 3.10). Zkuˇsebn´ı vxmlclient nevyˇzaduje zpˇetnou vazbu od browseru, a nen´ı tady tˇreba pˇrij´ımat odpovˇedi, kter´e by pˇrinesly mnoh´e komplikace. Komplikac´ı by byla zejm´ena nutnost zpra- cov´avat pˇr´ıchoz´ı odpovˇedi prostˇrednictv´ım lexik´aln´ıho a syntaktick´eho analyz´atoru, coˇz by vyˇzadovalo dokonalou znalost syntaxe cel´e mnoˇziny XVB pˇr´ıkaz˚u a odpovˇed´ı, kter´a se nadto st´ale mˇen´ı. Pro v´yvojov´e a diagnostick´e ´uˇcely se lze spolehnout na konzolov´e v´ystupy browseru. Pˇri testovac´ım provozu by chybn´e ˇci nadbyteˇcn´e zasl´an´ı pˇr´ıkazu nemˇelo zp˚usobit probl´emy, neboˇt browser se chov´a jako stavov´y automat a pokud dostane neoˇcek´avan´y pˇr´ıkaz, pouze ohl´as´ı chybu a jinak na pˇr´ıkaz nereaguje. Pokraˇcuje v ˇcek´an´ı na platn´y pˇr´ıkaz. 3.4.5 Sekvence pˇr´ıkaz˚u zas´ılan´ych vxmlclientem Vxmlclient by mˇel vykon´avat tuto sekvenci operac´ı: • spustit na pozad´ı Charlie VoiceXML browser, • nav´azat TCP spojen´ı, • poslat pˇr´ıkaz ”init” pro inicializaci browseru a ”load” pro naˇcten´ı VXML dokumentu, • ˇcekat na ud´alosti od tlaˇc´ıtek, • pˇri stisku tlaˇc´ıtka zaslat posloupnost pˇr´ıkaz˚u ”cancel”, ”exec” a ”listen” s vhodn´ymi parametry, kter´a nejprve ukonˇc´ı potenci´aln´ı prov´adˇen´ı pˇredchoz´ıch formul´aˇr˚u VXML dokumentu, pak skoˇc´ı na formul´aˇr dan´y ˇc´ıslem tlaˇc´ıtka a nakonec spust´ı z´aznam hlasu, • pˇri uvolnˇen´ı tlaˇc´ıtka zaslat ”listen” s parametrem pro ukonˇcen´ı z´aznamu hlasu, • pˇred sv´ym ukonˇcen´ım zavˇr´ıt TCP spojen´ı a ukonˇcit VoiceXML browser.
  • 37. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 23 Obr´azek 3.10: Blokov´e sch´ema komunikace 3.5 Shrnut´ı n´avrhov´e ˇc´asti Souˇc´asti audiosyst´emu realizovan´eho pomoc´ı v´yˇse uveden´ych prostˇredk˚u budou: • audio port, • vxmlclient, • Charlie VoiceXML browser, • VXML dokument. Pomoc´ı nich bude zajiˇstˇena cel´a poˇzadovan´a funkˇcnost. Propojen´ı bude provedeno podle obr´azku 3.10.
  • 38. 24 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
  • 39. KAPITOLA 4. REALIZACE 25 4 Realizace 4.1 Hardwarov´a realizace Po v´ybˇeru z´akladn´ıch komponent jsem vybral souˇc´astky podle doporuˇcen´ı v datasheetech [13], [7], [6] a [9]. Pˇri zapojov´an´ı mikrofonn´ıho zesilovaˇce jsem pouˇzil ˇc´ast zapojen´ı z desky DEM- PCM2900/2902 EVM [12]. Snaˇzil jsem se pouˇz´ıvat pˇredevˇs´ım SMD souˇc´astky. Pro pˇripojen´ı k USB jsem pouˇzil konektor typu B, pro sluch´atka 3,5 mm stereo konektor se sp´ınaˇci a jako tlaˇc´ıtka typ P-B 1720A, vˇsechny tyto ˇc´asti v proveden´ı pro zap´ajen´ı do desky ploˇsn´eho spoje. Seznam souˇc´astek i jejich pˇresn´a oznaˇcen´ı naleznete v pˇr´ıloze C.1. 4.1.1 Sch´ema zapojen´ı K n´avrhu jsem pouˇzil software Eagle firmy CadSoft, verzi 4.16r2 pro Windows, v bezplatn´em proveden´ı Light Edition (nab´ız´ı plnou funkˇcnost, ale m´a omezenou velikost ploˇsn´eho spoje a podporuje pouze jednovrstv´e a dvouvrstv´e desky). V´ysledn´e sch´ema zapojen´ı je v pˇr´ıloze z rozmˇerov´ych d˚uvod˚u rozdˇeleno na dvˇe ˇc´asti, prvn´ı zachycuje kodek, stabiliz´ator a vstupn´ı ze- silovaˇc (A.1), druh´a obvod v´ystupn´ıho zesilovaˇce (B.1). Kompletn´ı sch´ema a upraven´e knihovny souˇc´astkov´ych znaˇcek a pouzder jsou na pˇriloˇzen´em CD. 4.1.2 Ploˇsn´y spoj a mechanick´e ˇreˇsen´ı Nejprve jsem musel nakreslit pouzdro zesilovaˇce, kter´e chybˇelo v knihovnˇe, a na vˇsechna pouz- dra pak namapovat sch´ematick´e znaˇcky. Ploˇsn´y spoj jsem navrhoval tak, aby se veˇsel do pˇr´ıstrojov´e krabiˇcky U-KP44 o vnˇejˇs´ıch rozmˇerech 90 x 22 x 65 mm. Realizoval jsem jej ve dvou vrstv´ach na desce o rozmˇerech 67 x 57,5 mm spoji o ˇs´ıˇrce 10 mil, neboˇt bl´ızkost ploˇsek kodeku a zesilovaˇce nikde nedovolovala ˇsirˇs´ı spoje. Deska je navrˇzena podle pokyn˚u v [16] a [15]. Ilustraˇcn´ı negativ desky je na obr. 4.1, n´avrh z Eaglu na CD. Zaˇr´ızen´ı jsem navrhoval tak, aby vˇsechny souˇc´asti mimo mikrofon a reproduktor byly pˇrip´ajeny pˇr´ımo k desce ploˇsn´eho spoje. USB konektor je vyveden na zadn´ı stranu krabiˇcky a sluch´atkov´y konektor na pˇredn´ı stranu, jejich otvory jsou proveden´e jako proˇrezy ve v´ıku (obr. 4.2). Na tlaˇc´ıtka jsou pˇrilepeny knofl´ıky soustruˇzen´e ze silonu proch´azej´ıc´ı otvory na svrchn´ı stranˇe. Cel´y ploˇsn´y spoj je pˇres distanˇcn´ı sloupky pˇripevnˇen zapuˇstˇen´ymi ˇsrouby k odn´ımateln´emu dnu krabiˇcky. Stoj´ankov´y mikrofon je pˇripevnˇen tˇrmenem a dvˇema ˇsrouby k prav´e stˇenˇe krabiˇcky, jeho osa je sklonˇen´a pˇribliˇznˇe 10 stupˇn˚u od svislice smˇerem ke stˇredu krabiˇcky. Pod´el t´eto osy je tak´e moˇzn´e mikrofon nat´aˇcet. D´ale bylo z estetick´ych d˚uvod˚u nutn´e odˇr´ıznout od krabiˇcky postrann´ı ´uchyty. Celkovou vnitˇrn´ı stavbu zachycuje obr. 4.3. Reproduktor je zevnitˇr pˇriˇsroubov´an pod dˇerovanou svrchn´ı stranu krabiˇcky. P˚uvodn´ı tˇesn´e uchycen´ı se neosvˇedˇcilo, neboˇt membr´ana kolidovala s krabiˇckou a zvuk byl tlumen´y. Po podloˇzen´ı reproduktoru distanˇcn´ımi sloupky se kvalita a hlasitost reprodukce v´yraznˇe zv´yˇsila. Veˇsker´e ˇsrouby na povrchu v´ıka jsou mosazn´e s p˚ulkulatou hlavou (obr. 4.4), protoˇze stˇena v´ıka mi pro pouˇzit´ı zapuˇstˇen´ych ˇsroub˚u nepˇriˇsla dostateˇcnˇe siln´a. 4.1.3 Nutn´e zmˇeny hardwaru proti n´avrhu Bˇehem tvorby audio portu jsem provedl nˇekolik zmˇen proti p˚uvodn´ımu n´avrhu. Tyto zmˇeny nejsou zachyceny na sch´ematu ani na n´avrhu ploˇsn´eho spoje, jsou vˇsak nutn´e pro dosaˇzen´ı funkˇcnosti zaˇr´ızen´ı.
  • 40. 26 KAPITOLA 4. REALIZACE Obr´azek 4.1: Ilustraˇcn´ı negativ desky 4.1.3.1 Otoˇcen´ı tlaˇc´ıtek Po nakoupen´ı tlaˇc´ıtek jsem zjistil, ˇze jsou napevno propojeny do dvojice vˇzdy jejich vzd´alenˇejˇs´ı v´yvody (a ne bliˇzˇs´ı, jak jsem se chybnˇe domn´ıval). Proto jsem vˇsechna tlaˇc´ıtka musel otoˇcit o 90 stupˇn˚u a mechanicky pˇrizp˚usobit jejich v´yvody, aby ˇsly zasunout do otvor˚u desky. 4.1.3.2 ´Uprava sluch´atkov´eho konektoru Pˇri n´avrhu ploˇsn´eho spoje jsem neovˇeˇril, zda jsou u n´as dostupn´e sluch´atkov´e 3,5 mm konektory s dr´atˇen´ymi v´yvody. Proto jsem musel upravit konektor s ploch´ymi v´yvody jejich sestˇriˇzen´ım na takovou velikost, aby proˇsly kruhov´ymi otvory v desce. 4.1.3.3 Diodov´y kod´er V pr˚ubˇehu softwarov´e implementace vyˇslo najevo, ˇze v MS Windows pravdˇepodobnˇe nen´ı moˇzn´e zabr´anit defaultn´ı interpretaci HID pin˚u kodeku. Experiment´alnˇe jsem zjistil, ˇze ze scan-k´od˚u 0 aˇz 7 maj´ı pouze k´ody 1, 2, 4 a 7 viditeln´y efekt (po ˇradˇe mute, volume increment, volume decrement, mute). K´ody 0, 3, 5 a 6 jsou nevyuˇzit´e. Proto jsem se rozhodl upravit zapojen´ı tak, aby se pˇri stisku kaˇzd´eho z tlaˇc´ıtek aktivovala vˇzdy odliˇsn´a dvojice HID pin˚u a pˇri uvolnˇen´ı vˇsch tlaˇc´ıtek z˚ustaly HID piny neaktivn´ı. Toho jsem dos´ahl zapojen´ım ˇsesti diod 1N4148 do jednoduch´eho kod´eru, kter´y mˇen´ı k´od ”1 ze 3” na k´od ”2 ze 3” (obr. 4.5). Vedlejˇs´ı efekt tohoto zapojen´ı je, ˇze pˇri souˇcasn´em stisku v´ıce tlaˇc´ıtek se vygeneruje k´od 7, kter´y aktivuje/deaktivuje funkci mute.
  • 41. KAPITOLA 4. REALIZACE 27 Obr´azek 4.2: V´ıko audio portu 4.1.3.4 Zv´yˇsen´ı zes´ılen´ı operaˇcn´ıho zesilovaˇce Pˇri prvn´ıch pokusech o z´aznam zvuku se uk´azalo, ˇze hlasitost nahr´av´an´ı je ponˇekud n´ızk´a. Proto jsem rezistor R14 mezi mikrofonem a vstupn´ım zesilovaˇcem nahradil propojkou a hlasitost se t´ım zv´yˇsila na pˇrijatelnou ´uroveˇn. 4.2 Softwarov´a realizace Obsluˇzn´y program jsem se rozhodl implementovat v jazyce C++ v prostˇred´ı MS Visual Studio 2008. Psal jsem jej jako okenn´ı aplikaci pro MS Windows XP za pouˇzit´ı WinAPI. Zdrojov´y k´od je na pˇriloˇzen´em CD, popis ovl´ad´an´ı v kapitole 5. Hlavn´ı tˇr´ıdou programu je WinMain, kter´a vytvoˇr´ı hlavn´ı okno, jeho tlaˇc´ıtka a nˇekolik pol´ı edit a label. Spust´ı registraci HID zaˇr´ızen´ı RegisterInput() a smyˇcku pˇrekladu a rozdˇelov´an´ı zpr´av. 4.2.1 Zpracov´an´ı zpr´av Zpr´avy zpracov´av´a procedura WindowProcedure(). Zpr´ava WM COMMAND odpov´ıd´a vˇsem ud´alostem tlaˇc´ıtek. Tlaˇc´ıtko ”Connect” zavol´a PrepareServer(), ˇc´ımˇz spust´ı VoiceXML Browser a provede pˇripojen´ı. Pˇri stisku ”Load and test” vytvoˇr´ı ze zadan´e adresy dokumentu load pˇr´ıkaz a pomoc´ı SendCommand() jej odeˇsle. Stiskem ”Exit” se na hlavn´ı okno zavol´a DestroyWin- dow(). Zpr´ava WM INPUT znamen´a, ˇze bylo stisknuto nˇekter´e z tlaˇc´ıtek. Vyvol´a spuˇstˇen´ı procedury GetHIDData(), kter´a nahraje do promˇenn´e usScanCode k´od tlaˇc´ıtek. Na to se zavol´a proce- dura ServeButtons(), kter´a zajist´ı zasl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci. Na zpr´avu WM Destroy se reaguje zavˇren´ım spojen´ı se serverem, ukonˇcen´ım serveru a koncem samotn´eho klienta. 4.2.2 Potˇrebn´e hlaviˇckov´e soubory a knihovny Vxmlclient vyˇzaduje zahrnout do sekce include hlaviˇckov´e soubory windows.h a altstr.h. Pro ´uspˇeˇsnou kompilaci bylo d´ale nutn´e pˇridat mezi parametry linkeru socketovou knihovnu
  • 42. 28 KAPITOLA 4. REALIZACE Obr´azek 4.3: Vnitˇrn´ı uspoˇr´ad´an´ı audio portu WSOCK32.lib. Aby bylo moˇzn´e spouˇstˇet Vxmlclienta i na poˇc´ıtaˇc´ıch bez instalovan´eho Visual Studia, staticky jsem pˇrilinkoval potˇrebnou knihovnu msvcr90d.dll. 4.3 Doporuˇcen´e ´upravy a rozˇs´ıˇren´ı Zmˇeny d˚uleˇzit´e pro funkci zaˇr´ızen´ı jsem zm´ınil v´yˇse. Zde se zamˇeˇr´ım na doporuˇcen´e ´upravy pro zajiˇstˇen´ı lepˇs´ı pouˇzitelnosti zaˇr´ızen´ı. 4.3.1 Hardwarov´e a mechanick´e ´upravy Jako prvn´ı ´upravu doporuˇcuji prov´est zmˇenu sch´ematu zapojen´ı a n´aslednˇe redesign desky ploˇsn´eho spoje v souladu s podsekc´ı ”Nutn´e zmˇeny hardwaru proti n´avrhu”. Z´aroveˇn by bylo vhodn´e pˇrem´ıstit tlaˇc´ıtka do vˇetˇs´ı vzd´alenosti od okraje v´ıka a zvˇetˇsit jejich pr˚umˇer. Zadavatel d´ale navrhl pˇridat LED signalizuj´ıc´ı stisk tlaˇc´ıtka a konektor pro pˇripojen´ı extern´ıho mikrofonu (tyto dvˇe zmˇeny budou realizov´any u druh´eho vzorku). Alternativnˇe by bylo moˇzn´e vestavˇet cel´y port do pouzdra ruˇcn´ıho mikrofonu a hlasov´e funkce i tlaˇc´ıtka pak efektnˇe pouˇz´ıvat napˇr. pˇri prezentac´ıch. 4.3.2 Softwarov´e rozˇs´ıˇren´ı Vhodn´ym rozˇs´ıˇren´ım vxmlclienta by bylo umoˇznˇen´ı pˇr´ıjmu zpˇetn´e vazby od prohl´ıˇzeˇce, nejl´epe pomoc´ı ”SocketIO Charlie extension”. Pak by bylo moˇzn´e zadat do VXML dokumentu jm´ena program˚u nebo maker a jejich parametr˚u, kter´e by pak vxmlclient spustil (napˇr. Skype dialer, diktafon, ovl´ad´an´ı dom´ac´ı elektroniky). Klient i server by mohly bˇeˇzet podobnˇe jako sluˇzba na pozad´ı. Zaj´ımavou ´upravou by byla i aktivace zvukov´eho zaˇr´ızen´ı v audio portu pouze pˇri stisku tlaˇc´ıtka, tj. bˇeˇznˇe by se pouˇz´ıvala
  • 43. KAPITOLA 4. REALIZACE 29 Obr´azek 4.4: Kompletn´ı audio port Obr´azek 4.5: Diodov´y kod´er intern´ı zvukov´a karta poˇc´ıtaˇce a jen pro zad´av´an´ı pˇr´ıkaz˚u by se pouˇzil port. Tyto ´upravy vˇsak sahaj´ı mimo r´amec t´eto pr´ace.
  • 44. 30 KAPITOLA 4. REALIZACE
  • 45. KAPITOLA 5. POUˇZIT´I 31 5 Pouˇzit´ı 5.1 Pouˇzit´ı audio portu 5.1.1 Pˇripojen´ı hardwaru Audio port pˇripojte USB kabelem s konektorem ”B” k poˇc´ıtaˇci a poˇckejte na enumeraci zaˇr´ızen´ı a automatick´e nahr´an´ı ovladaˇc˚u. Z reproduktoru se ozve slab´e zabzuˇcen´ı signalizuj´ıc´ı ´uspˇeˇsn´e pˇripojen´ı. Od t´eto chv´ıle je aktivn´ı zvukovou kartou pr´avˇe audio port. Ovˇeˇrte, zda je zapnut´y zvuk a spr´avnˇe nastavena hlasitost portu. Zvuk lze kdykoli vypnout nebo zapnout souˇcasn´ym stiskem dvou nebo tˇr´ı tlaˇc´ıtek portu. 5.1.2 Spuˇstˇen´ı klienta a pˇripojen´ı k serveru Spusˇtte klienta vxmlclient, do pole ”VoiceXML browser address” zadejte um´ıstˇen´ı browseru a kliknˇete na tlaˇc´ıtko ”Connect” (obr. 3.10). T´ım dojde ke spuˇstˇen´ı browseru na pozad´ı a pokusu o nav´az´an´ı TCP spojen´ı. Nepovede-li se pˇripojen´ı a pˇritom je adresa spr´avn´a, je pravdˇepodobnˇe nutn´e povolit ve firewallu pˇripojen´ı z localhosta na port 7777. Po ´uspˇeˇsn´em pˇripojen´ı se pole i tlaˇc´ıtko znepˇr´ıstupn´ı a titulek tlaˇc´ıtka se zmˇen´ı na ”Connected”. Obr´azek 5.1: Okno vxmlclienta 5.1.3 Naˇcten´ı VXML dokumentu Do pole ”VoiceXML document address” zadejte um´ıstˇen´ı dokumentu (na doprovodn´em CD je pˇripraven testovac´ı dokument organizer.vxml) a kliknˇete na tlaˇc´ıtko ”Load and test”. V pˇr´ıpadˇe ´uspˇeˇsn´eho naˇcten´ı pˇrehraje port ozn´amen´ı ”loaded” a je pˇripraven k pouˇzit´ı. 5.1.4 Zad´av´an´ı pˇr´ıkaz˚u pro organiz´er Testovac´ı dokument organizer.vxml (viz n´ıˇze) obsahuje ˇctyˇri formul´aˇre. Formul´aˇr s ID ”loaded” slouˇz´ı pouze k ovˇeˇren´ı ´uspˇeˇsn´eho nahr´an´ı. Pˇriˇrazen´ı ostatn´ıch formul´aˇr˚u ukazuje tabulka 5.1. Stisknˇete a drˇzte vybran´e tlaˇc´ıtko a vyslovte jednu z voleb. Uvolnˇete tlaˇc´ıtko a poˇckejte na odpovˇeˇd. Kdykoli je moˇzn´e zadat dalˇs´ı pˇr´ıkaz, a to i pˇred dokonˇcen´ım st´avaj´ıc´ıho. Pokud rozpozn´avaˇc nedostane srozumiteln´y pˇr´ıkaz, zaˇcne v´as opakovanˇe vyz´yvat k nov´emu zad´an´ı. V´yzvy lze
  • 46. 32 KAPITOLA 5. POUˇZIT´I Tlaˇc´ıtko Na spoji Scan-k´od Formul´aˇr Funkce Moˇzn´e volby Lev´e SW3 6 form1 Adres´aˇr Alice, Bob, Eve Stˇredn´ı SW2 3 form2 Kalend´aˇr Sunday, Monday,. . . , Saturday Prav´e SW1 5 form3 J´ızdn´ı ˇr´ad One, two, three Tabulka 5.1: Pˇriˇrazen´ı tlaˇc´ıtek audio portu dokumentu organizer.vxml ukonˇcit zad´an´ım platn´eho pˇr´ıkazu nebo pˇr´ıkazem ”exit”. Po vykon´an´ı kaˇzd´eho pˇr´ıkazu ˇcek´a prohl´ıˇzeˇc na dalˇs´ı. Po celou dobu klient zobrazuje, kter´e tlaˇc´ıtko pro volbu formul´aˇr˚u je pr´avˇe stisknuto. 5.1.5 Ukonˇcen´ı pr´ace Kliknˇete na tlaˇc´ıtko ”Exit” nebo zavˇrete okno vxmlclienta. Provede se zavˇren´ı spojen´ı s browserem, ukonˇcen´ı browseru a ukonˇcen´ı klienta. 5.2 Tvorba vlastn´ıch dokument˚u Podle n´ıˇze uveden´eho vzoru je moˇzn´e tvoˇrit vlastn´ı VXML dokumenty pouˇziteln´e pro audio port. Z´avazn´e je pouˇz´ıt pro testovac´ı formul´aˇr n´azev ”loaded” a pro pracovn´ı formul´aˇre ”form1” aˇz ”form3”. Deatiln´ı popis VXML a dalˇs´ı uk´azky k´odu naleznete v dokumentu [8]. 5.3 Testovac´ı dokument organizer.vxml <?xml version="1.0"?> <vxml version="1.0"> <!--Definice promˇenn´ych--> <var name="email" expr="’none’"/> <var name="todo" expr="’none’"/> <var name="bustime" expr="’none’"/> <!--Formul´aˇr pro otestov´an´ı ´uspˇeˇsn´eho nahr´an´ı--> <form id = "loaded"> <block> <prompt>Loaded.</prompt> </block> </form> <!--Prvn´ı ppacovn´ı formul´aˇr--> <form id = "form1"> <!--Pole rozpozn´avaj´ıc´ı slovo--> <field name="fmailinglist"> <grammar> Alice | Bob | Eve </grammar> <!--Akce po vyplnˇen´ı: pˇri splnˇen´ı podm´ınky nastav promˇennou--> <filled> <if cond="fmailinglist == ’Alice’">
  • 47. KAPITOLA 5. POUˇZIT´I 33 <assign name="email" expr="’alice@google.com’"/> <elseif cond="fmailinglist == ’Bob’"/> <assign name="email" expr="’bob@yahoo.com’"/> <elseif cond="fmailinglist == ’Eve’"/> <assign name="email" expr="’eve@post.org’"/> </if> <!--Pˇrehr´an´ı kompletn´ı odpovˇedi--> <prompt> value expr="fmailinglist"/>’s email is <value expr="email"/>. </prompt> </filled> </field> </form> ... <!--Obdobnˇe pro form2 a form3--> ... </vxml> 5.4 Re´aln´a pouˇzitelnost zaˇr´ızen´ı Audio port na testovac´ım dokumentu prok´azal, ˇze je zp˚usobil´y k nasazen´ı do testovac´ıho provozu. Ot´azkou z˚ust´av´a, jak se osvˇedˇc´ı pˇri rozpozn´av´an´ı za pouˇzit´ı rozs´ahl´ych gramatik. Podle v´ysledku testu by pak bylo vhodn´e zv´aˇzit pouˇzit´ı kvalitnˇejˇs´ıho mikrofonu a zdokonalen´ı vstupn´ıho zesilovaˇce. Usability testing by mˇel zhodnotit ergonomii zaˇr´ızen´ı a zajistit ´upravy vedouc´ı ke snadnˇejˇs´ımu pouˇzit´ı hardwaru i softwaru.
  • 48. 34 KAPITOLA 5. POUˇZIT´I
  • 49. KAPITOLA 6. Z ´AVˇER 35 6 Z´avˇer Prostudoval jsem dokumentaci jazyka VXML, VoiceXML browseru a ˇc´asti dokumentace MS Windows API (Raw Input) a specifikace USB (nap´ajen´ı a tˇr´ıdy zaˇr´ızen´ı). Vybral jsem hard- warov´e komponenty a softwarov´e prostˇredky a navrhnul strukturu audio portu. Navrhnul jsem sch´ema zapojen´ı, ploˇsn´y spoj a mechanick´e uspoˇr´ad´an´ı, kter´e jsem realizo- val. Napsal jsem aplikaci vxmlclient s uk´azkov´ym dokumentem organizer.vxml. ´Uspˇeˇsnˇe jsem provedl testov´an´ı na uk´azkov´em dokumentu. V´ysledkem pr´ace je funkˇcn´ı vzorek audio portu vˇcetnˇe obsluˇzn´e aplikace vxmlclient. Port je pouˇziteln´y pro z´aznam i reprodukci hlasu i pro tlaˇc´ıtkov´e ovl´ad´an´ı klienta. Souˇc´ast´ı je uk´azkov´y VXML dokument pro demonstraci moˇznost´ı portu. Hlavn´ım pˇr´ınosem zaˇr´ızen´ı je moˇznost uˇzivatelsky definovat libovoln´e reakce na stisk tlaˇc´ıtek, coˇz dosavadn´ı jedno´uˇcelov´a zvukov´a zaˇr´ızen´ı nenab´ızej´ı. To pˇrin´aˇs´ı univerzalitu pouˇzit´ı a moˇznost nasazen´ı nejen jako stoln´ı zaˇr´ızen´ı, ale i jako souˇc´ast vestavˇen´ych zaˇr´ızen´ı, hlasov´ych termin´al˚u apod. Z uk´azkov´eho vxmlclienta je moˇzn´e vych´azet pˇri n´avrhu sofistikovanˇejˇs´ıho uˇzivatelsk´eho rozhran´ı. Douf´am, ˇze zaˇr´ızen´ı bude dobˇre slouˇzit.
  • 50. 36 KAPITOLA 6. Z ´AVˇER
  • 51. KAPITOLA 7. SEZNAM LITERATURY 37 7 Seznam literatury [1] HID Related Specifications. USB Implementers Forum, Inc. www.usb.org/developers/hidpage/. [2] LSM-S20K - informace o produktu. Conrad Electronic GmbH. www.conrad.cz/miniaturni-reproduktor-8-ohm-100-mw+dp47825. [3] MCE102 - datasheet. Vanson Electronics Inc. www.gme.cz/_dokumentace/dokumenty/643/643-022/dsh.643-022.1.pdf. [4] MSDN Library. Microsoft Corporation. msdn.microsoft.com/cs-cz/library/default(en-us).aspx. [5] Universal Serial Bus Device Class Definition for Audio Devices. USB Implementers Forum, Inc., march 1998. www.usb.org/developers/docs/usb_20_040908.zip. [6] OPA 353 - High-Speed, Single-Supply, Rail-to-Rail Operational Amplifiers MicroAmplifierTM Series. Texas Instruments Incorporated, march 1999. focus.ti.com/lit/ds/symlink/opa353.pdf. [7] TPA6011A4 - 3-W Stereo Audio Power Amplifier with Advanced DC Volume Control. Texas Instruments Incorporated, february 2004. focus.ti.com/lit/ds/symlink/tpa6011a4.pdf. [8] Voice Extensible Markup Language (VoiceXML) Version 2.0. W3C Recommendation, march 2004. www.w3.org/TR/voicexml20/. [9] REG103 - DMOS 500mA Low-Dropout Regulator. Texas Instruments Incorporated, september 2005. focus.ti.com/lit/ds/symlink/reg103-a.pdf. [10] XVB - XML Voice Browser Proposal 0.3. IBM Voice Technologies and Systems, Prague, july 2005. [11] Charlie VoiceXML browser documentation and examples. IBM Voice Technologies and Systems, Prague, september 2006. [12] DEM-PCM2900/2902 EVM - User’s Guide. Texas Instruments Incorporated, march 2007. focus.ti.com/lit/ug/sleu024a/sleu024a.pdf. [13] PCM2904/PCM2906 - Stereo Audio CODEC with USB Interface, Single-Ended Analog Input/Output and S/PDIF. Texas Instruments Incorporated, november 2007. focus.ti.com/lit/ds/symlink/pcm2904.pdf.
  • 52. 38 KAPITOLA 7. SEZNAM LITERATURY [14] Universal Serial Bus Revision 2.0 specification. USB Implementers Forum, Inc., april 2008. www.usb.org/developers/docs/usb_20_040908.zip. [15] M. Skrbek. Jak vyrobit ploˇsn´y spoj. Web katedry poˇc´ıtaˇc˚u. service.felk.cvut.cz/lab/tistaky/index.html. [16] V. Z´ahlava. N´avrh a konstrukce desek ploˇsn´ych spoj˚u. ˇCesk´a technika - nakladatelstv´ı ˇCVUT, 1st edition, 2005.
  • 53. P ˇR´ILOHA A. SCH´EMA ZAPOJEN´I - ˇC ´AST KODEKU 39 A Sch´ema zapojen´ı - ˇc´ast kodeku Obr´azek A.1: Sch´ema zapojen´ı - ˇc´ast kodeku
  • 54. 40 P ˇR´ILOHA B. SCH´EMA ZAPOJEN´I - ˇC ´AST ZESILOVA ˇCE B Sch´ema zapojen´ı - ˇc´ast zesilovaˇce Obr´azek B.1: Sch´ema zapojen´ı - ˇc´ast zesilovaˇce
  • 55. P ˇR´ILOHA C. SEZNAM SOU ˇC ´ASTEK 41 C Seznam souˇc´astek Poˇcet Hodnota Pouzdro Oznaˇcen´ı 1 1M R1206 R8 2 1k R1206 R16, R17 4 1k5 R1206 R1, R2, R3, R7 1 2R2 R1206 R6 1 2k2 R1206 R15 1 3k9 R1206 R12 1 12k R1206 R13 1 13k R1206 R10 2 22R R1206 R4, R5 1 30k R1206 R9 1 100R R1206 R11 2 100k R1206 R18, R19 3 100k 4312-SMD100K R21, R22, R23 - trimr 1 100M E100M/16V C27 2 330M E330M/16V C23, C25 1 330p CK1206 C16 1 1800p CK1206 C17 2 M1 CK1206 C14, C22 9 1M CK1206 C3, C4, C7, C8, C13, C19, C20, C21, C24 8 10M CK1206 C1, C2, C9, C10, C11, C12, C15, C18 2 18p CK1206 C5, C6 1 12MHz QM 12.000MHZ Q1 - krystalov´y rezon´ator 6 1N4148 D1, D2, D3, D4, D5, D6 1 PCM2904DB kodek 1 TPA6011A4PWP v´ykonov´y zesilovaˇc 1 OPA353UA operaˇcn´ı zesilovaˇc 1 REG103UA-A stabiliz´ator napˇet´ı 3 P-B1720A tlaˇc´ıtka 3 SCJ-0354-5PU 3,5 mm stereo konektor se sp´ınaˇci 1 USB1X90B PCB USB konektor 1 CAB-USB-AB2 USB kabel A/B 2m 1 U-KP44 krabiˇcka 1 LSM-S20K reproduktor 1 Genius MIC-01A mikrofon 1 Audioport deska ploˇsn´eho spoje Tabulka C.1: Seznam souˇc´astek
  • 56. 42 P ˇR´ILOHA D. OBSAH CD D Obsah CD Obr´azek D.1: Obsah CD Datasheets Datov´e listy integrovan´ych obvod˚u, v´yvojov´e desky a reproduktoru Eagle/lbr Upraven´e knihovny komponent Eaglu Eagle/projects/audio port Podklady sch´ematu a ploˇsn´eho spoje audio portu Eagle/projects/diode coder Podklady doplˇnkov´eho sch´ematu diodov´eho kod´eru Images Fotografie audio portu Src/Organizer Zdrojov´y k´od testovac´ıho VoiceXML dokumentu Src/Vxmlclient Zdrojov´y k´od vxmlclienta a soubory projektu Visual Studia 2008 Src/Vxmlclient/Debug Zkompilovan´y vxmlclient a soubory Visual Studia 2008 pro kompilaci Text Tento dokument ve form´atu PDF Text/src LaTeX Obr´azky a podklady pro sazbu tohoto dokumentu v LaTeXu USB Vybran´e ˇc´asti specifikace USB souvisej´ıc´ı s audio portem