eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Syntéza rytmické recitace Jarolímek Tomá²
Vedoucí práce:
Ing. Adam Sporka, Ph.D.
Studijní program: Otev°ená informatika (bakalá°ský) Obor: Softwarové systémy 24. kv¥tna 2012
iv
v
Pod¥kování Tímto bych rád pod¥koval p°edev²ím vedoucímu bakalá°ské práce Ing. Adamu Sporkovi, Ph.D., za v²echny cenné rady, vst°ícnost, ochotu a trp¥livost. Dále bych rád pod¥koval mé rodin¥, p°átel·m a kamarád·m za podporu b¥hem psaní této práce.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
V Praze dne 25. 5. 2012
.............................................................
viii
Abstract
The aim of this bachelors thesis was to create a program for the synthesis of rhytmic recitation. Program of this type was not yet implemented. This program could be widely used for composing music and also for other domains.
Abstrakt
Cílem této bakalá°ské práce bylo vytvo°it program pro syntézu rytmické recitace. Doposud ºádný program tohoto typu nebyl naimplementován. Takovýto program by mohl mít ²iroké vyuºití nejen p°i komponování hudby, ale také v jiných oblastech.
ix
x
Obsah
1 Úvod
1
1.1
Cíle práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Výsledek práce
1.3
Existující podobné aplikace
1.4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3.1
Vocaloid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3.2
VirSyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3.3
Vocoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Text to speech
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Hudba a zvuk
3
5
2.1
P°ehled ºánr· . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Elektronická hudba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
. . . . . . . . . . . . .
6
2.3
Hip hop
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4
Zvuk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.5
P°ehled metod syntézy zvuku . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.5.1
Aditivní (sou£tová) syntéza
12
2.5.2
Rozdílová syntéza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.5.3
Wavetable (tabulková) syntéza
13
2.5.4
Vektorová syntéza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.5.5
Frekven£ní modulace . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.5.6
Nelineární tvarování
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.5.7
Fázové zkreslení
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.5.8
P°ímé zadávání £asového pr·b¥hu . . . . . . . . . . . . . . . . . . . . .
14
2.5.9
Granula£ní syntéza . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Historie elektronické hudby a její p°edstavitelé
. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
2.5.10 Samplovací metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.5.11 Virtuální akustická syntéza
15
. . . . . . . . . . . . . . . . . . . . . . . .
3 Rozbor problému 3.1
17
Kompozice hudby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.1.1
Rytmus - basová, bicí stopa . . . . . . . . . . . . . . . . . . . . . . . .
18
3.1.2
Doprovodná melodie . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.1.3
Hlavní melodie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.1.4
Dopl¬ková melodie . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.1.5
Vokály (stopa zp¥vu) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
xi
xii
OBSAH
3.2
3.3
3.4
Text to speech
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.2.1
Textová analýza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2.2
P°eklad textu na fonémy . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2.3
Tvorba prosodie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.2.4
Syntéza
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.2.5
Microsoft Speech API (SAPI) . . . . . . . . . . . . . . . . . . . . . . .
22
Midi
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.3.1
Header Chunk
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.3.2
Track Chunk
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.3.3
MIDI Events
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.3.4
Variable length (Prom¥nná hodnota délka) . . . . . . . . . . . . . . . .
Vyuºití v praxi
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Návrh °e²ení
27 29
31
4.1
Aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2
Funk£nost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
5 Implementace, realizace 5.1
37
Volba technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.1.1
.Net Framework, C# . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.1.2
Microsoft Speech API (SAPI) . . . . . . . . . . . . . . . . . . . . . . .
38
5.1.3
PRAAT (Praatcon)
38
5.1.4
Microsoft Visual Studio 2010
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5.2
Popis t°íd
5.3
Popis hlavních £ástí implementace kódu 5.3.1 5.3.2
5.3.3
5.3.4
. . . . . . . . . . . . . . . . . . . . .
38
Phoneme.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5.3.1.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
isVowel()
Word.cs
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.3.2.1
rewriteOnRules() . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.3.2.2
getWordInSyllables()
39
5.3.2.3
divideIntoSyllables() . . . . . . . . . . . . . . . . . . . . . . .
39
5.3.2.4
countOfSyllables() . . . . . . . . . . . . . . . . . . . . . . . .
39
TextToSpeech.cs
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.3.1
Phoneme()
5.3.3.2
Word()
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.3.3
End() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.3.4
SayText() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.3.5
SaveWAVle()
. . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.3.6
addWordInList() . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.3.3.7
ShowSyllablesCounts()
. . . . . . . . . . . . . . . . . . . . .
40
5.3.3.8
ProcessTTS() . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
PraatScript.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.3.4.1
getPhonemeStartTime() . . . . . . . . . . . . . . . . . . . . .
41
5.3.4.2
getPhonemeDuration()
41
5.3.4.3
createScript() . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.3.4.4
createScriptPoints()
41
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
xiii
OBSAH
5.3.5
5.3.6
5.3.4.5
createDurationTier() . . . . . . . . . . . . . . . . . . . . . . .
41
5.3.4.6
createDurationTierWords() . . . . . . . . . . . . . . . . . . .
42
5.3.4.7
processScripts()
. . . . . . . . . . . . . . . . . . . . . . . . .
43
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
FormMain.cs 5.3.5.1
Form1_Load(), newToolStripMenuItem_Click()
. . . . . . .
5.3.5.2
Form1_FormClosed(), exitToolStripMenuItem_Click()
5.3.5.3
btnProcess_Click(), showSyllablesCountsToolStripMenuItem_Click() 43
5.3.5.4
btnLoadMidi_Click()
. . . . . . . . . . . . . . . . . . . . . .
5.3.5.5
btnLoadText_Click()
. . . . . . . . . . . . . . . . . . . . . .
43
5.3.5.6
btnTempPath_Click() . . . . . . . . . . . . . . . . . . . . . .
43
5.3.5.7
btnPraatConPath_Click()
5.3.5.8
txtTempFiles_TextChanged()
. . . . . . . . . . . . . . . . .
44
5.3.5.9
txtSpeakText_Enter() . . . . . . . . . . . . . . . . . . . . . .
44
5.3.5.10
checkWithPauses_CheckedChanged()
5.3.5.11
restartFields()
5.3.5.12
checkPraatcon()
5.3.5.13 5.3.5.14
trackBar1_Scroll() . . . . . . . . . . . . . . . . . . . . . . . .
. . .
. . . . . . . . . . . . . . . . . . .
43 43 43
44
. . . . . . . . . . . . .
44
. . . . . . . . . . . . . . . . . . . . . . . . . .
44
. . . . . . . . . . . . . . . . . . . . . . . . .
44
updateTextToSpeech() . . . . . . . . . . . . . . . . . . . . . .
44
MidiFile.cs
44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3.6.1
ReadUint16BE(), ReadUint32BE(), Read3ByteBE() . . . . .
44
5.3.6.2
ReadVariableLength() . . . . . . . . . . . . . . . . . . . . . .
45
5.3.6.3
SortEvents()
45
5.3.6.4
CountEvents()
. . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.3.6.5
compare() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.3.6.6
MidiFile() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
. . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Testování
47
6.1
Cílová skupina
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
6.2
Screener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
6.3
Pre-test dotazník . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.4
Úlohy testu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.5
Od·vodn¥ní úloh testu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.6
Post-test dotazník
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
6.7
Pr·b¥h testování
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.7.1
6.7.2
6.7.3
Participant 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.7.1.1
Analýza uºivatele, Pre-test dotazník . . . . . . . . . . . . . .
49
6.7.1.2
Pr·b¥h testu . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.7.1.3
Post-test dotazník
Participant 2
. . . . . . . . . . . . . . . . . . . . . . . .
49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6.7.2.1
Analýza uºivatele, Pre-test dotazník . . . . . . . . . . . . . .
49
6.7.2.2
Pr·b¥h testu . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
6.7.2.3
Post-test dotazník
. . . . . . . . . . . . . . . . . . . . . . . .
50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
6.7.3.1
Participant 3
Analýza uºivatele, Pre-test dotazník . . . . . . . . . . . . . .
50
6.7.3.2
Pr·b¥h testu . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
6.7.3.3
Post-test dotazník
50
. . . . . . . . . . . . . . . . . . . . . . . .
xiv
OBSAH
6.8
Nálezy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nález - zobrazení po£tu slov/slabik . . . . . . . . . . . . . . . . . . . .
51
6.8.2
Nález - intalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.8.3
Nález - názvy akcí, popisk·
. . . . . . . . . . . . . . . . . . . . . . . .
52
6.8.4
Nález - nahrání souboru MIDI . . . . . . . . . . . . . . . . . . . . . . .
52
6.8.5
Nález - stejná tla£ítka
52
. . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Záv¥r 7.1
7.2
51
6.8.1
55
Problémy, Nedostatky, °e²ení problém· . . . . . . . . . . . . . . . . . . . . . .
56
7.1.1
Kvalita hlas· TTS systém·
. . . . . . . . . . . . . . . . . . . . . . . .
56
7.1.2
Zkratky v SAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
7.1.3
Odchytávání událostí systému TTS . . . . . . . . . . . . . . . . . . . .
56
7.1.4
VST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
7.1.5
Praatcon
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Budoucí vývoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
7.2.1
Multiplatformní aplikace . . . . . . . . . . . . . . . . . . . . . . . . . .
58
7.2.2
VST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
7.2.3
Editor MIDI
7.2.4
Optimalizace a vylep²ení kódu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58 58
Pouºitá literatura
59
Monograe
59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internetové zdroje
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
A Seznam pouºitých zkratek
61
B Instala£ní a uºivatelská p°íru£ka
63
B.1
Popis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
B.2
Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
B.3
Spu²t¥ní a nastavení pot°ebných sloºek . . . . . . . . . . . . . . . . . . . . . .
63
B.4
Práce s programem, popis programu
. . . . . . . . . . . . . . . . . . . . . . .
64
B.4.1
Nastavení cest
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
B.4.2
Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
B.4.3
Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
B.4.4
Nastavení zpracování . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
B.4.5
Zpracování
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
B.4.6
Nápov¥da . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
C Ukázka výstupních dat
67
C.1
Script tempPraatScript.praat
. . . . . . . . . . . . . . . . . . . . . . . . . . .
67
C.2
Script durationTier.tmp
C.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
Duration tier k°ivka vygenerována programem . . . . . . . . . . . . . . . . . .
69
D Obsah p°iloºeného CD
71
Seznam obrázk·
1.1
Jak pracuje TTS (zdroj: www.wikipedia.org)
. . . . . . . . . . . . . . . . . . . .
2.1
P°edstava not (zpráv MIDI) ur£ující rytmiku textu pro rap (úryvek textu je pouºit ze skladby Vodopády od skupiny Chaozz) . . . . . . .
9
2.2
istý tón - sinusový signál . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3
sin(x)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.4
sin(2x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.5
sin((1/2)x)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.6
£ervená: sin((1/2)x), zelená: sin(2x), modrá: sin(x)
11
2.7
sin(x)+sin(2x)+sin((1/2)x)
. . . . . . . . . . . . . . .
Sloºený pr·b¥h sloºený z 3 £istých tón· r·zných frekvencí 2.8
. . . . . . . . . . .
11
. . . . .
14
Ukázka nelineárního tvarován (zdroj: www.sound.eti.pg.gda.pl/student/eim/synteza/jaroslaw/index_ang.htm)
3.1
P°edstava workow, kdy kaºdý track p°edstavuje sv·j daný krok workow, ty jsou vytvá°eny postupn¥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
18
Diagram znázor¬ující SAPI objekty, jejich interface a propojení (zdroj: msdn.microsoft.com/en-us/library/ee431802%28v=vs.85%29.aspx)
3.3
4
. . . . . . . .
23
Tabulka znázor¬ující ID foném·, p°edstavované symboly a p°íklady, kde se vyskytují (zdroj: msdn.microsoft.com/en-us/library/ee431802%28v=vs.85%29.aspx)
3.4
. . . . . . . .
24
Vlevo jednotlivé adresy, uprost°ed data MIDI v binárním reºimu, vpravo data MIDI v hex reºimu (zelená header chunk, ºlutá track chunk, modrá MIDI events) . . . . . .
25
4.1
Na£tení objektu a postupné vytvo°ení duration tier v programu Praat
. . . .
33
4.2
K°ivka duration tier
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.3
K°ivka duration tier
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
5.1
Struktura programu, propojení t°íd, ukládání a volání soubor·
. . . . . . . .
37
6.1
Nález £íslo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2
Nález £íslo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
6.3
Nález £íslo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
6.4
Nález £íslo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
B.1
Sloºky, které je t°eba nastavit v programu SynthesisOfRhytmicRecitation
64
xv
. .
xvi
SEZNAM OBRÁZK
B.2
Program SynthesisOfRhytmicRecitation
. . . . . . . . . . . . . . . . . . . . .
65
B.3
Program SynthesisOfRhytmicRecitation
. . . . . . . . . . . . . . . . . . . . .
66
C.1
Tvar duration k°ivky vygenerované programem SynthesisOfRhytmicRecitation
69
Seznam tabulek
2.1
Jednotlivé zastoupení harmonických sloºek u reálných nástroj· (zdroj: www.elektronicka-hudba.telotone.cz/clanky/metody-zvukove-syntezy)
. . . . . . .
13
3.1
Tabulka znázor¬ující MIDI Channel Events
. . . . . . . . . . . . . . . . . . .
27
3.2
Tabulka znázor¬ující zprávu MIDI bez vyuºití VLV . . . . . . . . . . . . . . .
27
3.3
Tabulka znázor¬ující zprávu MIDI s vyuºitím VLV v hexadecimální soustav¥
28
3.4
Tabulka znázor¬ující zprávu MIDI s vyuºitím VLV v desítkové soustav¥ (delta time) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xvii
28
xviii
SEZNAM TABULEK
Kapitola 1 Úvod
V úvodu bych rád zmínil zám¥r této práce a upozornil na problémy, které by mohly nastat:
•
Vzhledem k tomu, ºe se cítím být spí²e programátorem neº £lov¥kem teoreticky zaloºeným, snaºil jsem se o správnou, srozumitelnou a jednoduchou implementaci programu a popis r·zných problém·. Domnívám se, ºe je efektivn¥j²í jednodu²²í, (a£koliv ne t°eba ideální) °e²ení, jelikoº v p°ípad¥ pot°eby je jednodu²²í °e²ení podstatn¥ snaz²í pochopit a poupravit, neº to, které je teoreticky naprosto správné, av²ak málokomu srozumitelné. Tato práce tak není re²er²í, kdy bych hledal více °e²ení a dosaºení stejného výsledku, nýbrº jsem se snaºil najít, dle mého názoru, nejjednodu²²í a zárove¬ nejefektivn¥j²í zp·sob naimplementování.
•
Samotné téma syntézy rytmické recitace úzce spjaté s pokusem realizovat systém schopný recitovat (zpívat) zadaný text je zna£n¥ komplikované, ba moºná i tém¥° ne°e²itelné. lov¥k p°i zp¥vu, recitaci, atp. do svého projevu zahrnuje nap°íklad emoce, coº po£íta£e prozatím neumí a moºná um¥t nikdy nebudou. Kdyº £lov¥k zpívá, recituje, atp. dokáºe ovládat své hlasivky (vytvá°et vibrato) tak, aby dosáhnul poºadovaného výsledku. V oblasti po£íta£· v²ak nemáme takové moºnosti a celé toto téma je zna£n¥ komplikované. ádné funkce, rovnice, algoritmy nám ur£ité lidské orgány nahradit (prozatím) nemohou.
•
V textu se £asto vyskytují cizí názvy, které by v p°ekladu do £eského jazyka nedávaly smysl nebo se jejich p°eklady nepouºívají. Tyto výrazy v textu formátují kurzívou, nej£ast¥ji se pak jedná o technické výrazy, názvy, atp. Názvy rem, jména osob, softwaru a ostatní, dle mého, d·leºité údaje formátuji nej£ast¥ji
tu£ným písmem.
1.1 Cíle práce Cílem této práce je realizovat systém, který bude schopen zapsaný, pop°ípad¥ importovaný, text uºivatelem programu recitovat - rapovat (zpívat). Pro hudebního producenta, je mnohdy zna£n¥ sloºité najít n¥koho, kdo by s ním vytvo°il n¥jakou píse¬, £i skladbu. A tak by mu mohl pomoci po£íta£. Hlavním cílem je vytvo°it nástroj pro specické hudební styly a prototypovací nástroj, který by um¥l ukázat, jak by skladba zn¥la v p°ípad¥ nahrání.
1
2
KAPITOLA 1.
ÚVOD
Toto téma je v²ak velmi obsáhlé a zna£n¥ p°esahuje moºnosti bakalá°ské práce, £asové moºnosti i v¥domosti jedné osoby. Jelikoº pro správné porozum¥ní by bylo zapot°ebí znát problematiku jazyka (jak se vytvá°í slova, jak jsou slova vyslovována, atp.), anatomie £lov¥ka (co se práv¥ d¥je s hlasivkami, kdyº £lov¥k pouºije efekt vibrato, atp.), skládání hudby (jaké nástroje se nej£ast¥ji pouºívají, jak se pouºívají, atp.) a mnoho dal²ího. Proto se zam¥°uji na jednoduché a funk£ní °e²ení, a£koliv p°edpokládám, ºe nebude nejlep²í, ov²em £asem se m·ºe vyvíjet a zlep²ovat. Zam¥°ím se tedy p°edev²ím na:
Microsoft Windows OS.
•
Text-to-speech (text na °e£) na platform¥
•
P°e£tení hudebního zdroje (souboru MIDI)
•
Rozpoznání slabik ve slov¥
•
Modikace zvukového souboru dle ur£itých parametr· (souboru MIDI)
1.2 Výsledek práce Aplikace je psána v programovacím jazyce C#. V dne²ní dob¥ lze pomocí .Net Framework spustit aplikace psané v tomto jazyce tém¥° na jakémkoliv stroji, s jakýmkoliv opera£ním systémem. Kv·li vyuºití SAPI (Speech API) knihovnám je tak £i tak aplikace pouºitelná
Microsoft Windows. Vzhledem k tomu, jak je kaºdá verze systému Microsoft Windows naimplementována
pouze na opera£ním systému
(a vzhledem ke zm¥nám, ke kterým do²lo ve verzích XP, Vista a Win7 v p°evodu textu na °e£) je aplikace funk£ní na systému Win7, na ostatních OS je moºné, ºe nebude fungovat. Je to klasická okenní aplikace, která:
•
Na£te text z textového souboru (pop°. je moºnost napsat text p°ímo v programu)
•
Na£te zvukový MIDI soubor
•
Dle rozhodnutí uºivatele, zdali chce asociovat zvukový vstup se slovy nebo se slabikami slov, vytvo°í skript do programu
PRAAT
•
P°e£te zadaný text a uloºí ho do zvukového .wav souboru
•
Spole£n¥ se skriptem (kódem) p°edá aplikace tento .wav soubor do programu
• PRAAT
PRAAT
modikuje vstupní .wav soubor za pomoci daného skriptu a uloºí výstup
op¥t jako .wav soubor pro pozd¥j²í pouºití
1.3 Existující podobné aplikace
1.3.1 Vocaloid Aplikace
Vocaloid
1 zp¥vu, vyvíjený spole£ností
je syntezátor
Yamaha Corporation.
Tato aplikace pro textový a hudební vstup vytvo°í zvukový výstup, kde je text p°ezpívaný 1
elektronický hudební nástroj
1.4.
3
TEXT TO SPEECH
dle zadaných parametr·. Aplikace je výjime£ná hlavn¥ tím, ºe na dané pasáºe dokáºe implementovat efekty jako je nap°íklad vibrato a výsledek je snadno zam¥nitelný s opravdovým zp¥vem ºivého £lov¥ka. Aplikace Vocaloid je vyvíjena od roku 2000 a v dne²ní dob¥ je vydána verze Vocaloid 3. Verze 2 byla vydána také pro iPhone a iPad od spole£nosti
Apple.
Tomuto programu prop·j£ilo sv·j hlas n¥kolik známých zp¥vák·, zp¥va£ek, herc· a here£ek. Jako je nap°íklad Hitoshi Ueki. Program je £asto pouºíván spole£n¥ s programem MikuMikuDance, kde jsou zp¥vák·m vytvo°eny anime charaktery. MikuMikuDance je 3D studio vhodné pro vytvo°ení animací, render· a póz tance ve stylu manga a anime, oblíbených hlavn¥ u Asiat·. Proto má také Vocaloid hlavní podporu v japonských hlasech.
1.3.2 VirSyn Dal²ím podobným programem, o kterém v²ak není mnoho informací a není tak oblíbený jako Vocaloid, je program
VirSyn. Výsledné výstupy tohoto programu jsou v²ak mén¥
kvalitní.
1.3.3 Vocoder Vocodery jsou systémy transformující dva zvukové vstupy na jeden. Jeden z nich je zvuk p°edstavující hlas a druhý melodii. Na obou t¥chto vstupech je provedena frekven£ní analýza a frekvence melodického vstupu se ztlumí, pop°ípad¥ zvý²í, podle vstupu p°edstavující hlas. Amplituda jednotlivých frekven£ních sloºek tedy modikuje hlasitost a tvar v melodickém signálu. asto jsou realizovány jako fyzický hardware i virtuáln¥, tedy program, plugin £i systém, pracující stejn¥ jako tento fyzický hardware. Tyto systémy jsou £asto pouºívány v elektrické hudb¥.
1.4 Text to speech Text-to-speech (TTS) je vyvíjeno zhruba od roku 1980 a v dne²ní dob¥ je podporován tém¥° v²emi opera£ními systémy.
Microsoft Windows, Mac OS, Unix/Linux je povaºován za nejkvasystému Mac OS, jehoº výstup je nejpodobn¥j²í lidské °e£i. V sou£asné dob¥
Mezi systémy litn¥j²í TTS
se zna£n¥ vylep²ila i sluºba TTS na systémech Linux, u systému Windows v²ak TTS není tak kvalitní z d·vodu nekvalitních pouºívaných hlas·. U tohoto systému se na vývoj TTS nejspí²e pozapomíná. Ve verzi XP byly p°ístupné 3hlasy v základní instalaci tohoto systému. U systému Win7 je v²ak p°ístupný pouze jeden jediný hlas (Microsoft Anna), jehoº kvalita se nijak neli²í od TTS, které byly vyuºity u systému Win XP. A£koliv je moºnost hlasy doinstalovat, jsou £asto drahé a i tak se potýkáme s dal²ími problémy, jako jsou práva t¥chto hlas·, kde mohou a nemohou být pouºita. V aplikaci je tedy vyuºit jen základním hlas Microsoft Anna, jelikoº ani zp¥tná kompatibilita s hlasy z Win XP nebyla zachována. Kompatibilita s TTS ze systém·
Mac OS a Linux prozatím není implementována.
4
KAPITOLA 1.
ÚVOD
Kvalita kaºdého syntezátoru °e£i je posuzována dle podobnosti výstupu s lidskou °e£í. e£ je £asto vytvá°ena spojováním úsek· nahrané °e£i, které jsou uloºeny v databázi. Takovéto databáze mohou obsahovat fóny
2 a difóny 3 nebo celá slova. V p°ípad¥ fón· pak máme
mén¥ kvalitní výstup neº u difón·. Program pak funguje nap°íklad tak, ºe napsaný text dle ur£itých pravidel p°evede na fonémy a tyto fonémy jsou vybrány z databáze a nahrány do programu a mohou být dále zpracovávány (nap°. p°e£teny). Ideálním °e²ením by poté bylo mít v databázi zahrnuty v²echny existující výrazy, tvary a pády slov a následn¥ je z databáze vybírat. Takové °e²ení je ov²em tém¥° nemoºné zrealizovat a tak se vychází z ur£itých pravidel (nap°. fonetická transkripce), kdy je napsané rozd¥leno, p°evedeno dle pravidel a poté vytvo°eno z databáze tak, jak by jej £lov¥k °ekl. 1.1
Obrázek 1.1: Jak pracuje TTS (zdroj: www.wikipedia.org) Text je tedy zanalyzován a p°eveden do foném· a poté vytvo°en tvar slova, ze kterého vzniká °e£ (podrobn¥j²í popis problému viz kapitola 3.2). A´ je jiº kvalita TTS jakákoliv, s programy pro syntézu °e£i se setkáváme tém¥° kaºdý den. TTS je povaºováno za uºite£ný nástroj i pro ur£itá onemocn¥ní £i handicapy. Nap°íklad pro £lov¥ka, který ztratil £i nikdy nem¥l zrak a nem·ºe si tedy p°e£íst nap°. internet, sms, atp. Lidé se zrakovými vadami pop°ípad¥ poruchami °e£i nebo £tení mohou tyto syntezátory pouºít a mohou jim zna£n¥ uleh£it ºivot.
2
Fón je nejmen²í jednotka zvukové stránky °e£i, tedy hláska
3
Difón je obdoba fónu. Jeho segment v²ak za£íná a kon£í ve dvou sousedních fónech (uprost°ed). Pomocí
difón· je zaznamenána výslovnost sousedících hlásek
Kapitola 2 Hudba a zvuk
2.1 P°ehled ºánr· Jelikoº soupis v²ech hudebních ºánr· by zabral n¥kolik stran a tato práce není zam¥°ena na v¥t²inu z nich, následující seznam obsahuje ºánry, které jsou n¥jakým zp·sobem propojené £i blízké electro hudb¥ a nebo hip-hopu.
•
Hip Hop Hlavní d·raz na rytmiku skladby, do hudby recitované pasáºe tzv. raperem.
•
RnB Spojení hudebního stylu Hip hop a populární hudby, £asto rapované i zpívané pasáºe.
•
Disco D·leºitou £ástí je melodi£nost, zp¥v je pouze jakési dopln¥ní hlavní hudební melodie.
•
Funk P·vodn¥ afroamerický styl hudby, který zna£n¥ ovliv¬oval podobu hip hopu, jedním z nejznám¥j²ích p°edstavitel· je James Brown.
•
Trip Hop Pon¥kud více instrumentální styl neº hip hop, recitované pasáºe místo rapování.
•
Pop Populární hudba je výrazná melodie zp¥vu dopln¥ná moderní melodií, £asto bývá ovlivn¥na hip hopem a je úzce spjata s RnB
•
Elektronická hudba
Dance Drum'n'bass Electro House Jungle
5
6
KAPITOLA 2.
•
HUDBA A ZVUK
Techno Trance
Rock
Alternative Rock Depresivní alternativa rockové muziky, velmi £asto pouºívá nástroj·, jako jsou syntezátory
Rap Rock
2.2 Elektronická hudba Elektronická hudba vznikla v 70. letech 20. století. Tento styl vd¥£í za svoji existenci p°eváºn¥ po£íta£·m a r·zným elektronickým p°ístroj·m (syntezátor·m, sampler·m, atp.), proto nese také tento název. Elektronická hudba nebo alespo¬ její prvky nás také provázejí tém¥° ve v²ech jiných ºánrech. Hlavním cílem elektronické hudby je vytvá°et nové zvuky, nové typy zvuk· a napodobovat zvuky jiº existující. Elektronická hudba je £asto vytvá°ena r·znými aplikacemi, jako je nap°íklad
Fruity lo-
ops studio, Reaper, Cubase, Garage band, atd. K tomu mohou být pouºity klávesy £i jiné nástroje, které mohou být p°ipojeny k po£íta£i nebo jiným záznamovým za°ízením. Elek-
Amiga, Nintendo, atd. nap°íklad TR808 (automa-
tronickou hudbu je dnes moºné tvo°it i na star²ích strojích, jako je Hlavním nástrojem jsou v²ak syntezátory a automaty jako je tický bubeník od rmy
Roland), Jupiter 8, atp. Existuje mnoho elektronických nástroj·,
na rozdíl od nástroj· pro elektronický zp¥v, recitaci nebo rap.
2.2.1 Historie elektronické hudby a její p°edstavitelé V 70. letech 20. století za£ala klesat popularita hudebního stylu disco. Um¥lci jako byli
Zapp & Roger
za£ali experimentovat s talk boxy a vyuºíváním trochu výrazn¥j²ích beat·.
Elektronická hudba byla nakonec spojením mnoha styl·, jako byl funk, old school hip-hop a disco, v kombinaci s n¥meckým a japonským electropop. Tv·rci elektronické hudby se £asto nechávali inspirovat futurismem a hlavn¥ videohrami, které se v této dob¥ za£aly zna£n¥ rozvíjet. Pro svoji tvorbu vyuºívali hlavn¥ syntezátor·, automatických bicích, vocodér· a
sampler·. Za hlavní pr·kopníky ºánru electro je povaºována n¥mecká skupina
Kraftwerk, zaloºena
roku 1971 absolventy hudební konzervato°e Ralfem Hütterem a Florianem Schneiderem, s jejich electro skladbou
Trans Europe Express.
Kolem roku 1980 se v USA v New Yorku za£ali zviditel¬ovat Jonzun Crew (skladby Space Is The Place, We Are The Jonzun Crew, Pack Jam), Arthur Baker a Dave Storrs. V roce 1982, Arthur Baker a
Afrika Bambaata,
p°ipravují podklady od skupiny Kraftwerk,
konkrétn¥ pak melodii ze skladby Trans Europe Express a bubny z dal²ích jejich skladeb, jako nap°íklad Numbers, a prokládáním syntezátoru Moog a elektronickými cowbelly vytvá°ejí skladbu Planet Rock na stejnojmenném albu s trochu tvrd²ím zvukem automatu Roland
2.2.
7
ELEKTRONICKÁ HUDBA
TR808. Tímto okamºikem se udává vznik tzv. Electro-funk. Afrika Bambaata pozd¥ji zaloºil s Juanem Atkinsem projekt Cybotron ovliv¬ující budoucí vývoj drum and basse, electroclash a detroit techno. V této dob¥ se v USA také objevuje Dave Storrs. Spolu s raperem Ice-T nahrává skladby jako jsou Coldest Rap, Reckless, Tibetan Jam a Speed a s Kid Frostem vydávají vinylové desky Terminator, Rough Cut a Commando Rock. Mezi dal²í skladateli m·ºeme také jmenovat
Harolda Faltermeyera
a jeho hit
Axel F,
který je z vý²e jmenovaných hit· pro
v¥t²inu lidí nejznám¥j²í. Tento hit se také stal roku 1984 hlavní melodií lmu Beverly Hills Cop (Policajt v Beverly Hills). Stejn¥ tak i v dne²ní dob¥ je tato skladba velmi úsp¥²ná a bylo vytvo°eno mnoho remix· (jeden z nejznám¥j²ích je také Axel F od Crazy Frog). Dal²ím tv·rcem ve stylu electro je hudebník Hashim, který se proslavil deskou Soul (AlNaafyish. V roce 1985 se objevuje na scén¥ Kurtis Mantronik s MC Tee, známý také jako Mantronix, který skládá tzv. Hardcore Hip-Hop a tím se také postupn¥ odd¥lují od electro hudby. Nejvíce známých a zásadních klasických electro skladeb v²ak vzniká ve m¥st¥ Los Angeles, kde je electro scéna roz²í°en¥j²í neº v New Yorku. Práv¥ zde vzniká electro-hop, který vyuºívá stejných podklad· jako klasické electro ov²em s dopln¥ným rapem. Jeden z nejznám¥j²ích p°edstavitel· stylu electro-hop je
Greg Broussard,
který vy-
stupoval pod pseudonymem Egyptian Lover a je autorem hit· jako My Beat Goes Boom, Egypt Egypt, You're So Fine a Girls. Dále skupina tvo°ená hudebníky Mona Lisa, Cli-N-Tel, MC Shakespeare, DJ Yella, Dr. Dre, Grandmasterem Lonzem, pojmenovaná
World Class
Wreckin` Cru skládají skladby jako je Records Turntables, Juice nebo He's Bionic. Koncem 80. Let se v²ak rozpadli a dva jejich £lenové, Dr. Dre a DJ Yella zakládají skupinu N.W.A spole£n¥ s novým stylem gangsta rap. Dále je tu nap°íklad The Unknown DJ, který je zakladatel skupiny X-Men, skládající hudbu po stylu skupiny Kraftwerk. Pozd¥ji se k nim p°idá Arabian Prince, známý ve skupin¥ jako Professor X, který v²ak nakonec p°echází do skupiny
N.W.A.
V¥t²ina z t¥chto lidí,
krom¥ £len· skupiny World Class Wreckin` Cru, stále hrají a koncertují v ºánru electro dodnes a sv·j styl nazývají West Coast Dance. V Detroitu je mezi zakladatele povaºován hlavn¥ zakladatel moderního techno stylu, electro a detroit techno stylu skladatel Juan Atkins, který vyst°ídal mnoho pseudonym·, jako byl Cybotron, Model 500, Model 600, Audiotech nebo Channel One. Jedna z jeho pr·kopnických skladeb je Clear od projektu Cybotron. Juan Atkins má také vlastní vydavatelství Metroplex. V Miami, kde vzniká styl Miami Bass a Electro Bass, jsou p°edstaviteli DJ Debonaire, Dynamix II pop°ípad¥ mistr svého oboru DXJ, který má celkem více neº 100 vydaných nahrávek pod r·znými pseudonymy, aby mohl vydat n¥kolik v¥cí za rok na stejném labelu. Evropskými p°edstaviteli jsou nap°íklad n¥me£tí Dominance Electricity Records, Dynamik bass System, Supreme.ja, Anthony Rother, Berlin Crime Records, Bass Junkie, Mandroid, DMX Krew, Computer Rockers, Datashat nebo jejich ²pan¥l²tí kolegové Electronautas, Boris Divider, Uni.Mate, DJ Split, DJ Potas. Z £eských um¥lc· jsou £istými zástupci ºánru experimental-electro Moimir Papalescu, vystupující pod jménem Magnetik, MIDI LIDI, ºánru electro bass pak Dynamixx Prince (Hitachi II, ex-COsmic Crew) a ºánru electro-freestyle Cosmic Crew.
8
KAPITOLA 2.
HUDBA A ZVUK
A£koliv hlavní rozkv¥t electro music byl v roce 1980, popularitu získal i okolo roku 1990, kdy u£inkovali um¥lci jako Anthony Rother a DJ Dave Clarke. Dal²í t°etí populární vlna p°i²la v roce 2009, kdy zájem o electro music stále neklesá a za£íná se objevovat stále více styl· vycházejících z prvk· electra, jako je nap°íklad drum and basse (DnB). V dne²ní dob¥ se electro prom¥nilo v ur£itý typ house music, který není tak soust°ed¥ný na pravidelnost rytmu.
2.3 Hip hop Hip hop vznikl spole£n¥ s elektro muzikou po£átkem 70. let 20. století. Mezi hlavní zakladatele tohoto stylu pat°í
DJ Kool Herc, který se p°est¥hoval do New Yorku z Jamajky.
P·vodn¥ jamajský typ zp¥vu, známý také jako toasting, kdy se do rytmu jamajské hudby reggae vkládali ur£ité recitace, postupn¥ za£al p°echázet vlivem electro hudby do hip hopu takového, jaký ho známe dnes. Hip hop tvo°í melodická linky (£ást) spole£n¥ s tzv. MC, coº je synonymum pro rap (rapping) nebo také rytmování. Ve svých po£átcích byl rap pouhé recitování do hudby £asto n¥jakých vtip·, atp., pop°ípad¥ rape°i vybízeli publikum k tanci, tleskání, atp. Nejv¥t²í spojení vzniklo pravd¥podobn¥ mezi rappery a DJ's, kte°í p°ehrávali hudbu na deskách, vytvá°eli vlastní hudbu a rape°i do této hudby recitovali. S hip hopem a rapem byl i úzce spjat tane£ní styl break dance a £asto volným zp·sobem ºivota, kdy p°íznivci t¥chto styl· vytvá°eli grati, coº bylo gracké um¥ní, pomocí n¥hoº vyjád°ovali své názory. Pozd¥ji se s tímto sm¥rem hudby a ºivota za£al spojovat i tzv. beatbox, kde beatboxer napodobuje ur£ité zvuky, rytmy a melodie pouze pomocí úst. Beatboxe°i nej£ast¥ji napodobují zvuky bubn·, ale dokáºí imitovat i trubku, pianno, atd. Tento hudební styl byl spojován s volným zp·sobem ºivota. D°íve hlavní jeho zastánci byli lidé z gang·, £asto Afroameri£ané, pozd¥ji se v²ak hip hop za£al roz²i°ovat i do jiných £ástí sv¥ta a za£al získávat svoje zastánce tak°ka v²ude na zemi. Jiº v minulosti se hip hop za£al prolínat s mnoha jinými hudebními styly, hlavn¥ tedy electro muzikou. V pr·b¥hu vývoje se objevily i velice oblíbené skladby, kdy se hip hop spojil nap°íklad s blues, jazzem, pozd¥ji se toto spojení za£alo nazývat stylem funk. Nejv¥t²í úsp¥ch ov²em zaznamenal se spojením pop stylu (populární hudby), který vychází ze stylu disco a electra. Tento styl se za£al nazývat RnB (n¥kdy také R&B nebo Rhytm and Blues), a£koliv tento název jiº znamenal kombinaci prvk· jazzu a blues. Samotný rap je hlavn¥ o rýmech v rychlosti recitovaných za sebou, £astokrát i do pomalých rytm·. Na co moºná nejrychlej²í odrecitování rým· do hudby se zam¥°uje styl fast rap, kde je hlavním významem velice rychlé odrecitování, kde jiº £asto ani nelze rozeznat samotný význam rým·. Pro oby£ejného £lov¥ka je pak tém¥° nemoºné n¥co takového alespo¬ napodobit. V hip hopu neexistují r·zné hlasové modikace, efekty, jako je
vibrato. Takovéto efekty
se £asto vyuºívají ve zp¥vu, aby byly vokály n¥£ím ozvlá²tn¥né. V hip hopu se v²ak málokdy objevuje del²í tón neº pár milisekund a kdyº uº ano, £asto se jedná pouze o postupnou zm¥nu stoupání £i klesání tónu, ale efekty jako je jiº zmi¬ované vibrato se nepouºívají. Hlavní sloºkou hip hopu je rap, ten si m·ºeme p°edstavit jako ur£ité noty (které p°edstavují recitovaná slova). Tyto noty se postupn¥ zvy²ují nebo sniºují nebo z·stávají na stejné
2.4.
9
ZVUK
vý²ce. Lépe v²ak neº samotná slova si noty m·ºeme p°edstavit jako slabiky. Rytmika u hip hopu se neur£uje slovy, ale slabikami. V²ichni jsme se na základní ²kole snaºili podle u£itele hudební výchovy vytleskávat stejný rytmus jaký nám byl zatleskán. Stejn¥ tak jako toto tleskání funguje i tato recitace, rap - kdy si jako kaºdé tlesknutí m·ºeme p°edstavit jednu slabiku slova. V hip hopu jsou skladby v¥t²inou rytmicky stále stejné (jedna skladba drºí stále stejný rytmus). Je to zvyklost z dob, kdy jednou z hlavních náplní hip hopu byl tzv. battle (souboj), kdy dva £i více raper· na jevi²ti rapovali do hudby, na kterou nebyli p°edem p°ipraveni. asto nem¥li ani text p°ipravený p°edem a v²echny rýmy vymý²leli aº na pódiu. Kdyby skladba, hraná DJ-em, m¥la zm¥ny rytmiky, £asto by pak jejich text neodpovídal rytmu této skladby. Tudíº hlavní d·raz u hip hopu se klade na z°ejmé a jasné rytmické doby. Hlavní úlohu tedy plní bubny a basová linka.
Obrázek 2.1: P°edstava not (zpráv MIDI) ur£ující rytmiku textu pro rap (úryvek textu je pouºit ze skladby Vodopády od skupiny Chaozz)
2.4 Zvuk Zvuk je vjem kmitání, vibrování vzduchu (ale nejen vzduchu, ale kaºdého pruºného prost°edí, jako je nap°íklad i voda nebo d°evo) v d·sledku chv¥ní zdroje zvuku (nap°íklad lidské hlasivky rozechv¥jí okolní vzduch, který je poté vibracemi reprodukován do okolí, zvuk strun a kytarové desky, piana, ale t°eba i fén, kolo, reproduktor, atd.). Kaºdá periodická oscilace je sou£tem jejích harmonických, tedy kaºdou periodickou vibraci m·ºeme popsat, jestliºe se jedná o sou£et ur£itých jednodu²²ích vibrací (harmonických). Kaºdá harmonická je sinusová frekvence, sinusový pr·b¥h, který je také £asto nazýván jako
£istý tón
(ov²em s £istým tónem sinusového signálu se v p°írod¥ setkáme z°ídkakdy,
nejblíºe takovému tónu je zvuk étny nebo varhan), s vlastní amplitudou a frekvencí. Zvuk, který vnímáme (zabarvení tónu, hlasu, zvuku) je poté závislý na kaºdé relativní amplitud¥ a na frekvenci harmonických sloºek. V²echny neperiodické pr·b¥hy m¥ní v £ase svoje harmonické, a zn¥jí tedy jinak.
10
KAPITOLA 2.
HUDBA A ZVUK
Obrázek 2.2: istý tón - sinusový signál
Obrázek 2.3: sin(x)
Obrázek 2.4: sin(2x)
Obrázek 2.5: sin((1/2)x))
Akusticky generovaný zvuk se £asto skládá z 3 £ástí:
•
Zdroj (Excitátor) produkuje energii (nap°íklad dech u étny, trsátko u kytary, smy£ec u houslí)
2.5.
PEHLED METOD SYNTÉZY ZVUKU
11
Obrázek 2.6: £ervená: sin((1/2)x), zelená: sin(2x), modrá: sin(x)
Obrázek 2.7: sin(x)+sin(2x)+sin((1/2)x) Sloºený pr·b¥h sloºený z 3 £istých tón· r·zných frekvencí
•
Oscilátor vodi£ vlny (signálu), je hlavní £ást nástroje, která osciluje (struna na kyta°e, plátek u klarinetu, atp.)
•
Rezonátor £ást nástroje, která m¥ní energii z oscilátoru a produkuje zvuk -tón (nap°íklad zvon, korpus kytary, trubice saxofonu, atp.)
2.5 P°ehled metod syntézy zvuku Zvuková syntéza je rozd¥lována na dv¥ hlavní odv¥tví. Vytvá°ení reálných zvuk·, které se co nejblíºe podobají zvuk·m klasických akustických nástroj· (reprodukovaných reálnými zdroji) je jednou z nich. Dále se rozd¥luje na vytvá°ení v²emoºných ostatních zvuk·, které jsme v na²em okolním sv¥t¥, v p°írod¥, ve vesmíru, kdekoliv, prozatím nemohli sly²et. Takovéto zvuky mají £asto reálný podklad a modikují se danými parametry, zm¥na jediného parametru nám pak m·ºe vytvo°it zvuk zcela odli²ný. Tyto dv¥ odv¥tví se tedy navzájem prolínají a jsou spolu úzce spjata. Je logické, ºe mnohem t¥º²í bude vytvo°it jiº existující zvuk, jiº existujících nástroj·, jelikoº zvuková kvalita takového nástroje £asto bývá mnohokrát v¥t²í. Nehled¥ na toto tvrzení, neexistuje nástroj, který by byl vytvo°en naprosto stejn¥ jako n¥jaký p°edchozí, jiº vytvo°ený, a tak £asto i u stejného hudebního nástroje m·ºeme mít dané parametry jiné, a£koliv pro lidské ucho jsou tyto rozdíly tak°ka nerozeznatelné. Kvalitu vytvo°eného zvuku tedy srovnáváme s reálným, jiº existujícím nástrojem. A£koliv bychom p°edpokládali u £istého tónu ur£itou statickou posloupnost disktrétních £ar spektra, hudební nástroj nelze idealizovat. Mnoho faktor· a mnoho vlastností do vytvá°eného zvuku nem·ºeme v·bec p°idávat. Nap°íklad u saxofonu, klarinetu, atp. p°ilnavost klapek na samotnou konstrukci, u étny sílu p°ítisku prst· na její konstrukci, u piana, xylofonu, atp. rezonanci ostatních (sousedních) strun.
12
KAPITOLA 2.
HUDBA A ZVUK
V praxi tedy £asto vyuºíváme metody, kdy k nasamplovanému nástroji p°idáme vlastnosti umoº¬ující zvuk modikovat. Metody syntézy zvuku:
•
Sou£tová metoda (aditivní)
•
Rozdílová metoda (subtraktivní, analogová)
•
Modula£ní metoda (Amplitudová, kruhová a frekven£ní modulace)
•
Tvarová metoda (Nelineární tvarování, fázové zkreslení, p°ímé zadání £asového pr·b¥hu)
•
Segmenta£ní metoda
•
Granula£ní (granulární) metoda
•
Samplovací metoda
•
Fyzikální modelování
•
Lineární aritmetická metoda
•
Scanovací metoda
•
Vektorová metoda
•
Vowel-constant metoda (samohláska-souhláska)
2.5.1 Aditivní (sou£tová) syntéza Jedna z nejstar²ích metod generování signálu zvuku. Funguje na bázi jednoduchého s£ítání sinusových signál·, kterou lze vyjád°it vzorcem 2.1.
f (t) =
n X
Ak sin(ωk t + ϕk )
(2.1)
i=0 kde Ak je amplituda,
ωk
frekvence a
ϕk
fáze k-té sloºky tónu p°i N sloºkách. Tabulka
2.1 znázor¬uje zastoupení jednotlivých harmonických u reálných nástroj·.
Z tabulky m·ºeme vid¥t, ºe nám £asto posta£í jen prvních 10 hodnot, ov²em celkový po£et sloºek m·ºe být aº 250. A£koliv tato metoda pat°í k jedn¥m z nejdokonalej²ích metod pro zvukovou syntézu, není tak £asto vyuºívána, jelikoº výpo£etní proces je mnohem sloºit¥j²í, neº u jiných metod, kdy sta£í pozm¥nit nap°íklad jen jeden parametr. U aditivní syntézy máme tedy n¥kolik sinusových vln r·zných úrovní a r·zných frekvencí. Tyto vlny spojujeme dohromady a vytvá°íme tím poºadovanou harmonickou strukturu. Dalo by se tedy °íci, ºe místo toho, abychom m¥li n¥jakou vlnu, kterou bychom modikovali a o°ezávali o sloºky, které nepot°ebujeme, za£ínáme z jedné vlny, ke které naopak sloºky p°idáváme a tím se snaºíme dosáhnout poºadované struktury.
2.5.
13
PEHLED METOD SYNTÉZY ZVUKU
NÁSTROJ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
trubka
0,17
0,63
0,57
0,98
0,56
0,68
0,02
0,05
-
-
Harmonika
8,60
0,45
3,40
0,50
0,42
0,13
0,13
0,16
0,04
0,35
Flétna
2,54
0,25
0,01
-
-
-
-
-
-
-
Klarinet
1,00
0,00
0,07
0,00
0,50
0,00
0,14
0,50
0,00
0,12
Hoboj
0,02
0,20
1,00
0,37
0,36
0,46
0,10
0,06
0,03
0,02
Piano
0,32
0,20
0,08
0,07
0,06
-
-
-
-
-
Housle
0,39
0,30
0,17
0,01
0,11
-
-
-
-
-
Hlas
0,43
0,08
0,01
-
-
-
-
-
-
-
Tabulka 2.1: Jednotlivé zastoupení harmonických sloºek u reálných nástroj· (zdroj: www.elektronicka-hudba.telotone.cz/clanky/metody-zvukove-syntezy)
2.5.2 Rozdílová syntéza Tuto metodu jsem jiº z£ásti popsal v kapitole 2.4., p°i popisu, z £eho se skládá akusticky generovaný zvuk. Je to jedna z nejroz²í°en¥j²ích metod syntézy zvuku a v²ichni se s ní setkáváme kaºdý den, nap°íklad kdyº mluvíme. Hlasivky pulzují (vibrují), následn¥ jsou tyto vibrace v rezonan£ních dutinách jako je dutina nosní, hrdelní a ústní ltrovány (spole£n¥ se rty, jazykem a zuby), tyto ltry tvarují vstupní signál a následn¥ je vyprodukován ur£itý zvuk. Analogicky k tomu, na klarinetu svým dechem rozpohybujeme plátek, který za£ne vibrovat a je poté v trubici klarinetu ltrován a následn¥ reprodukován. Stejn¥ tak funguje nap°íklad i kytara, kdy místo plátku £i hlasivek vyuºíváme trsátka nebo prst· k rozpohybování struny. Tato vlna, kterou struna vytvo°í je poté zachycena v korpusu kytary, kde je zvuk vytvarován a nadále reprodukován. Hlavní princip této metody tedy je, ºe kaºdá harmonická m·ºe být vytvo°ena oscilátorem nebo kombinací více oscilátor·. Poté mohou být °ízeny a kontrolovány p°es r·zné ltry. Výstupy t¥chto harmonických sloºek poté mohou vytvá°et struktury daných nástroj·.
2.5.3 Wavetable (tabulková) syntéza Tato syntéza pracuje pomocí tabulky, která obsahuje n¥kolik p°epínatelných frekvencí. Jestliºe je zvuk aktivován (£asto nap°íklad tla£ítkem), pohybuje se touto tabulkou. Pr·b¥h nem¥ní náhodn¥, ale plynule m¥ní svoji podobu tak, aby odpovídal vlnám uvedeným v tabulce. asto je tato metoda vyuºívaná pro digitální zvuky nebo r·zné zvonky.
2.5.4 Vektorová syntéza Pracuje stejným zp·sobem jako tabulková syntéza s rozdílem, ºe tato tabulka je dvourozm¥rná. Zvuk tedy m·ºe být mnohem hlad²í a vyváºen¥j²í.
14
KAPITOLA 2.
HUDBA A ZVUK
2.5.5 Frekven£ní modulace Nejvyuºívan¥j²í metoda z modula£ních syntéz. Kruhová a amplitudová jsou £asto vyuºívány jen jako dopl¬kové efekty. Frekven£ní analýza nám umoº¬uje plynule p°echázet z harmonických a neharmonických struktur navzájem tak, ºe rozladíme modula£ní frekvence v·£i nosné frekvenci v iracionálním pom¥ru. asto se tato metoda vyuºívá pro elektronické a digitální zvuky, pop°ípad¥ zvuky zvon·, r·zných efekt· a ruch·. Naopak se ov²em nevyuºívá pro vytvo°ení akustických nástroj· (jejich napodobení). Rozdílová syntéza je limitována harmonickou strukturou, která je pevná, frekven£ní modulace v²ak takto limitována není.
2.5.6 Nelineární tvarování Produkovaný signál prochází obvodem s nelineární charakteristikou. Díky této nelinearit¥ vznikají sloºky, sou£tové a rozdílové, vstupního signálu. Vznikají tak tedy nové harmonické sloºky.
Obrázek 2.8: Ukázka nelineárního tvarován (zdroj: www.sound.eti.pg.gda.pl/student/eim/synteza/jaroslaw/index_ang.htm)
2.5.7 Fázové zkreslení Je úzce spjato s nelineárním tvarováním, jednotlivé vzorky v period¥ vstupního signálu jsou p°esunuty na jinou pozici (zp°eházeny), vzniká tak tedy nový tvar signálu.
2.5.8 P°ímé zadávání £asového pr·b¥hu asto ur£eno p°ímým zadáváním parametr· pop°ípad¥ s pomocí grackého prost°edí m¥níme tvar vstupního signálu. Nem·ºeme ov²em kontrolovat výsledné zn¥ní signálu.
2.5.
15
PEHLED METOD SYNTÉZY ZVUKU
2.5.9 Granula£ní syntéza Pouºívají se tzv. granulky, to jsou velice krátké úseky zvuku, které jsou p°ehrávány za sebou rychlostí, kdy lidské ucho mezeru mezi granulkami nepozná a lidský mozek tak vnímá zvuk spojitý. Podobnou metodou je také konkatena£ní syntéza, vyuºívaná p°i tvorb¥ °e£i, kdy se za sebe postupn¥ vkládají fonémy.
2.5.10 Samplovací metoda Jedná se o p°ístroj, kde jsou p°edem uloºené zvuky, které se poté p°ehrávají, nejedná se tedy tak úpln¥ o syntezátor. asto tak bývá poznán monotónní p°ednes, ov²em na druhou stranu velmi podobný nasamplovanému nástroji.
2.5.11 Virtuální akustická syntéza Virtuální akustická syntéza je dal²ím projektem spole£nosti
Yamaha.
Tato syntéza ne-
pracuje tak, jako syntézy vý²e popsané. Jedná se o novou technologii, která vytvá°í model nástroje dle co moºná nejv¥t²ího mnoºství vlastností reálného nástroje, který jej popisuje. Vlastnosti, které reálné nástroje mají, jsou nap°íklad z jakého materiálu jsou vyrobeny, jejich velikost, tvar, atd. To v²e má vliv na výsledný zvuk nástroje. Tato metoda se snaºí o p°ímou simulaci nástroje a ne jen simulaci samotného zvuku. Ve své podstat¥ pracuje podobn¥ jako rozdílová syntéza (viz 2.5.2). V¥t²í d·raz je v²ak kladen i na zdroj zvuku. Virtuální akustická syntéza dokáºe simulovat i p°echody kláves na pianu, dýchání, p°ejezd prst· po strunách, atd. A£koliv ob£as jsou tyto efekty neºádoucí, na druhou stranu jsou nap°íklad podstatou jazzu. V jazzu naopak hudebník £asto chce, aby projev byl t¥mito efekty zajímavý. V jiných hudebních stylech v²ak takovýto p°ednes nemusí být ºádoucí, ov²em práv¥ díky n¥mu m·ºeme poznat, ºe je p°edná²en £lov¥kem. Tato metoda se v²ak tomuto lidskému faktoru m·ºe zna£n¥ vyrovnat.
16
KAPITOLA 2.
HUDBA A ZVUK
Kapitola 3 Rozbor problému
3.1 Kompozice hudby 1
P°i vytvá°ení hudby bychom v²echny akce (tzv. workow ) mohli popsat n¥kolika kroky. Kaºdý £lov¥k, hudební producent postupuje jinak a kroky mohou být zam¥n¥ny nebo je moºné postupovat úpln¥ jiným zp·sobem. Jestliºe se v²ak zeptáme hudebních producent· a tv·rc· hudby, £asto se jejich kroky podobají, jen s ur£itými obm¥nami. N¥kdo nejprve napí²e text pro skladbu (stopu vokál·), poté se snaºí vytvo°it hudbu, která by se melodicky hodila k tomuto textu. N¥kdo postupuje naopak obrácen¥ a nejprve vytvá°í melodii skladby a teprve poté text. P°i vytvá°ení melodie n¥kdo nejprve vytvá°í basovou linku a n¥kdo nejprve melodie hrající nap°íklad na piano. Záleºí také na hudebním stylu, do kterého se skladba poté za°adí. Nap°íklad pro tane£ní hudbu je d·leºit¥j²í samotná hudba a text písn¥ je pak jen jakýsi dopl¬ující faktor skladby. Je tedy vhodné postupovat nejprve vytvo°ením v²ech pot°ebných track· a tento text vytvá°et naposledy. Nap°íklad pro populární hudbu se pak vytvá°í nejprve ur£itá hlavní melodie, £asto na piano nebo kytaru a poté v²e ostatní. V rocku má zase velkou váhu kytara, takºe se nej£ast¥ji za£íná trackem práv¥ pro ni. Pro hip hop se obvykle nejprve sepisuje text s basovou a bicí stopou. Postup· je tedy více, ale kroky se £asto podobají a jen p°icházejí v jiném po°adí. Níºe vypsané kroky tedy záleºí na stylu, pro který je skladba vytvá°ena. Kaºdý hudební styl má své p°ednosti na jiných úrovních a tak je nutné p°izp·sobit tyto kroky práv¥ daným p°ednostem. Zárove¬ je rozhodnutí o tomto workow zna£n¥ individuální a tak i p°es ur£ité preference, které r·zné styly mají, jde o rozhodnutí kaºdého hudebního producenta zvlá²´ a kaºdý vytvá°í hudbu tak, jak je zvyklý a jak to jemu nejvíce vyhovuje. Neexistuje tedy striktn¥ daný
workow, dle kterého by se m¥lo postupovat.
1
Workow je schéma provád¥ní ur£itého procesu.
17
18
KAPITOLA 3.
ROZBOR PROBLÉMU
Obrázek 3.1: P°edstava workow, kdy kaºdý track p°edstavuje sv·j daný krok workow, ty jsou vytvá°eny postupn¥
3.1.1 Rytmus - basová, bicí stopa Pro vytvo°ení nap°íklad basové a bicí stopy se jednodu²e vytvo°í melodie t¥chto nástroj·, £asto sta£í krátký úsek, který se následn¥ po celou dobu skladby opakuje dokola a je obm¥¬ován jen nap°íklad p°i refrénu. Takovémuto krátkému úseku se °íká loop (smy£ka). V refrénu se poté m·ºe zm¥nit i rytmus skladby. Tím, ºe vytvo°íme práv¥ tyto stopy jako první, budeme poté mít p°i p°ehrávání skladby v¥t²í p°ehled o rytmu. Není to v²ak podmínkou, jelikoº tém¥° ve v²ech nástrojích pro tvorbu hudby (stejn¥ tak i v reálném sv¥t¥) máme tzv. metronom, který nám klepe do rytmu a je moºné tedy vytvo°it rytmicky správnou melodii i bez stopy bicích a bas·.
3.1.2 Doprovodná melodie Dal²ím krokem bývá tzv. background melodie, která hraje na pozadí, ale guruje spí²e jako doprovod (p°íklad background melodie m·ºe být melodie p°ehrávána levou rukou na klavíru £i pianu), m·ºe to v²ak být nap°íklad i kytara, klavír, zkrátka v²e, co má celou kompozici pouze dopl¬ovat.
3.1.3 Hlavní melodie Jednou z hlavních stop je samotná hlavní melodie vloºená £asto jiº do vytvo°ené (p°edp°ipravené) struktury skladby. Nej£ast¥ji se jedná o zmi¬ovaný klavír, piano, kytaru, atp. Zkrátka to, co má z celé kompozice vyznít nejjasn¥ji. asto to bývají r·zná sóla, kdy v pauzách mezi zp¥vem hraje práv¥ tato melodie.
3.2.
TEXT TO SPEECH
19
Po vytvo°ení hlavní melodie se £asto skladba upravuje od za£átku, tedy spustí a v²echny uvedené kroky se provedou znovu. Nej£ast¥ji je pak obm¥¬ována melodie bas· a bicích. asto se jedná o jemné zm¥ny, kdy se poupravují pouze drobné nedostatky, jako nap°íklad p°idání £inel·. M·ºe v²ak p°ijít i velká zm¥na, kdy se tém¥° celá struktura doposud vytvo°ené skladby p°ed¥lá, coº m·ºe být i výb¥r jiných nástroj·, zm¥na bicích, atp.
3.1.4 Dopl¬ková melodie V p°ípad¥ pot°eby se £asto p°idávají dopl¬kové melodie, krátké úseky, které se ve skladb¥ budou vyskytovat minimáln¥, takovým nástrojem £asto bývá nap°íklad saxofon (pokud se v²ak nejedná nap°íklad o styl jazz, kde saxofon plní jednu z hlavních rolí), trubka, atp. a poté se op¥t provedou znova v²echny úkony od samého po£átku a provádí se op¥t dal²í úprava (v p°ípad¥ pot°eby).
3.1.5 Vokály (stopa zp¥vu) Pokud postup tvo°í posloupnost vý²e zmi¬ovaných krok·, p°ichází na °adu tém¥° poslední krok a tím je vytvo°ení vokál· (zp¥vu). Napí²e se tedy text (pokud jiº není napsaný) a pokud je k dispozici zp¥vák, m·ºe se za£ít nahrávat zp¥v. asto se v²ak p°i vytvá°ení nesetkáme hned se zp¥vákem a vytvá°í se tak nejprve stopa, která odpovídá hlasu zp¥váka. P°edstavuje ji v²ak jiný nástroj, kterým m·ºe být nap°íklad étna £i jiný nástroj (nej£ast¥ji se v²ak pouºívají nástroje dechové nebo klavír). Tímto nástrojem se vytvo°í identická stopa tak, jak by ji zpíval zp¥vák. Tato melodie se pak p°i nahrávání samotného zp¥vu zp¥vákovi pustí a ten se poté snaºí o její co nejp°esn¥j²í interpretaci. Po provedení v²ech t¥chto krok· se provede poslední kontrola a tím i poslední krok, kdy se op¥t provedou jemné zm¥ny v celé struktu°e (pokud jsou pot°eba) a skladba je hotova.
3.2 Text to speech Tato kapitola se v¥nuje bliº²ímu seznámení s nástrojem (systémem)
text-to-speech.
Popisuje, jak je vlastn¥ TTS vytvá°eno a jaké metody pouºívá. Um¥lé reprodukci p°irozené °e£i, která je p°ehrávána v reálném £ase, tedy není p°edem p°ehrávána z jiº vytvo°eného souboru, se °íká jazyková syntéza (Speech synthesis ). Jak jiº bylo zmín¥no v kapitole 1.4, speech synthesis má své vyuºití tém¥° v²ude. Je nápomocná osobám s ur£itými handicapy, nap°íklad lidem s vadou °e£i, je nápomocná slepým lidem, kdy se díky ní mohou pohybovat v menu telefonu, na internetu, atp., stejn¥ tak je ale nápomocná i v²em ostatním. Se speech synthesis se setkáváme v na²ich mobilních telefonech, navigacích v autech, ale hlavn¥ i v po£íta£ích. V¥t²ina text-to-speech prochází n¥kolika fázemi. Za celou touto technologií stojí velice sloºité algoritmy, p°ístroje a mnoho vývojá°· a odborník· na °e£. Vºdy se v²ak nejprve nahrají r·zné hlasy, slova, sousloví, v¥ty a souv¥tí, ze kterých se poté postupn¥ v²echny výrazy rozkládají na tzv. jednotky.
20
KAPITOLA 3.
ROZBOR PROBLÉMU
Tyto jednotky jsou ty nejmen²í £ásti slov, tedy hlavn¥ samohlásky a souhlásky, tzn.
fonémy. Mohou to ale v²ak být i dvojhlásky, jako je ou, ie, au, n¥kdy i celé slabiky. Z t¥chto
2
foném· jsou pak zpracovávány difóny a pop°ípad¥ i morfonémy . Tato £ást zpracování je velice d·leºitá, jelikoº nap°íklad slovo epidemie obsahuje 3x písmeno e, ov²em práv¥ jeho t°etí nález je vyslovován jinak, neº p°edchozí dva výskyty. V £eském jazyce tyto zám¥ny je²t¥ nejsou tak razantní, jako nap°íklad v jazycích germánských. V angli£tin¥ máme r·zné typy písmene e, atp., kde je kaºdé písmeno £astokrát vyslovováno jinak. Proto se p°i tomto rozd¥lování slov musí brát v potaz ne jen samotné písmeno, ale i jeho okolí. Tyto hlasy jsou tedy p°evád¥ny do fonetické abecedy (fonetické mezinárodní abecedy). Jednotky jsou posléze velice náro£nými algoritmy p°evád¥ny zp¥t do zvukového (°e£ového) výstupu konkatena£ní syntézou. Konketa£ní syntéza je podobná (jak jsem zmínil v kapitole 2.5.9) syntéze granula£ní. Ve výsledku to poté znamená, ºe jednotky jsou posléze sestavovány zp¥t do ur£itého zvukového výstupu. P°ed tím v²ak nastává je²t¥ akce porozum¥ní textu, tedy akce programu, aby systém v¥d¥l kde je podm¥t, p°ísudek, atd. V kaºdém jazyce je takováto akce zna£n¥ komplikovaná, nehled¥ na to, ºe n¥které jazyky tato pravidla ani nemusí znát. Nap°íklad a£koliv angli£tina i jednoduchá pravidla jako kde se nachází podm¥t, kde se nachází p°ísudek, zná, není na tato pravidla brán z°etel. V £e²tin¥ v²ak existuje jasné pravidlo, ºe na podm¥tu je, aº na ojedin¥lé p°ípady, siln¥j²í p°ízvuk. Proto také neexistuje ºádný TTS systém, který by um¥l p°ed£ítat ze v²ech existujících jazyk·, jelikoº kaºdý jazyk má svá, rozdílná pravidla. Systém TTS tedy musí porozum¥t textu, aby intonace hlasu (tzv.
prosodie3 ) byla p°irozená.
Dále se provede zji²t¥ní, zdali je v¥ta oznamovací, tázací, p°ikazovací. Dle t¥chto atribut· systém ur£í, zdali se má hlas na konci v¥ty zvy²ovat £i sniºovat. Systém má tedy v databázi nahrané ur£ité fonémy, difóny, atd. Abychom v²ak dostali n¥jaký výsledek, musíme systému p°edloºit n¥jaký text. Tento text je poté také analyzován, transformován do fonetického p°episu a posléze se provádí prosodie. Poté nám systém TTS p°edloºí výsledný zvukový výstup.
3.2.1 Textová analýza Samotná textová analýza p°evádí vstupní text na takzvané
tokeny, kdy kaºdému znaku, ortogracký tvar4 .
£íslu a slovu je p°i°azen token. Kaºdý znak je tedy p°evád¥n na jeho
V anglickém jazyce tedy nap°íklad bude znak _ (podtrºítko) p°eveden na underscore, £íslo 1 bude p°evedeno na one, atd. Dále se p°i této fázi odstra¬ují i tzv. dvojzna£nosti, zp·sobené p°ízvukem jazyka.
3.2.2 P°eklad textu na fonémy Po dokon£ení textové analýzy p°ichází na °adu p°evod do foném·. astokrát pom¥r po£tu
foném· slova není roven po£tu písmen ve slov¥, jelikoº nap°íklad v angli£tin¥ slovo hello bude po p°episu ve tvaru hehlow, kdy v²ak eh a ow p°edstavují jeden foném, slovo 2
Morfoném je mnoºina foném·
3
V¥dní obor zabývající se zvukovými vlastnostmi jazyka
4
Ortogracký tvar je ekvivalentní výraz pro pravopisný tvar, ortograe je pak v¥da zabývající se pravo-
pisem.
3.2.
21
TEXT TO SPEECH
hello (5 písmen) má tedy po p°episu 4 fonémy (h-eh-l-ow). Stejn¥ tak jedno písmeno m·ºe obsahovat více foném·, nej£ast¥ji pak písmeno x, které se p°ekládá jako k-s, n¥která písmena se v·bec nep°ekládají, jako nap°íklad nehlasné e. Dal²í problém nastává, jelikoº n¥která písmena m·ºeme za r·zných situací p°eloºit r·zn¥, jako nap°íklad dog - home. V neposlední °ad¥ pak obrácen¥, jeden
foném
m·ºe být p°eloºen z více r·zných písmen,
nap°íklad cheat-people.
foném· existují dv¥ implementace. 5 zaloºen na fonologických pravidlech.
Pro p°eloºení slova do tvaru První z t¥chto postup· je
Slovo je p°ekládáno
dle ur£itých pravidel a rozkládáno na fonémy. U n¥kterých slov v²ak mohou existovat ur£ité
6
výslovnostní anomálie , které jsou uloºeny v databázi. Nejprve je tedy vyhodnoceno, zdali slovo neobsahuje n¥jakou anomálii a pokud ne, je p°ekládáno dle daných pravidel. Tento zp·sob je náro£n¥j²í na výpo£ty a jeho algoritmy jsou zna£n¥ sloºit¥j²í, na druhou stranu v²ak není zapot°ebí mít velkou databázi výslovností. Druhý zp·sob je naopak vytvo°en co nejv¥t²í moºnou databází morfém, kdy se celé tvary vytvá°í deriva£ními, exními a kompozi£ními pravidly, pop°ípad¥ takový slovník obsahuje celé existující tvary. Slova, která poté slovník neobsahuje, se naopak vytvá°í fonologickými pravidly. Tento zp·sob je proti prvnímu naopak více náro£ný na velikost databáze, ov²em ony výpo£ty uº nejsou tak sloºité a v¥t²inou se jen jednodu²e prochází databáze a hledají se dané tvary. Tento zp·sob je také o n¥co p°esn¥j²í a podobn¥j²í p°irozené °e£i neº zp·sob první. Je v²ak závislý na velikosti slovníku, v ideálním p°ípad¥ by pak slovník obsahoval v²echny existující tvary v²ech slov. To je ov²em v dne²ní dob¥ stále velký problém, jelikoº úloºný prostor, kde by tato data byla uloºena, by musel být mnohokrát v¥t²í neº kapacita dne²ních úloºných disk·. Proto se £asto up°ednost¬uje kvantita nad kvalitou a je implementován práv¥ první zp·sob p°evodu slov do foném·.
3.2.3 Tvorba prosodie Po dokon£ení t¥chto krok· p°ichází na °adu intonace hlasu (
prosodie). Zde se zkoumají
syntaktické, sémantické a pragmatické vlastnosti textu. Syntaktické a sémantické vlastnosti jsou ov²em brány v potaz jen u n¥kolika málo TTS systém·. Nej£ast¥ji jsou zkoumány jen syntaktické vlastnosti textu. Zde se ur£uje, zdali je v¥ta oznamovací, tázací nebo p°ikazovací. Prosodie je pak vypo£ítávána z informací o struktu°e v¥ty. Zde v²ak nastává problém u systém· neimplementujících sémantické a pragmatické vlastnosti, jelikoº p°i zd·razn¥ní ur£itého slova m·ºeme pozm¥nit po°ádek slov ve v¥t¥ a systém s implementací pouhé syntaktiky nemusí správn¥ rozpoznat kde vytvo°it intonaci hlasu, na jaké slovo vypo£ítat p°ízvuk, atd. Ve výsledku pak záporná sloºka (zápor ve v¥t¥), která by m¥la obsahovat siln¥j²í p°ízvuk, m·ºe být vyhodnocena jako kladná a text nebude znít tak, jak by správn¥ m¥l. Tím pak ztrácí systém na kvalit¥, jelikoº systémy jsou hodnoceny i tím, jak dokáºí intonovat, jak frázují a kde kladou intona£ní d·razy, p°ízvuky, jak se dokáºí vypo°ádat se zn¥lými a nezn¥lými dobami, kterými ur£uje délku slabik potaºmo i rychlost p°ed£ítání textu. 5
Fonologie je v¥da zkoumající zvukovou stránku p°irozeného jazyka, podobn¥ jako fonetika
6
výjime£nost, odchýlení od pravidel
22
KAPITOLA 3.
ROZBOR PROBLÉMU
3.2.4 Syntéza Posledním krokem je samotná syntéza, kdy je vytvá°en hlasový výstup. Z databáze jsou vybrána data odpovídající vstupu. Jestliºe databáze obsahuje více vhodných výstup·, je zde algoritmus, který vybere práv¥ ten nejvhodn¥j²í výstup. Tyto výstupy jsou pak °et¥zeny za sebe a vytvá°í poté po z°et¥zení samotný výstup systému TTS.
3.2.5 Microsoft Speech API (SAPI) Microsoft Speech API (nadále jen
SAPI) je softwarová vrstva, která se nachází na úrovni
mezi aplikací a speech enginem a povoluje t¥mto vrstvám spole£n¥ komunikovat. Vývojá°·m povoluje v jednoduché form¥ vyuºívat speech technologie a zárove¬ manipulovat se za°ízením audia, vlákny, atp. SAPI je vyvíjeno spole£ností
Microsoft a jeho první verze byla uvoln¥na v roce 1995 a
podporováno bylo systémem Windows 95 a Windows NT. Postupným vývojem bylo dosaºeno verze 4, která byla uvoln¥na v roce 1998. Mezi lety 1998-2000 pro²lo SAPI velkými zm¥nami a bylo kompletn¥ p°edesignováno a v roce 2000 byla uvoln¥na verze SAPI 5, která byla zp¥tn¥ kompatibilní. Od této verze se nadále pokra£uje v ozna£ování SAPI 5.X, kdy nyní je ve verzi 5.4. Hlavní objekty, kterými se vývojá°i zabývají, jsou SpVoice (coº je práv¥ SAPI) a TTS
Engine. T°etím objektem je UI komponenta, kterou engine m·ºe, ale i nemusí implementovat. Objekt SpVoice v sob¥ implementuje následující dva interface, se kterými m·ºe pracovat.
ISpVoice, který se stará o funkcionalitu TTS a ISpTTSEngineSite, do kterého jsou zapisovány eventy (události) a audio data. Stejn¥ tak TTS Engine implementuje dva interface a to ISpObjectWithToken, skrze který SAPI vytvá°í a inicializuje engine a ISpTTSEngine, skrze který SAPI p°istupuje k samotnému speech enginu. Poslední UI objekt, v p°ípad¥ implementace musí obsahovat ISpTokenUI, který zp°ístup¬uje SAPI ovládacímu panelu eventuáln¥ jiným aplikacím. Takováto hierarchie implementace je rozumná hlavn¥ v tom, ºe se aplikace stará pouze o hlasy, které jsou dostupné enginu. Engine se pak stará o to, jaké hlasy jsou v samotném po£íta£i (systému) dostupné. Ten v sob¥ totiº m·ºe mít nespo£et hlas·, aplikace v²ak ví pouze o tom aktuáln¥ pouºívaném. SAPI 5 vyuºívá
tokeny (obsahující CLSID objektu a dal²í jeho atributy), odkazující na
hlasy v systému. Jestliºe aplikace vyuºívá n¥jaký hlas, SAPI získá tento hlasový token z registru.
SpVoice se následn¥ doºaduje enginu o ISpObjectWithToken, kterým volá SetObjectToken. SetObjectToken enginu vrací ukazatel na token, a tento token na samotný hlas, ze kterého byl vytvo°en a t¥mito voláními se m·ºe engine nainicializovat hodnotami uloºenými v tokenu. Podobn¥ je nahráván i slovník a pravidla p°evodu znaku na zvuk. Jestliºe je engine vytvo°en, SAPI jej m·ºe za£ít volat vyuºitím ISpTTSEngine, který obsahuje dv¥ metody. Jedna z nich je GetOutputFormat, druhá pak
Speak. Metoda Speak je
hlavní funkce ISpTTSEngine interfacu. Enginu je poskytnut text, který se má p°e°íkat, výstupní formát, stránka, do které engine zapisuje výstupní data a události (eventy ). Metoda
3.2.
23
TEXT TO SPEECH
Obrázek 3.2: Diagram znázor¬ující SAPI objekty, jejich interface a propojení (zdroj: msdn.microsoft.com/en-us/library/ee431802%28v=vs.85%29.aspx)
Speak kon£í úsp¥²ným p°e°íkáním zadaného textu, pop°ípad¥ p°eru²ením s chybou, která v SpVoice nastala. Události (events ) p°edávají aplikaci informace z enginu. Ten vytvá°í n¥kolik typ· událostí, ve form¥ struktur, které jsou p°edávány SAPI. SAPI je poté odpov¥dné za p°edávání událostí ve vhodnou dobu (jestliºe nastanou). Vracení událostí je individuální a kaºdý program implementující SAPI má moºnost vyuºívat r·zné typy událostí. V aplikaci o syntéze rytmické recitace jsou pouºity t°i typy událostí:
Phoneme Event, Word Event
a
EndStream Event.
Phoneme Event je událost, která p°i kaºdém odchycení fonému p°edá atributy jí nále-
7 (int StreamNumber), který událost vyvolal. Jestliºe je
ºící. Prvním z nich je £íslo streamu
asynchronn¥ od°íkáváno více stream·, tato hodnota obsahuje £íslo práv¥ toho, který událost vyvolal. Dal²í hodnotou je pozice ve výstupním streamu, na které foném za£íná (object
StreamPosition ). T°etí hodnotou v po°adí je délka fonému (int Duration), udávaná v milisekundách. tvrtou a poslední pátou hodnotou jsou identika£ní £ísla (ID) následujícího (SpeechLib.SpeechVisemeFeature Feature ) a práv¥ zpracovávaného (short CurrentPhoneID )
fonému (viz obrázek 3.3). Pomocí tohoto identika£ního £ísla m·ºeme zjistit, o jaký foném se jedná.
Word Event stejn¥ jako Phoneme event p°i kaºdém odchycení (ov²em slova) p°edá atributy, které této události náleºí. Prvním atributem je stejn¥ jako u Phoneme Event £íslo
streamu. Druhý parametr je taktéº StreamPosition. T°etím parametrem je pozice charakteru - symbolu (int CharacterPosition ), na kterém slovo za£íná ve vstupním °et¥zci (indexováno od 0). Posledním parametrem je délka (int Length ), která odpovídá délce zadaného °et¥zce (slova). Poslední vyuºívanou událostí je EndStream Event, která obsahuje atributy StreamNumber a StreamPosition stejn¥ jako ob¥ p°edcházející. SAPI nám dává moºnost odchytávat více event·, neº je zmín¥no vý²e. Dal²ími událostmi jsou konkrétn¥ AudioLevel Event, Bookmark Event, EnginePrivate Event, Sentence Event, 7
Stream je proud p°enosu dat
24
KAPITOLA 3.
ROZBOR PROBLÉMU
Obrázek 3.3: Tabulka znázor¬ující ID foném·, p°edstavované symboly a p°íklady, kde se vyskytují (zdroj: msdn.microsoft.com/en-us/library/ee431802%28v=vs.85%29.aspx)
StartStream Event, Viseme Event a VoiceChange Event. V²echny eventy obsahují jiº zmi¬ované atributy StreamNumber a StreamPosition, pop°ípad¥ n¥jaké dal²í, které jsou vázány k dané události. Vý²e zmi¬ovaný popis SAPI se týká formy
TTS.
SAPI k tomu podporuje i takzvané
Speech Recognition, coº v p°ekladu znamená rozpoznání hlasu.
3.3 Midi V dob¥ rozvoje elektronické hudby, tedy v 70. letech 20. století, se za£aly zna£n¥ rozvíjet i elektronické nástroje pro tvorbu hudby. Tyto nástroje byly stále více populární, jejich cena se sniºovala a jejich kvalita se za£ínala zvy²ovat. Jeden velký problém v²ak byl, ºe kaºdý tento nástroj pracoval jinak a navzájem spolu nebyly kompatibilní. Kaºdá rma vyuºívala jiných zp·sob· komunikace mezi nástroji, jiných soubor· a jinak s audiem pracovala. Poté
Dave Smith,
zvukový inºenýr spole£nosti
Sequential Circuits,
p°i²el s nápadem stan-
dardu MIDI, který v roce 1981 za£al navrhovat. Hudební pr·mysl byl standardem MIDI nad²ený a v roce 1983 byla p°ijata první
MIDI specikace 1.0.
Mnoho spole£ností se k
t¥mto standard·m p°iklonilo, za£alo je pouºívat a byla zaloºena organizace
MMA
(Midi
Manufactures Association), udrºující (spravující) standardy MIDI. MIDI je zkratkou pro
Musical Instruments Digital Interface, tedy protokol umoº¬u-
jící komunikaci navzájem propojeným hudebním p°ístroj·m. Jedná se o posloupnost zpráv,
3.3.
25
MIDI
které mohou být ukládány do soubor·. Tyto audio soubory (formáln¥ji °e£eno:
Standardizované soubory MIDI
Standard
MIDI File, ve zkratce SMF) v sob¥ ukládající informace o názvu skladby, stop a hlavn¥ jaké nástroje pouºívat, aby mohla být skladba správn¥ p°ehrána. Obsahují po sob¥ jdoucí zprávy, které se skládají z událostí (events ), poznámek a p°íkaz· (commands ). Díky standardu MIDI m·ºeme jedním softwarem nebo hardwarem vytvo°it skladbu, kterou je poté moºné editovat, p°ehrávat, pop°ípad¥ s ní pracovat na jiném stroji (pop°. v jiné aplikaci). V dne²ní dob¥ je tém¥° kaºdý software pro práci s hudbou schopen na£ítání a ukládání soubor· MIDI, stejn¥ tak i jejich úprav¥. Hlavní výhodou MIDI je v dne²ní dob¥ velká podpora r·znými nástroji. Dal²í výhodou jsou velmi malé výsledné soubory, jelikoº v d°ív¥j²ích dobách, kdy byl standard MIDI vyvíjen, po£íta£e nebyly vybaveny hard disky, jako máme dnes, sb¥rnice a pam¥ti byly £asto velmi malé a byla pot°eba manipulovat s co nejkompaktn¥j²ími daty. Navíc dal²ím d·vodem vyuºívání malých dat byla rychlá korespondence s ostatními nástroji, kterým byla data doru£ována. V dne²ní dob¥ se tak mohou data MIDI objevovat v telefonech jako vyzván¥cí melodie, n¥kdy v r·zných hrách, atd. SMF se skládají z takzvaných chunks, jedním z nich je header chunk (hlavi£kový kus), který je práv¥ jeden. Dále obsahuje jeden £i více track chunks (kusy stop). Po t¥chto chunks nadcházejí samostatné MIDI events (události) s daty.
Obrázek 3.4: Vlevo jednotlivé adresy, uprost°ed data MIDI v binárním reºimu, vpravo data MIDI v hex reºimu (zelená header chunk, ºlutá track chunk, modrá MIDI events)
26
KAPITOLA 3.
ROZBOR PROBLÉMU
3.3.1 Header Chunk Obsahuje informace o samotné skladb¥, jako je formát, po£et stop a £asování.
Header chunk se ve standardizovaném MIDI souboru vyskytuje
vºdy a pouze jeden a
je to vºdy první údaj v souboru MIDI.
Header chunk je vºdy uvozen °et¥zcem
MThd
(chunk ID ) a jeho velikost je vºdy 6
(obsahuje vºdy 3 slova, Format Type, Number of tracks, Time division ). Následující hodnota je Format Type. V dne²ní dob¥ existují 3 formáty, v tomto atributu nabývají hodnot 0,1 a 2. Soubor MIDI typu 0 obsahuje pouze jednu stopu v celé skladb¥. Typ 1 obsahuje dv¥ a více stop, první z nich obsahuje informace o skladb¥ jako je nap°íklad název, £asové razítko, tempo, atd., druhá a následující poté obsahují data (events ), atp., specické pro daný track. Posledním typem 2 se uvozují soubory MIDI, které jsou kombinací p°edchozích dvou typ·. Obsahují více stop, kde v²ak kaºdá stopa obsahuje jiné sekvence. Tento typ je v²ak nejmén¥ £astý a vyskytuje se velmi z°ídka. Dále header chunk obsahuje informaci o po£tu stop. Poslední hodnotou header chunk je informace o £asování.
3.3.2 Track Chunk Obsahuje informace pro kaºdou stopu, jako je jméno stopy a události. Prvním atributem je op¥t ID, které je vºdy
MTrk.
Velikost tohoto kusu (chunk ) je
závislá na po£tu byt· pouºitých událostmi stopy. Následujícím parametrem jiº p°icházejí samotná data (events ). Tyto events jsou streamy denující informaci o dané sekvenci a jak je zahrána.
3.3.3 MIDI Events Prvním parametrem MIDI události je tzv. delta times, coº v p°ekladu znamená rozdíl, kdy má být provedena následující událost od události p°edcházející. Výsledek je tedy takový, ºe pokud je hodnota delta times rovna 0, událost se p°ehraje paraleln¥ (sou£asn¥) s událostí p°edchozí. Udává nám tedy £as, jak dlouho máme po£kat, neº zpracujeme událost nadcházející. Z t¥chto delta times tedy nemáme £as, kdy se ve skladb¥ akce zpracovává, ten v²ak m·ºeme vypo£ítat za pomoci tempa, jakým je track p°ehráván (implicitn¥ 120bpm) a £asování, které je denováno v header chunk. D·leºité je také upozornit, ºe delta times jsou £asto ve formátu
prom¥nné hodnoty délky, která je vysv¥tlena v kapitole
3.3.4.
Poté následuje typ události, které se d¥lí na 3 typy. Prvním z nich je
MIDI Channel Events
(viz tabulka
3.1)). Pro systém, který umí
£íst noty MIDI ze soubor· MIDI, pln¥ posta£uje £íst pouze tato data. Tato událost v sob¥ nese informace, o jakou událost se jedná, zde jsou moºnosti jako Note On, Note O, Note
aftertouch, Controller, Program Change, Channel Aftertouch a Pitch Bend.
3.3.
27
MIDI
TYPY UDÁLOSTÍ
HODNOTA
PARAMETR 1
PARAMETR 2
Note O
0x8n
Note number
Velocity
Note On
0x9n
Note number
Velocity
Note Aftertouch
0xAn
Note number
Aftertouch value
Controller
0xBn
Controller number
Controller value
Program Change
0xCn
Program number
-
Channel Aftertouch
0xDn
Aftertouch value
-
Pitch Bend
0xEn
Pitch value
Pitch value
Ve sloupci hodnota, n znamená £íslo kanálu, nabývá hodnot 0h aº Fh Tabulka 3.1: Tabulka znázor¬ující MIDI Channel Events
Druhým typem událostí jsou
Meta Events .
Prozatím existuje okolo 15 meta událostí,
které zde mohou být uloºena. Tyto události jsou nap°íklad Text Event, Copyright Notice,
Sequence a Track name, Instrument name, Lyrics, atd. Posledním t°etím typem jsou
Events.
System Exclusive Events,
známé také jako
SysEx
3.3.4 Variable length (Prom¥nná hodnota délka) V²echna data v souborech MIDI jsou ukládána ve formátu
Big-endian8 . Taktéº v¥t²ina
dat se ukládá ve formátu prom¥nné hodnoty délky. Ta je vyuºívána hlavn¥ pro delta times. Jednoduché vysv¥tlení, co znamená variable length:
Pokud je byte v¥t²í nebo roven
0x80 (tedy v desítkové soustav¥ hodnota 128), následující
byte je sou£ástí prom¥nné hodnoty délky. Jinak je tento byte posledním v prom¥nné délce.. Vysv¥tlení, pro£ se prom¥nná hodnota délky pouºívá, kdyº by data ²la jednodu²e zapisovat jako v tabulce 3.2 je jednoduché. V d°ív¥j²ích dobách, jak jiº bylo zmín¥no, nebyly po£íta£e vybaveny hard disky, pam¥tmi a jinými, jako dnes. Data, která mohla být ukládána, zasílána, atd. musela být £asto o velikosti v °ádech pár desítek, maximáln¥ n¥kolik set kB. Proto se designé°i a vývojá°i snaºili o co moºná nejkompaktn¥j²í zápis.
Delta time
Command (p°íkaz)
00 00 00 00
90 40 32
00 00 00 00
90 40 00
00 00 00 00
90 3E 2D
00 00 00 00
90 3E 00
Tabulka 3.2: Tabulka znázor¬ující zprávu MIDI bez vyuºití VLV
Zprávy MIDI vyuºívající prom¥nnou hodnotu délky jsou zapisovány v bytech. Kaºdý byte je rozd¥len do 2 £ástí, kdy první £ástí je bit ur£ující prom¥nnou délku a 7 bit· s daty. 8
Zp·sob uloºení binárních dat v pam¥ti PC, kdy nejvíce významný bit je uloºen na nejniº²í adrese
28
KAPITOLA 3.
ROZBOR PROBLÉMU
0x00 je p°i p°episu reprezentován hodnotou 00000000. 0 0000000). Tento první bit ur£uje, ºe tato hodnota je poslední hodnotou prom¥nné hodnoty délky. Z výsledné hodnoty 0000000 dostaneme op¥t 0x00. 7 Ve výsledku tak m·ºeme uchovat hodnotu maximáln¥ 2 -1=127. P°i v¥t²í hodnot¥ jak Pro p°íklad, delta time s hodnotou
Odd¥líme tedy první bit (
127 (v desítkové soustav¥) budeme postupovat obdobn¥.
0x81 0x70. Tato hodnota je po p°episu do binární soustavy 10000001 01110000. Odd¥líme tedy u obou byt· první bit, dostaneme 1 0000001 0 1110000. První bit v prvním bytu nám tedy °íká, ºe bude následovat dal²í hodnota. V Nyní p°evedeme nap°íklad
rovna
druhém bytu je tomu jiº jinak, hodnota je 0 a tak je to poslední £ást prom¥nné hodnoty
0000001 1110000. Jestliºe tento výsledek rozd¥líme po £tve°icích a doplníme zbylé bity nulami, dostaneme výsledek 0000 0000 1111 0000, po p°episu zp¥t do hexadecimální soustavy dostaneme výsledek 0x00F0 (0x00F0 a 0xF0 je totéº £íslo). Výsledek 0xF0 p°evedeme do desítkové soustavy a dostaneme £íslo 240, coº je celý ná² výsledek a tedy i hodnota atributu delta time. délky. Odstraníme v²ak tyto dva bity, dostaneme
Ve výsledku pak tedy víme, ºe máme £ekat 240 jednotek, pro provedení následující akce. A£koliv se zdá, ºe v tomto p°ípad¥ by bylo vhodn¥j²í nevyuºití prom¥nné hodnoty délky (jelikoº bychom hodnotou 0xF0 zabrali mén¥ pam¥ti neº 0x81 0x70), p°edstavme si skladbu, kde m·ºe být n¥kolik set akcí, které se budou p°ehrávat tém¥° za sebou (hodnota delta time bude men²í neº 128), museli bychom pro kaºdou tuto delta time akci rezervovat mnohem více bit·, neº kdyº variable length vyuºijeme. Výsledek zápisu s hodnotou prom¥nné délky pak m·ºe vypadat jako v tabulce 3.3. Jestliºe pak delta times p°evedeme na hodnotu desítkové soustavy, získáme výsledek z tabulky 3.4
Delta time
Command (p°íkaz)
00
90 3C 60
81 70
90 3C 00
00
90 3C 60
81 70
90 3C 00
Tabulka 3.3: Tabulka znázor¬ující zprávu MIDI s vyuºitím VLV v hexadecimální soustav¥
Delta time
Command (p°íkaz)
00
90 3C 60
240
90 3C 00
00
90 3C 60
240
90 3C 00
Tabulka 3.4: Tabulka znázor¬ující zprávu MIDI s vyuºitím VLV v desítkové soustav¥ (delta time)
3.4.
29
VYUITÍ V PRAXI
3.4 Vyuºití v praxi Hlavním cílem je pomoci za£ínajícím hudebním skladatel·m, kte°í nemají moºnost nahrát vokály se zp¥vákem, ale i producent·m, kte°í cht¥jí vytvo°it n¥co nového, n¥co zvlá²tního a n¥co opravdu £ist¥ elektronického. Stejn¥ tak i producent·m, kte°í by m¥li zájem sly²et skladbu je²t¥ p°ed tím, neº se zp¥vákem budou nahrávat. Mohlo by se tedy jednat o nástroj, který bude vytvá°et svým zp·sobem
prototyp skladby.
tel·m krok vytvá°ení vokál· (viz kapitola
Tím by se mohl uleh£it sklada-
3.1.5), kdy by místo nástroj· jako je nap°íklad
étna mohli vyuºít aplikace, která by imitovala zp¥váka. Znamenalo by to tedy, ºe hudební producent by m¥l lep²í p°ehled o samotné skladb¥. Hudebním stylem pro výstup programu nemusí být pouze hip hop, aplikace by m¥la být vyuºitelná i v elektronické hudb¥, ale i v jiných hudebních stylech. Zárove¬ se touto prací snaºím zjistit, zdali by bylo v·bec moºné vytvo°it °e²ení jiº existujícími technologiemi nebo zdali by bylo zapot°ebí vytvo°it systém od základního kamene. Jedná se o experimentální vývoj, jelikoº prozatím neexistuje systém, vyuºívající jiº vytvo°ených technologií v oblasti TTS s pokusem jejich vyuºití pro hudbu. Tato práce nemusí pomoci jen za£ínajícím hudebním producent·m, pop°ípad¥ producent·m hledající elektronický hlasový výstup rytmické recitace. M·ºe v²ak inspirovat vývojá°e k vytvo°ení úpln¥ jiného pomocného nástroje z jiº vytvo°ených technologií, kdy není zapot°ebí znát mnohdy i obtíºnou látku ze zcela odli²ných obor· (málokterý vývojá°, pokud to není jeho bezprost°ední zájem pop°ípad¥ obor na ²kole, atp., zná obory a problémy týkající
9
se lingvistiky , atp.).
9
Lingvistika je v¥da zabývající se p°irozeným jazykem
30
KAPITOLA 3.
ROZBOR PROBLÉMU
Kapitola 4 Návrh °e²ení
4.1 Aplikace Jak jiº ze zadání vyplývá, cílem práce je vytvo°it takový systém, který by pro zadaný text a vstup (sekvenci zpráv MIDI) vygeneroval odpovídající hlasový výstup. Bylo by tedy vhodné vytvo°it takovou aplikaci, která by byla spustitelná na co nejvíce p°ístrojích. Vzhledem k tomu, ºe nejvíce vyuºívané po£íta£e stále obsahují systém
MS
Windows, byl zvolen programovací jazyk C#. Zárove¬ díky tomu, ºe je .Net Framework automaticky instalován jiº v kaºdé nov¥j²í verzi t¥chto systém·, odpadá problém následného pot°ebného instalování dal²ích podp·rných program· a knihoven. V první fázi je d·leºitá uºivatelská akce a to konkrétn¥ zadání textu a importování sekvence zpráv MIDI (tedy souboru MIDI), aby m¥l program s £ím pracovat. Program by m¥l být uºivatelsky jednoduchý a jeho ovládání by m¥lo být intuitivní. M¥l by být také rychlý a výsledek generovat co nejrychleji. Manipulace s výsledným výstupem by taktéº m¥la být co nejjednodu²²í. V p°ípad¥, ºe uºivatel nezadá pot°ebné údaje (text nebo soubor MIDI), program mu dále nedovolí postupovat. V p°ípad¥, ºe uºivatel nahraje data, které nelze zpracovat, m¥l by na to být upozorn¥n a nem¥l by postupovat dále. Teoreticky by tedy m¥l být schopen program spustit a obsluhovat uºivatel, který s po£íta£em prozatím nemá tém¥° ºádné zku²enosti, bez v¥t²ích obtíºí. V dal²í fázi je d·leºité zjistit informace ze sekvencí MIDI, tedy porozum¥t jim a um¥t s nimi pracovat. V tomto p°ípad¥ jsem se nejprve pokou²el o co nejlep²í °e²ení pro uºivatele,
Fruity Loops Studio, Reaper, Cubase, atp. a tedy pokusit se aplikaci implementovat jako VST plugin, kte°í jiº mají zku²enost s vytvá°ením hudby v programech jako je nap°íklad které jsou hojn¥ vyuºívány p°i tvorb¥ hudby. Zde jsem v²ak narazil na velké problémy a tak jsem z tohoto úmyslu, po konzultaci s vedoucím práce a osobami v oblasti hudby a VST plugin· znalými, upustil (viz kapitola 7.1.4). Namísto toho jsem se rozhodl pro pom¥rn¥ jednodu²²í °e²ení stand-alone aplikace, kdy by sekvence MIDI byli obslouºeny MIDI parserem, tak, aby ze souboru MIDI aplikace vy£etla pot°ebná data a uloºila je tak, aby s nimi nadále mohla pracovat. V tomto p°ípad¥ je tedy d·leºité ze souboru MIDI p°e£íst, zdali je tento soubor validní a nadále postupn¥ zpracovávat jeho data a kaºdou p°edstavovanou notu si uloºit s informacemi o £ase, kdy za£ala (start time ) a jak dlouho trvala (duration ). K zji²t¥ní t¥chto atribut· je
31
32
KAPITOLA 4.
NÁVRH EENÍ
pot°eba znát i informaci o £asování a tzv. bpm (beats per minute ), coº znamená jednotku rychlosti rytmu hudby. Nadále je t°eba um¥t p°evést text na °e£, coº je provedeno systémem text-to-speech. Zde je nutné zachytit ur£ité události, jako je nap°íklad absolutní £as, kdy byl text (slovo, písmeno nebo spí²e foném ) od°íkán a trvání tohoto °e£eného textu. Vhodné bude si pamatovat celý výsledný výstup ve tvaru foném· pro p°ípad pot°eby. Tyto události je moºné zachytávat díky implementaci SAPI TTS i zjistit tak i jednotlivé pot°ebné parametry. Jelikoº aplikace umoº¬uje pracovat ve 2 módech, kdy se rytmizují slova dle sekvencí MIDI a kdy se rytmizují slabiky dle sekvencí MIDI (coº je p°ístup logi£t¥j²í, prakti£t¥j²í a hlavn¥ p°irozen¥j²í),musíme slova rozd¥lit po slabikách. Jelikoº neexistuje algoritmus, který by za v²ech okolností dokázal slovo rozd¥lit správn¥, bude nejjednodu²²í vyuºít pom¥rn¥ jednoduchého a srozumitelného algoritmu zkou²ení tvar· X-O do °et¥zce a zji²´ování, zdali tyto tvary °et¥zci odpovídají. V p°ípad¥, ºe by tento pom¥rn¥ jednoduchý a relativn¥ i kvalitní algoritmus selhal (tato situace by v²ak p°i zadání existujícího správného slova nem¥la nastat), m¥li bychom zajistit alespo¬ co nejsprávn¥j²í rozd¥lení na slabiky. Práce aplikace v prvním módu rytmizace slov dle sekvencí MIDI je výhodou hlavn¥ pro rychle od°íkávající se posloupnosti slov za sebou (tedy nap°íklad imitaci fast rapu). Druhý mód pak pro klasický hip hop, kdy rytmizace £asto probíhá hlavn¥ na základ¥ vyuºívaných slabik. V prvním módu v²ak p°i pouºití neúm¥rného rozloºení sekvencí MIDI (mnohem del²í noty neº £as trvání od°íkání jednoho slova, kdy jedna nota zprávy MIDI odpovídá tomuto jednomu od°íkanému slovu) vzniká problém s nep°irozeným roztaºením souhlásek (neexistuje dlouze °e£ené nap°íklad t, r, d, atp.). V druhém módu taktéº p°i neúm¥rném rozloºení sekvencí MIDI (tentokrát v²ak obrácen¥, v p°ípad¥ krat²ích not neº £as trvání od°íkání slabiky) vzniká problém, kdy se zkrácení neaplikuje pouze na samohlásky (a, e, i , o , u , y), ale i na souhlásky. Jestliºe tedy pro p°íklad nota v souboru MIDI odpovídající od°íkávané slabice bude krat²í, neº doba trvání od°íkání, nem·ºeme zkrátit jen samohlásku, jelikoº výsledný £as odrecitování by byl stále del²í neº trvání noty. Je tedy t°eba zkrátit celou slabiku, £ímº vznikne obdobný výsledek jako u módu prvního a mód rozd¥lování po slabikách tak ztrácí v ur£itých situacích smysl. Praktický p°íklad m·ºe být, nap°íklad pro notu trvající 200ms. Od°íkávaná slabika bude this [dh-ih-s], kdy dh je od°íkáno za 96ms, ih za 135ms a s za 145ms. Výsledná doba od°íkávání tohoto slova (jednoslabi£ného, tedy jedné slabiky) je 376ms. Aby ih vyzn¥lo a bylo sly²et, musíme ho teoreticky (a to pouze teoreticky) nechat od°íkávat alespo¬ 1ms. Zkrátit bychom tedy museli výstup o 96-1=95ms. Kdyº v²ak z výsledných 376ms ode£teme 95ms, dostaneme 281ms, coº je stále del²í doba, neº zadaná hodnota délky noty. Musíme tedy zkrátit i dh a s tak, aby výsledek byl správn¥ dlouhý. Nem·ºeme v²ak zkrátit jen dh a s, jelikoº výsledek by pak byl zna£n¥ zdeformovaný. Nejlep²í tedy bude zkrátit celou slabiku stejnou m¥rou. Poté bychom m¥li uloºit výsledek °e£eného textu, abychom s ním nadále mohli pracovat. Tuto funkci zajistí jednoduché uloºení do souboru formátu .wav. Vytvo°ení skriptu do programu
PRAAT
PRAAT
je také jednou z nezbytných v¥cí. Programem
se bude modikovat výsledný soubor z TTS, který se na£te, zmodikuje a zp¥tn¥
uloºí (pro p°ípad kontroly se uloºí jako nový zvukový soubor).
4.1.
33
APLIKACE
Skripty programu
PRAAT
jsou p°epsanou ekvivalencí provedení jednotlivých p°íkaz·
my²í. Nap°íklad pro vytvo°ení duration tier (doba trvání) ze zvukového objektu jsou v okenní aplikaci následující akce:
Tla£ítko Open -> Read from le -> vybrat soubor a potvrdit OK -> Kliknout na tla£ítko To Manipulation. . . -> zapsat parametry Time step, Minimum pitch, Maximum pitch a potvrdit OK -> kliknout na tla£ítko Extract duration tier (obrázek 4.1). Skript vypadá následovn¥:
Read from file... filename\_here \# filename\_here je cesta k souboru To Manipulation... 0.01 75 600 \# Time Step, minimum pitch, maximum pitch Extract duration tier
Obrázek 4.1: Na£tení objektu a postupné vytvo°ení duration tier v programu Praat
Pro prodluºování a zkracování °e£eného textu dle sekvence MIDI se pouºívá pouze du-
ration tier. Zde se pro prodlouºení, pouºijí na k°ivce duration dva a více bod·. První z nich pak zna£í aktuální rychlost, kterou by se m¥l výsledný soubor p°ehrávat, druhý bod zna£í rychlost, kterou se p°ehrávat za£ne (berou se v potaz p·vodní tzv.
razítka). Mezi t¥mito body se rychlost spojit¥ navy²uje, pop°ípad¥ sniºuje. Obrázek
£asová
4.2 znázor¬uje tvar duration k°ivky, která zajistí, ºe výstup bude do prvního
bodu p°ehráván rychlostí odpovídající rychlosti ve vstupním audio souboru (bude stejný), od tohoto bodu do bodu £íslo 2 se bude p°ehrávat postupn¥ zvy²ující se rychlostí a v druhém bod¥ tato rychlost bude dvojnásobkem rychlosti vstupního souboru (modikovaného souboru). Od bodu £íslo 2 do bodu £íslo 3 se bude výsledný soubor p°ehrávat rychlostí dvakrát vy²²í. Od bodu 3 do bodu 4 se rychlost za£ne postupn¥ sniºovat aº na 1,5ti násobek p·vodní rychlosti (p·vodního £asového razítka). Od tohoto bodu aº do konce se rychlost zrychlí 1,5x. V na²em p°ípad¥ v²ak poºadujeme, aby rychlost nebyla spojitá, obrázek
4.3 tedy
znázor¬uje, jak bude vypadat £ást výsledné k°ivky duration tier. Je obdobná jako obrázek 4.1.2 s tím rozdílem, ºe soubor se bude do 1. bodu p°ehrávat rychlostí p·vodního £asového razítka. Bod 2 se vyskytuje jen o 1ms (pop°ípad¥ mén¥) dále od bodu 1 a tak zm¥na rychlosti nebude spojitá a dá se °íci, ºe se okamºit¥ za£ne p°ehrávat rychlostí 2x vy²²í, neº p·vodní soubor aº k bodu 3. Zde se rychlost zmen²í na 1,5ti násobek p·vodního £asového razítka. Po vytvo°ení skriptu jiº bude sta£it spustit PRAATCON program, stejný program jako PRAAT, pracující v²ak v p°íkazové °ádce a ne jako okenní aplikace.
34
KAPITOLA 4.
NÁVRH EENÍ
Obrázek 4.2: K°ivka duration tier
Obrázek 4.3: K°ivka duration tier
4.2 Funk£nost P°i zapnutí programu se objeví hlavní okno. V tomto okn¥ bude uºivatel provád¥t v²echny akce. Po zapnutí tedy bude moci zapsat, pop°ípad¥ importovat ze souboru (ve formátu .txt), text. Na£te zde pomocí tla£ítka soubor MIDI, který se automaticky zpracuje. Budou zde také prvky, které bude t°eba nastavit, coº bude cesta ke sloºce pro výstup, kam se uloºí v²echny poºadované výstupní a do£asné soubory a sloºka, kde se nachází program
PRAATCON.
Tyto dva parametry se po vypnutí programu uloºí a p°i op¥tovném na£tení z·stanou nastaveny. Po zapsání textu by si uºivatel pro kontrolu mohl nechat zobrazit, kolik slov pop°ípad¥ kolik slabik text obsahuje, a£koliv se neo£ekává, ºe by program slouºil pro dlouhé texty (spí²e by se m¥lo generovat mén¥ textu a program by m¥l být pouºít vícekrát), i tak by mohl nastat okamºik, ºe uºivatel nebude v¥d¥t, kolik slabik £i slov je zde obsaºeno a program by mu m¥l v tomto poskytnout nápov¥du tak, aby nemusel tyto slabiky (slova) po£ítat a tak by mu mohl drobn¥ uleh£it práci. Dále bude moºnost vybrat, zdali chceme aplikovat sekvence MIDI na slabiky nebo na slova a bude moºno vybrat, zdali chceme ve výsledném souboru prodlouºit i mezery mezi slovy dle sekvencí MIDI.
4.2.
FUNKNOST
35
Po zadání v²ech parametr· se zp°ístupní tla£ítko pro zpracování. Po stisku tohoto tla£ítka se automaticky vyvolá p°e£tení a uloºení textu do souboru .wav, vytvo°ení skript· a spu²t¥ní programu
PRAATCON
s parametry automatického na£tení skript· a jejich zpracování.
Následn¥ se uloºí výstupní soubor .wav, který bude moºné p°ehrát a hlavn¥ pouºít ve skladb¥.
36
KAPITOLA 4.
NÁVRH EENÍ
Kapitola 5 Implementace, realizace
Následující obrázek 5.1 blíºe popisuje strukturu, chování a postup práce programu.
Obrázek 5.1: Struktura programu, propojení t°íd, ukládání a volání soubor·
5.1 Volba technologie Pro realizaci bakalá°ské práce bylo vyuºito následujících technologií a softwaru:
5.1.1 .Net Framework, C# Objektov¥ orientovaný programovací jazyk, vyvíjený rmou
Microsoft.
Je zaloºen na
jazycích C++ a Java. Pro spu²t¥ní aplikací psaných v jazyce C# je nezbytná platforma .Net Framework, do které je p°ekládán kód jazyka C#. Z této platformy je kód (v jazyce CIL - Common Intermediate Language ) nadále p°ekládán do byte kódu, ten následn¥ generuje nativní kód, která je zpracováván procesorem.
37
38
KAPITOLA 5.
IMPLEMENTACE, REALIZACE
5.1.2 Microsoft Speech API (SAPI) Systém pro syntézu °e£i od spole£nosti Microsoft.
5.1.3 PRAAT (Praatcon) Aplikace ur£ená p°eváºn¥ fonetik·m. Program s freeware softwarovou licencí pro analýzu °e£i ve fonetice. Moºnost spu²t¥ní tém¥° na v²ech opera£ních systémech (
Mac, GNU/Linux). Hlavní výhodou v p°íkazové °ádce (Praatcon).
Windows,
je moºnost vytvá°ení skript· a spou²t¥ní programu
5.1.4 Microsoft Visual Studio 2010 Vývojové prost°edí, v n¥mº byl nástroj pro syntézu rytmické recitace programován.
5.2 Popis t°íd Aplikace je rozd¥lena do n¥kolika t°íd:
• MidiFile.cs,
t°ída obsahuje algoritmus pro MIDI parser a p°evod variable length
• Phoneme.cs, t°ída p°edstavující fonémy
slov, rozhoduje, zdali je foném souhláskou £i
samohláskou
• PraatScript.cs, skripty a spou²tí
t°ída obsluhující skripty do programu
PRAAT,
PRAAT,
vytvá°í v²echny
pracuje s List<Word> napln¥ným v TextToSpeech.cs,
stejn¥ tak i s MidiFIle.cs
• TextToSpeech.cs, • Word.cs,
t°ída obsluhující SAPI (TTS), vyvolává PraatScript.cs
t°ída obsahující text a fonémy z TTS p°eloºeného textu, pracuje s Pho-
neme.cs
• FormMain.cs,
t°ída obsluhující hlavní okno aplikace, volá TextToSpeech.cs p°i stisku
tla£ítka process, MidiFile.cs p°i stisku tla£ítka load MIDI.
5.3 Popis hlavních £ástí implementace kódu Vzhledem k délce kódu zde nebudu tento kód uvád¥t. Celý kód je moºné si prohlédnout na p°iloºeném médiu. Z d·vodu p°ehlednosti v²ak nebudu uvád¥t kód u kaºdé metody a pokusím se jen tyto £ásti kód· (hlavn¥ tedy metody) stru£n¥ popsat. Jejich funkci a smysl.
5.3.1 Phoneme.cs 5.3.1.1 isVowel() Metoda zjistí, zdali je daný foném souhláska (consonant ) nebo samohláska (vowel ). V p°ípad¥ souhlásky vrátí false, v p°ípad¥ samohlásky true.
5.3.
POPIS HLAVNÍCH ÁSTÍ IMPLEMENTACE KÓDU
39
5.3.2 Word.cs 5.3.2.1 rewriteOnRules() Metoda p°epí²e slovo, vyskytující se v prom¥nné text, skládané z foném· List
Phonemes na tvar samohlásek-souhlásek. V p°ípad¥, ºe znak na i-té pozici je souhláska, za i-tou pozici doplní x. V p°ípad¥, ºe se jedná o samohlásku, doplní na tuto pozici o.
5.3.2.2 getWordInSyllables() Metoda vrací tvar slova ve tvaru slabik (nap°. pro slovo hello vrátí pole s °et¥zci [xo, xo]).
5.3.2.3 divideIntoSyllables() Typy slabik (typesOfSyllables): "o", "xo", "ox", "xox", "xxo", "xxxo", "xoxx" Metoda rozd¥luje zadané slovo do tvaru slabik. Díky tomu, ºe po£et slabik ve slov¥ je stejný jako po£et samohlásek, víme, kolikrát budeme procházet dané slovo. Zárove¬ budeme procházet pole °et¥zc·, kde jsou uloºeny existující tvary slabik (typesOfSyllables ). Tvary slabik jsou za sebou se°azeny od nej£ast¥j²ího výskytu po ten nejmén¥ £astý. Tyto tvary budeme procházet od posledního prvku (nejmén¥ £astého výskytu) po prvek s nej£ast¥j²ím výskytem. Jestliºe slovo p°epsané ve tvaru samohlásky-souhlásky bude svým koncem odpovídat °et¥zci na aktuální pozici tvar· slabik, ur£íme, ºe se jedná práv¥ o tuto slabiku a tento konec ze slova ve tvaru samohlásky-souhlásky odstraníme. Takto postupujeme n-krát, kde n p°edstavuje po£et slabik (samohlásek) ve slov¥. V p°ípad¥, ºe jsme provedli v²echny kroky, ale p°epis slovo p°epsané do tvaru samohláskasouhláska není prázdné, naplníme celé slovo znovu a budeme postupovat hor²ím zp·sobem rozkládání a to tím, ºe slovo rozd¥líme po kaºdé samohlásce. Pokud se budeme vyskytovat na konci °et¥zce a neexistuje tam jiº ºádná samohláska, zbylou £ást uloºíme jako novou slabiku. Tento algoritmus je pouze záchranný a to v p°ípad¥, ºe by uºivatel zadal slovo, které by se nedokázalo rozloºit (jako nap°íklad v p°ípad¥ £eského jazyka vyslovení slova pppppppprý).
5.3.2.4 countOfSyllables() Metoda vrací po£et samohlásek ve slov¥, tedy potaºmo i po£et slabik ve slov¥.
5.3.3 TextToSpeech.cs 5.3.3.1 Phoneme() Event handler (odchycení události) pro TTS, kdy odchycená událost je foném. Jestliºe je ID fonému rozdílné od ID 7 (coº je _ silence, který se pouºívá na interpunkci, jako jsou £árky, te£ky, za£átek v¥t, atp.), uloºím foném do List<Word> wordList, na poslední pozici slova jako nový foném.
40
KAPITOLA 5.
IMPLEMENTACE, REALIZACE
5.3.3.2 Word() Event handler (odchycení události) pro TTS, kdy odchycená událost je slovo. V p°ípad¥ vyvolání této metody p°idám nové slovo do List<Word> wordList.
5.3.3.3 End() Event handler pro odchycení konce (p°eloºení TTS je hotovo). Pokud bylo kliknuto na tla£ítko Process, je hodnota prom¥nné saveAndProcess true a tak se zpracuje TTS, vytvo°í skript do programu
PRAAT
a tento program se spustí. Pokud je hodnota false, bylo klik-
nuto na tla£ítko Show count of words/syllables a tak pouze zobrazím po£et slov, slabik v zadaném vstupním °et¥zci (v textu).
5.3.3.4 SayText() Pokud není zadaný text prázdný, je vytvo°ena SpVoice instance, které jsou p°i°azeny
event handlers (Phoneme, Word, End), a je p°e£ten p°eloºen zadaný text systémem TTS. Od°íkání je asynchronní a tak by se nadále mohlo pracovat, ov²em události jsou zpracovávány aº po ukon£ení p°ekladu a tak se zavolá metoda, která zajistí blokaci programu, dokud nebudou akce TTS dokon£eny (WaitUntilDone ). Pokud TTS skon£ilo chybou, je zobrazena.
5.3.3.5 SaveWAVle() Metoda funguje tém¥° stejn¥ jako metoda SayText() s rozdílem, ºe výsledek není jen p°ed£ítán, ale je ukládán jako TEMP.wav soubor do zvoleného adresá°e.
5.3.3.6 addWordInList() Metoda pro p°idání odchyceného slova do wordList.
5.3.3.7 ShowSyllablesCounts() Metoda pro zobrazení slov a slabik v textu. V tomto p°ípad¥ bylo kliknuto na tla£ítko Show count of words/syllables a tak se zadaný text a výsledek nebude zpracovávat nadále, pouze se ukáºe po£et slov a slabik v zadaném °et¥zci.
5.3.3.8 ProcessTTS() Metoda pro zpracování, po dokon£ení akcí TTS, tedy uloºení souboru a vytvo°ení a spu²t¥ní skript·. Pokud bylo vybráno, ºe se slovo má rozd¥lovat dle slabik a zadaný °et¥zec nebude obsahovat stejný po£et slabik jako soubor not MIDI, zpracování kon£í chybou, která je zobrazena na monitoru. Stejn¥ tak i v p°ípad¥ vybrání slov. Pokud je v²e v po°ádku, soubor se uloºí a vytvo°í se skripty do programu programu
Praatcon.
PRAAT
a spustí se jejich zpracování v
5.3.
POPIS HLAVNÍCH ÁSTÍ IMPLEMENTACE KÓDU
41
5.3.4 PraatScript.cs 5.3.4.1 getPhonemeStartTime() Metoda vrátí £íselnou hodnotu startTime posledního fonému posledního slova. Tato hodnota zna£í, kdy tento poslední foném za£al.
5.3.4.2 getPhonemeDuration() Obdobn¥ jako metoda getPhonemeStartTime() je vrácena £íselná hodnota duration posledního fonému posledního slova. Tato hodnota zna£í, jak dlouho je foném od°íkáván.
5.3.4.3 createScript() Metoda vytvo°í základní skript, který je uloºen jako tempPraatScript.praat na disk do zvolené sloºky pro do£asné soubory. Dále pokud uºivatel vybral rozd¥lené dle slov £i slabik rozhodne, jaká metoda se má nadále provád¥t a poté zavolá processScripts(), která zapne
Praatcon
a zpracuje skripty a soubory.
5.3.4.4 createScriptPoints() Metoda vytvá°í £ást skriptu, do duration tier, kde jsou vytvá°eny body na k°ivce duration. Vytvá°í bod pro startovní pozici (kde souhláska, slovo nebo slabika za£íná), pro koncovou pozici (kde souhláska, slovo nebo slabika kon£í) a nastaví jim hodnotu, která zna£í, jak se mají zv¥t²it oproti základnímu £asovému razítku (£as základního £asového razítka / (koncová pozice po£áte£ní pozice)).
5.3.4.5 createDurationTier() Tato metoda vytvá°í k°ivku duration tier, k°ivka z této metody je vytvá°ena pro slabiky. Nejprve je vypo£ítána hodnota xmax, coº je hodnota rovna ukon£ení posledního fonému posledního slova. Metoda tedy zavolá getPhonemeStartTime() a k této hodnot¥ p°i£te get-
PhonemeDUration(). Tím se získá £asový údaj ukon£ení posledního fonému posledního slova. K této hodnot¥ je p°ipo£teno 0,01 (coº zaji²´uje ur£itou rezervu). Poté je zji²t¥no, jestli mají rozd¥lovat i mezery mezi slovy, pokud ano, bod· na k°ivce bude o n¥co více. Jestliºe pro kaºdou notu musíme vytvo°it 4body (ukon£ení p·vodního £asového razítka, za£átek nového £asového razítka, ukon£ení nového £asového razítka, za£átek p·vodního £asového razítka), pro kaºdou mezeru mezi slovy budeme muset mít taktéº 4body. Jestliºe je N slov, mezer mezi slovy je N-1. Výsledný po£et bod· v p°ípad¥ roztaºení mezer mezi slovy je (po£et not)*2+(po£et slov -1)*4. V p°ípad¥, ºe se mezery neroztahují je po£et bod· roven (po£et not)*2. Jelikoº nota je p°edstavována v protokolu MIDI událostmi Note On a Note O , pro zji²t¥ní délky noty pot°ebujeme ob¥ tyto hodnoty. Od £asu události Note O poté ode£teme hodnotu £asu Note On a tím získáme délku noty. Tedy pro kaºdou zprávu MIDI budeme procházet a zji²´ovat, zdali je zbytek po d¥lení dv¥ma roven nule. Pokud ano, jedná se o Note On. Pokud ne a je tedy roven jedné, jedná
42
KAPITOLA 5.
IMPLEMENTACE, REALIZACE
se o Note O. V p°ípad¥ Note on pouze uloºíme hodnotu absolutního £asu. Jestliºe jiº tuto hodnotu máme uloºenou a p°ijali jsme hodnotu Note O, vypo£ítáme délku noty a za£neme procházet slova z prom¥nné wordList. Jestliºe absolutní po£et slabik (i s práv¥ procházeným slovem) je men²í neº práv¥ zpracovávaná událost, neprovádíme nic a pouze zkusíme následující slovo. Op¥t se provede kontrola, dokud nenajdeme slovo, které má absolutní po£et slabik (v²echny doposud existující slabiky) vy²²í, neº je index aktuáln¥ zpracovávané zprávy MIDI. Tyto kroky nám zajistí, ºe jakmile nalezneme slovo s absolutním po£tem slabik vy²²ím, je práv¥ první. V tom p°ípad¥ za£neme postupn¥ procházet slabiky slova a za£neme stejným zp·sobem zji²´ovat, jestli daná slabika je práv¥ ta, která odpovídá práv¥ zpracované not¥ MIDI, tedy jestliºe má stejný index (jestliºe je na stejné pozici), jako nota MIDI. V p°ípad¥, ºe slabika nemá stejný index, je p°esko£ena a za£ne se zpracovávat slabika následující. V p°ípad¥ nalezení správné slabiky se stejným indexem jako je nota MIDI za£neme procházet prvky této slabiky (tedy jednotlivé hlásky). Pokud je aktuáln¥ zpracovávaná hláska samohláskou, je uloºena pozice jejího startTime a hodnota endTime, která je rovna start-
Time+Duration této samohlásky. Pokud je zpracovávaná hláska souhláskou, od délky noty je ode£ten £as trvání této souhlásky. To nám zajistí, ºe nebudeme protahovat souhlásky, které dlouze nem·ºeme °íci (protáhnout m·ºeme pouze samohlásky, aº na ur£ité výjimky, které nejsou zahrnuty, jelikoº je jich mnoho a záleºí £asto na kontextu slova). Dále víme, ºe v jedné slabice se vyskytuje práv¥ jedna samohláska, víme tedy, ºe nemusíme vytvá°et více bod· a vytvo°íme pouze 4 body pro jednu slabiku. Jakmile je tento proces dokon£en, zjistíme, zdali zbylá délka noty není záporná (v p°ípad¥ jiº vý²e zmi¬ovaném, jestliºe by se v²echny souhlásky od°íkávaly déle neº samostatná délka noty). Jestliºe délka noty z·stala záporná, celý proces provedeme znovu a v tomto p°ípad¥ nebudeme zkracovat pouze samohlásky, ale stejn¥ tak zkrátíme i souhlásky. Zárove¬ p°i tom nebudeme vytvá°et body na pozicích samohlásek, ale první 2 body k°ivky vytvo°íme na za£átku slabiky, druhé 2 body poté vytvo°íme na konci slabiky. Zárove¬ je zji²t¥no, jestli daná slabika je poslední slabikou slova. Pokud ano, ale zárove¬ slovo není posledním v textu, m¥li bychom následn¥ prodlouºit nebo zkrátit mezeru mezi slovy tak, aby tato mezera odpovídala struktu°e not MIDI. Postup je analogický k postupu prodlouºení slabik, pouze jako startovní £as pouºijeme startTime+duration posledního
fonému poslední slabiky slova. Jako koncový £as poté pouºijeme první foném slova následujícího. Jejich rozdíl protáhneme o dobu rozdílu mezi za£átkem následující MIDI zprávy a ukon£ení aktuální zprávy MIDI. Pro vytvo°ení bod· je zavolána metoda createScriptPoints() s parametry startPos, end-
Pos, duration a points. Tento proces opakujeme tak dlouho, dokud nejsou zpracována v²echna slova a v²echny jejich slabiky.
5.3.4.6 createDurationTierWords() Tato metoda funguje obdobným zp·sobem jako metoda createDurationTier() s tím rozdílem, ºe nevytvá°í body pro slabiky, ale pro slova. Metoda tedy nehledá slabiky odpovídající zprávám MIDI, ale slova. Z t¥chto slov se pouºijí parametry startTime prvního fonému ve slov¥ a endTime, coº je startTime a k n¥mu p°i£tena hodnota duration posledního fonému ve slov¥.
5.3.
POPIS HLAVNÍCH ÁSTÍ IMPLEMENTACE KÓDU
43
Prodlouºení pop°ípad¥ zkrácení mezer pak probíhá p°i kaºdém zpracovaném slovu.
5.3.4.7 processScripts() Je metoda, která pouze spustí program
Praatcon s parametry, které ur£ují hlavní script,
duration tier script a vstupní a výstupní soubor.
5.3.5 FormMain.cs 5.3.5.1 Form1_Load(), newToolStripMenuItem_Click() Metoda provád¥ná p°i nahrání formulá°e, volá metodu restartFields(), která resetuje v²echny vyuºívané prom¥nné.
5.3.5.2 Form1_FormClosed(), exitToolStripMenuItem_Click() Provádí se p°ed zav°ením okna, ukládá text z textbox· txtPraatcon a txtTempFiles (tedy cesty k programu
Praatcon
a do£asným - výstupním soubor·m) do programu tak, aby p°i
následujícím spu²t¥ní tyto hodnoty byly stále uloºeny a nemuseli se znovu na£ítat.
5.3.5.3 btnProcess_Click(), showSyllablesCountsToolStripMenuItem_Click() Na£te hodnotu z textboxu, kam se zapisuje text skladby, nastaví prom¥nnou saveAnd-
Process na true (v druhé metod¥ na false ), aktualizuje TextToSpeech.cs a zavolá metodu SayText() z t°ídy TextToSpeech.
5.3.5.4 btnLoadMidi_Click() Metoda pro na£ítání soubor· MIDI. Zobrazí dialog (okno) pro nalezení souboru MIDI. Pokud je soubor MIDI vybrán a je potvrzeno vybrání tla£ítkem OK, cesta k souboru se p°edá t°íd¥ MidiFile, která se souborem nadále pracuje (£te zprávy MIDI a ukládá je). Následn¥ zprávy MIDI se°adí, a pokud jsou zadány v²echny pot°ebné atributy (ve formulá°i), zp°ístupní tla£ítko process. Pokud soubor MIDI nebyl vybrán, nic se neprovádí.
5.3.5.5 btnLoadText_Click() Metoda pro na£tení textového souboru (textu písn¥). Pokud je soubor vybrán, zobrazí obsah souboru (text) v textboxu formulá°e.
5.3.5.6 btnTempPath_Click() Metoda obsluhující vybrání sloºky pro do£asné a výstupní soubory.
44
KAPITOLA 5.
IMPLEMENTACE, REALIZACE
5.3.5.7 btnPraatConPath_Click() Metoda zaji²´ující vybrání sloºky, kde se nachází program
Praatcon, pot°ebný pro správ-
nou funkci programu. Po vybrání sloºky volá metodu checkPraatcon() s parametrem cesty této sloºky.
5.3.5.8 txtTempFiles_TextChanged() Metoda zji²´ující, v p°ípad¥ zm¥ny textu v jednom z 3 textbox·. Pokud je n¥jaký textbox pozm¥n¥n, metoda zjistí, zdali je stále zapsán alespo¬ n¥jaký text, nastavena alespo¬ n¥jaká sloºka, pokud ne, metoda znep°ístupní tla£ítko Process.
5.3.5.9 txtSpeakText_Enter() Metoda resetující checkbox, který ur£uje, zdali má být text rozd¥lován i s mezerami. V p°ípad¥, ºe je ozna£en (aktivován) a text je pozm¥n¥n, automaticky se odzna£í.
5.3.5.10 checkWithPauses_CheckedChanged() Pokud je checkbox ozna£en, do textu se za kaºdou mezeru p°idá °et¥zec .., který signalizuje, ºe na tomto míst¥ se °e£ený text bude roztahovat. V opa£ném p°ípad¥ pak tyto °et¥zce jsou nahrazeny mezerami.
5.3.5.11 restartFields() Metoda pro resetování vyuºívaných prom¥nných.
5.3.5.12 checkPraatcon() Metoda pro zji²t¥ní, zdali se ve vybrané sloºce nachází program
Praatcon.
Jestliºe ne,
je zobrazena chyba a uºivatel musí vybrat cestu znovu.
5.3.5.13 updateTextToSpeech() Aktualizace t°ídy TextToSpeech (nová inicializace).
5.3.5.14 trackBar1_Scroll() Metoda zobrazující hodnotu BPM (beats per minute), jestliºe se pozm¥ní hodnota trac-
kBaru.
5.3.6 MidiFile.cs 5.3.6.1 ReadUint16BE(), ReadUint32BE(), Read3ByteBE() Tyto metody £tou 2,4 a 3 byty ve tvaru big-endian.
5.3.
POPIS HLAVNÍCH ÁSTÍ IMPLEMENTACE KÓDU
45
5.3.6.2 ReadVariableLength() Metoda £te data hodnoty prom¥nné délky a vrací jejich hodnotu v desítkové soustav¥.
5.3.6.3 SortEvents() Slouºí pro se°azení dat MIDI.
5.3.6.4 CountEvents() Metoda vrací po£et dat v souboru MIDI.
5.3.6.5 compare() Porovnává dv¥ události MIDI, v p°ípad¥, ºe jejich absolutní £as je stejný, metoda je porovnává podle pozice. V p°ípad¥, ºe se jedná o stejné události, vrací metoda 0. V ostatních p°ípadech vrací 1 nebo -1 v závislosti na po°adí událostí.
5.3.6.6 MidiFile() Konstruktor t°ídy, který zárove¬ prochází a £te celý soubor MIDI. Na základ¥ struktury souboru MIDI rozd¥luje data do prom¥nných a atribut·. V p°ípad¥ ²patných dat vrací výjimku (exception ) blíºe popisující problém, který vznikl.
46
KAPITOLA 5.
IMPLEMENTACE, REALIZACE
Kapitola 6 Testování
Pro testování aplikace (jejího uºivatelského rozhraní) byl zvolen test s uºivateli (participanty). Testování samotné funk£nosti aplikace, problém·m a °e²ením se v¥nuji v kapitole 7.1.
6.1 Cílová skupina Cílovou skupinou tvo°í mlad²í uºivatelé, zejména pak hudební producenti, kte°í jiº mají ur£ité základy v hudební oblasti. Zárove¬ v²ak um¥jí, alespo¬ na základní úrovni, ovládat po£íta£. V¥dí, co je to soubor, v¥dí, kam se v¥t²inou zapisuje text a mají p°edstavu o tom, co je tzv. radio button a jak se s ním pracuje. Program by m¥l v²ak být velice jednoduchý a intuitivní a tak byl v testu zahrnut i uºivatel, který se s tvorbou hudby na PC je²t¥ nikdy nesetkal. Jako povinná podmínka vzhledem k nedostupnosti £eského rozhraní u TTS je, ºe by m¥l uºivatel znát anglický jazyk (alespo¬ £áste£n¥).
6.2 Screener Pro vybrání správných participant· poslouºil tzv. screener. Tedy dotazník, který má za úkol vybrat vhodné kandidáty. Jsou zde dv¥ £ásti, neve°ejná £ást, která slouºí ideální rozvrºení odpov¥dí a ve°ejnou, tedy otázky, které jsou potencionálním participant·m pokládány.
•
Vyuºíváte po£íta£? (v práci, ke studiu, ve volném £ase) (Ano-3, Ne-0)
•
Skládal/a jste jiº n¥kdy hudbu? (Ano-2, Ne-1)
•
Skládal/a jste jiº n¥kdy hudbu na po£íta£i? (Ano-1, Ne-2)
•
Máte p°edstavu, co znamenají soubory .wav, .midi? (Ano-3, Ne-0)
•
Umíte anglicky? (písemnou formou, alespo¬ n¥kolik slov) (Ano-3, Ne-0)
47
48
KAPITOLA 6.
TESTOVÁNÍ
6.3 Pre-test dotazník •
Setkali jste se jiº s tvorbou hudby na po£íta£i? Máte alespo¬ £áste£n¥ p°edstavu o tom, jak se hudba na PC skládá?
•
Setkali jste se jiº n¥kdy se systémem text-to-speech? Pokud ano, kde?
•
Posloucháte hudební styl hip hop?
•
Co by podle vás m¥l um¥t program, který p°evádí text na recitaci ve stylu hip hop?
6.4 Úlohy testu •
Instalace aplikace a prvotní spu²t¥ní (rozbalení soubor· do sloºky)
•
Nastavení poºadovaných sloºek (nastavení sloºky pro výstupní a do£asné soubory, nastavení sloºky, kde se vyskytuje program Praatcon)
•
Zapsání textu a zobrazení po£tu slov (slabik)
•
Zapsání textu a zpracování, zpracovat s mezerami po slabikách a pouºít výsledný soubor (p°ekopírovat do jiné sloºky)
6.5 Od·vodn¥ní úloh testu Instalace aplikace je nezbytný krok pro vyuºití nástroje, stejn¥ jako nastavení poºadovaných sloºek. Uºivatel by m¥l mít základní p°ehled, kam se jeho výsledná data uloºí a musí v¥d¥t, kde se vyskytuje program Praatcon, bez kterého nástroj nebude fungovat. Zapsání textu, zobrazení po£tu slov a následné zpracování je poté hlavním smyslem aplikace a zkoumá, zda-li se uºivatel dokáºe v programu vyznat a jestli program dokáºe vyuºívat. Negativní výsledek by poté byl, pokud by uºivatel nebyl schopen tyto akce provést, jelikoº by nástroj nemohl plnit sv·j ú£el.
6.6 Post-test dotazník •
Oznámkujte aplikaci (jako ve ²kole, 1 výborný, 5 ²patný)
•
S £ím jste byl/a spokojen/a?
•
S £ím jste spokojen/a nebyl/a?
•
Jaké zm¥ny byste provedl/a?
•
Doporu£il/a byste aplikaci ostatním?
6.7.
PRB
H TESTOVÁNÍ
49
6.7 Pr·b¥h testování
6.7.1 Participant 1
6.7.1.1 Analýza uºivatele, Pre-test dotazník Pracující mladá sle£na vyuºívající po£íta£ hlavn¥ pro zábavu ve volném £ase a to hlavn¥ pro surfování po internetu. Se skládáním hudby se nesetkala ani ve svém ºivot¥, ani na po£íta£i. Se soubory .wav a .midi se setkala v oblasti telefon·, kde tyto formáty jsou vyuºívány jako audio soubory pro p°ehrávání hudby. Se systémem TTS se setkala v navigaci. Hip hop nepat°í mezi její oblíbené styly a tak ani nemá p°edstavu, co by takový systém m¥l um¥t.
6.7.1.2 Pr·b¥h testu V prvním úkolu se vyskytly men²í problémy, vzhledem k rozbalovacímu archivu, kdy problém není t°eba instalovat, sta£í ho v²ak pouze rozbalit. Sle£na byla zmatená, co s tímto souborem má ud¥lat. Po rozbalení a zapnutí nejprve spustila aplikaci Praatcon, kdyº se nic nestalo, spustila aplikaci syntézy rytmické recitace. V p°ípad¥ druhého úkolu, po krátkém prohlíºení hlavního (vrchního) menu, neprobíhaly ºádné obtíºe aº na men²í zmatení, co to znamená popis TEMP les path. P°i t°etím úkolu probíhalo zapsání textu bez jakýchkoliv obtíºí, problém nastal v p°ípad¥ zobrazení po£tu slov, participantka nem¥la tu²ení, ºe by se nabídka Show count of words/syllables mohla vyskytovat v hlavním menu pod nabídkou help. Úlohu pak splnila jiným zp·sobem, pokusem nahrát soubor MIDI a spustil zpracování, coº vzhledem k r·znému po£tu zpráv MIDI a slabik zapsaných v textu zobrazilo chybu a tak zjistila po£et slabik/slov v textu. Poslední úkol probíhal bez v¥t²ích obtíºí, nastavení prob¥hlo v po°ádku. Spu²t¥ní zpracování stejn¥ tak. Malý problém vznikl ve chvíli, kdy uºivatelka nev¥d¥la, pro£ nemá p°ístupné tla£ítko Process aº poté si v²imla, ºe soubor MIDI není nahrán.
6.7.1.3 Post-test dotazník Aplikace se uºivatelce líbila, p°i p°ehrání výstupního souboru se zasmála a aplikaci ohodnotila známkou 2 se zd·vodn¥ním, ºe pro nová£ka v této oblasti je zorientování se v programu p°eci jenom pon¥kud sloºit¥j²í. Hlavn¥ pak názvy nic ne°íkajících program· a popisk· s výrazy. Kdyby znala n¥jakého hudebního producenta hip hopu, ur£it¥ by se mu o aplikaci alespo¬ zmínila.
6.7.2 Participant 2 6.7.2.1 Analýza uºivatele, Pre-test dotazník Muº vyuºívající po£íta£ pouze ve volném £ase. Muzikant, ov²em v oblasti po£íta£· nová£ek a se skládáním hudby se je²t¥ nesetkal, stejn¥ tak ani s TTS. Soubory formátu .wav a .midi stejn¥ jako participantka 1 vyuºívá v mobilním telefonu. V oblasti programu pro hip hop se domnívá, ºe by hlavní d·raz m¥l být na správnou rytmiku textu a hudby. Program by tak m¥l správn¥ rytmicky reagovat na údaje ze souboru MIDI.
50
KAPITOLA 6.
TESTOVÁNÍ
6.7.2.2 Pr·b¥h testu Stejn¥ jako u participantky 1 se vyskytly problémy p°i instalaci programu, uºivatel byl zmatený, co se souborem formátu .zip má d¥lat. Druhý úkol probíhal bez obtíºí, sloºky byly nastaveny správn¥. T°etí úkol op¥t p°inesl problém v oblasti nalezení správné nabídky, ov²em uºivatel si prohlédnul v²echny nabídky a po krátké dob¥ tak správnou nabídku na²el. Poslední úkol p°inesl problém z d·vodu hor²í znalosti anglického jazyka a tedy ²patného spo£ítání slabik. Po zobrazené chyb¥, která hlásila nemoºnost zpracování, se pokusil chybu opravit, ov²em op¥t byl po£et slabik s událostmi souboru MIDI rozdílný. Zpracování se tedy povedlo aº na t°etí pokus.
6.7.2.3 Post-test dotazník Uºivatel m¥l výhrady v·£i instalaci, z d·vod· op¥t nic ne°íkajících názv·. V oblasti samostatného programu nem¥l participant ºádné výhrady, aº na samotný výstup programu, který zní nekvalitn¥. Program ohodnotil stejn¥ jako známkou 3 kv·li výslednému mén¥ kvalitnímu výstupu (kdy by u hudby m¥ly být vyuºity mnohem kvalitn¥j²í výstupy).
6.7.3 Participant 3 6.7.3.1 Analýza uºivatele, Pre-test dotazník Mladý hudební producent vyuºívající po£íta£ v práci, ve ²kole i doma ve volném £ase hlavn¥ pro skládání hudby. S TTS se setkal v telefonu, v navigacích a v PC programech. A£koliv hip hop neposlouchá, p°edstava o tom, co by m¥l um¥t je jasná, m¥l by mít ur£itý piano roll, kterým by se zadávala melodie, nastavení BPM, ke kaºdé not¥ mít moºnost napsání fráze, atp.
6.7.3.2 Pr·b¥h testu S instalací nem¥l participant ºádné problémy. Nastavení sloºek prob¥hlo bez problém·. T°etí úkol prob¥hl stejn¥ tak bez problém·. U £tvrtého úkolu byl participant zmaten z dvojí nabídky Process, která má stejnou funk£nost.
6.7.3.3 Post-test dotazník Aº na absenci jednodu²²ího editoru MIDI, piano rollu, atp. uºivatel nem¥l ºádné výhrady. Vyzdvihoval jednoduchost a funk£nost rozhraní, stejn¥ jako klasické a intuitivní popisky. Chyb¥la mu absence kontextové nápov¥dy, pop°ípad¥ statusbar, který by zobrazoval po£et slov a slabik. Program i p°es to ohodnotil známkou 2.
6.8.
51
NÁLEZY
6.8 Nálezy Nálezy, které se objevily p°i testování s uºivateli. Jsou se°azeny od nejzávaºn¥j²ích po nejmén¥ závaºné, dle priorit.
•
1, Nejvy²²í priorita, Závaºný nález, negativn¥ ovliv¬uje vyuºití aplikace, pop°ípad¥ dokonce vyuºívání zabra¬uje.
•
2, St°ední priorita, Nález, zhor²uje vyuºití aplikace, i p°es to je v²ak pouºitelná.
•
3, Nejniº²í priorita, Drobný nález, nemá vliv na vyuºívání aplikace.
6.8.1 Nález - zobrazení po£tu slov/slabik Priorita:
3
Nalezeno: Popis:
Participant 1, 2, 3
Zobrazení po£tu slov/slabik v textu v nabídce help. Dva uºivatelé m¥li velký
problém tuto nabídku najít, t°etí pak navrhoval lep²í °e²ení zobrazování po£tu slov.
Moºné °e²ení:
Doplnit status bar, kde by se informace o po£tu slov a slabik mohla vy-
skytovat.
Obrázek 6.1: Nález £íslo 1
6.8.2 Nález - intalace Priorita: Nalezeno: Popis:
2
Participant 1, 2
A£koliv je aplikace portable (p°enositelná), mén¥ zku²ení uºivatele po£íta£· mají
problém s instalací.
Moºné °e²ení:
Vytvo°it instala£ní balí£ek, kterým by se aplikace instalovala.
52
KAPITOLA 6.
TESTOVÁNÍ
6.8.3 Nález - názvy akcí, popisk· Priorita:
2
Nalezeno: Popis:
Participant 1, 2
Nic ne°íkající názvy (nap°íklad TEMP les path) u mén¥ zku²en¥j²ích uºivatel·
po£íta£e.
Moºné °e²ení:
Kontextová nápov¥da, lep²í popisky.
Obrázek 6.2: Nález £íslo 3
6.8.4 Nález - nahrání souboru MIDI Priorita:
1
Nalezeno: Popis:
Participant 1, 2
Uºivatel si v ur£itých chvílích nebyl jist, zdali je soubor MIDI nahraný nebo ne.
Moºné °e²ení:
Zvýraznit, zdali je soubor nahraný, zvýraznit nutnost nahrání souboru
MIDI.
Obrázek 6.3: Nález £íslo 4
6.8.5 Nález - stejná tla£ítka Priorita: Nalezeno:
1
Participant 3
6.8.
53
NÁLEZY
Popis:
Uºivatel byl zmaten ze dvou stejných tla£ítek.
Moºné °e²ení:
Vzhledem k velikosti uºivatelského rozhraní odstranit menu a rozhraní
zv¥t²it v okn¥, kde by mohla být i nápov¥da, atp. U²et°ilo by se tím n¥kolik klik·.
Obrázek 6.4: Nález £íslo 5
54
KAPITOLA 6.
TESTOVÁNÍ
Kapitola 7 Záv¥r
Poda°ilo se mi vytvo°it systém pro syntézu rytmické recitace za pouºití jiº existujících nástroj· a softwaru. Díky moºnosti rozd¥lování slov podle slabik je moºné sekvencí MIDI p°esn¥ denovat zvukový výstup a tak lépe rytmicky recitovat daný text. Pro uºivatele je tak mnohem snaz²í a p°irozen¥j²í vytvo°it poºadovaný výsledek vyuºitím sekvencí MIDI, denující tuto rytmiku. Systém je moºné vyuºít p°i skládání hudby ve stylu hip hop jako prototypovací nástroj vokálových stop. Stejn¥ tak je systém vhodný i pro hudební styl elektro, ke kterému má v této fázi výstup programu svojí kvalitou nejblíºe. Vyuºitelnost v²ak není limitována pouze t¥mito dv¥ma hudebními styly a tak se mohou najít i jiné oblasti jeho vyuºití. Výsledné i do£asné soubory jsou uchovávány v systému ve zvolené sloºce pro kontrolu a porovnání výsledk·. Z t¥chto do£asných soubor· je také evidentní, ºe výsledek práce je závislý na díl£ích výsledcích pouºitých systém·, hlavn¥ pak tedy systému Text-To-Speech. Z hlediska uºivatelského rozhraní byla aplikace otestována s n¥kolika uºivateli s r·znými zku²enostmi v oblasti po£íta£· a hudby a bylo tak objeveno n¥kolik nález·, které budou opraveny v následující verzi aplikace (na vývoji a zdokonalování programu bych rád pokra£oval i nadále). Cíle práce byly spln¥ny a na p°iloºeném médiu je moºné si poslechnout, jak v kompozici s hudebními nástroji zní výsledek. Nadále jsme také zjistili, ºe aplikace podobného typu, pro hudební scénu, za pomocí jiº vytvo°ených nástroj· lze vyvíjet. Výsledky práce takových nástroj· v²ak jsou a budou ve velké mí°e závislé na díl£ích výsledcích t¥chto jiº existujících vyuºívaných nástroj·. V p°ípad¥ vývoje t¥chto jednotlivých program· a zlep²ení kvality jejich výstup· (v p°ípad¥ této práce hlavn¥ pak vylep²ení kvality TTS) je moºné vytvo°it velice kvalitní software, který by mohl uleh£it a zp°íjemnit práci mnoha lidem, stejn¥ tak moºná i posunout vývoj nástroj· nejen pro hudební scénu. Jako nezanedbatelné povaºuji zd·raznit i osobní p°ínos m¥ samotnému. S projektem t¥chto rozsah· jsem nem¥l moºnost se setkat a tak pro m¥ celá práce byla novinkou a velkým p°ínosem. V projektu jsem se nau£il mnoha novým v¥cem, programátorským praktikám a zvlá²t¥ pak, hudební problematice v oblasti po£íta£·.
55
56
KAPITOLA 7.
ZÁV
R
7.1 Problémy, Nedostatky, °e²ení problém·
7.1.1 Kvalita hlas· TTS systém· Vzhledem k nedostatku v systému Windows 7, kdy není moºné zm¥nit hlas základního TTS hlasu (Microsoft Anna) alespo¬ na hlasy ze systém· Win XP, kde se jich vyskytovalo více. Nadále k faktu, ºe dokoupení hlas· od rem je drahá záleºitost, bylo t°eba aplikaci testovat a vytvá°et pouze se základním hlasem t¥chto systém·. Hlasem pouºívaným v aplikaci je tedy Microsoft Anna, jehoº výsledky jsou velmi nekvalitní. Tento hlas zní velice elektronicky a nep°irozen¥. Výsledek mé práce je závislý v první °ad¥ práv¥ na tomto hlasu a tak se tento nedostatek vyskytuje i ve výstupech aplikace. e²ením by pak mohlo být dokoupit TTS hlasy od rem, které je vyvíjejí (Cepstral, Acapela, Ivona, atd.).
7.1.2 Zkratky v SAPI Vzhledem k nemoºnosti denovat £i oddenovat zkratky v systému TTS jsem se setkal se zajímavým problémem p°i °e²ení prodluºování a zkracování mezer ve v¥t¥. Jelikoº v anglickém jazyce se slova £asto spojují, vzniká mezi nimi mezera n¥kdy dlouhá maximáln¥ 1ms. Kdyº se pak tuto mezeru pokusíme prodlouºit v programu
PRAAT, je tém¥° nemoºné
získat £as, kde není ºádný hluk. Rozhodl jsem se tedy za kaºdé slovo p°idat te£ku, tudíº tím ukon£it v¥tu, aby hlas intona£n¥ klesl a prodleva mezi slovy tak byla del²í a tuto mezeru následn¥ prodluºovat. Ov²em v ur£itých p°ípadech, kdy za ur£itá slova byla vloºena te£ka, se slovo bralo jako zkratka. Pro£, to se mi ov²em zjistit nepoda°ilo. P°i zápise . is., bylo slovo p°eloºeno správn¥ jako iz-h (ve form¥ foném·). V p°ípad¥, ºe ov²em bylo vloºeno nap°íklad This. is. high., byla v¥ta p°eloºena jako dh-ih-s. ay-l-ax-n-d. h-ay (tedy This island high). Tento jev se v²ak stával pouze v ur£itých p°ípadech a tak se domnívám, ºe ve fázi, kdy se TTS snaºí porozum¥t textu je konkrétn¥ v tomto kontextu nahrazeno is. slovem island. Problém byl nakonec vy°e²en p°idáním dvou te£ek namísto jedné a slova se p°estala p°ekládat jako zkratky.
7.1.3 Odchytávání událostí systému TTS Jedním z nejv¥t²ích problém· ve vývoji nastal jiº na po£átku, kdyº jsem se seznámil s TTS a implementoval jednoduchou £ást odchycení událostí. Z m¥ neznámých d·vod·, v p°ípad¥ pokusu o p°eloºení textu n¥kolikrát za sebou (a£koliv probíhající p°eklad byl jiº vyhodnocen a zpracován), SAPI p°estalo náhodn¥ odpovídat a p°estalo odchytávat události. Tento problém se stával náhodn¥ a v p°ípad¥ debugování a krokování kódu nikdy nenastal. Jelikoº se text p°ekládá asynchronn¥, s nejv¥t²í pravd¥podobností se události neodchytily správn¥, ov²em text se od°íkal celý. Od chvíle, kdy jsem do aplikace zahrnul WaitUntilDone() metodu se v²ak tento problém jiº neobjevil.
7.2.
57
BUDOUCÍ VÝVOJ
7.1.4 VST V první fázi vývoje, kdy jsem se teoreticky rozmý²lel nad vývojem aplikace, jsem se
Virtual Studio Technology).
rozhodl pro vyuºití VST (
VST technologie je interface pro
tvorbu syntezátor·, efekt· a editor·. VST je v dne²ní dob¥ hojn¥ vyuºívané tém¥° v²emi hudebními softwary a tak první vize programu byl zásuvný modul, plugin, do t¥chto program·. Hlavní problém byl v²ak ve zvoleném programovacím jazyku, kdy VST je pod jazykem C# implementováno knihovnami VST.NET, které v²ak jsou stále ve vývoji a tak p°i psaní kódu byli objevovány chyby a nedostatky t¥chto knihoven. A£koliv komunikace s programátorem, který VST.NET vyvíjí byla rychlá, n¥které problémy se mu nepovedlo doposud vy°e²it a tak jsem musel z my²lenky VST.NET upustit. Rozhodl jsem se tedy aplikaci p°epsat alespo¬ £áste£n¥ do jazyka C++, zde jsem v²ak narazil na problém v programu
Fruity Loops studio,
které nepracuje s delta frames, ale
tzv. chunks, sample frames atd. Vývoj plugin· je tedy rozd¥len na dv¥ £ásti, kdy n¥které programy deltra frames vyuºívají, n¥které pracují jinou technikou. Zm¥nil jsem tedy hudební software a za£al pouºívat program
Reaper, kde se vyskytovaly
problémy se zasíláním zpráv MIDI, které p°icházely n¥kdy i n¥koliksetkrát za sebou, a£koliv m¥ly p°ijít pouze jednou. Tento problém jsem pozd¥ji vy°e²il ltrací zpráv, narazil jsem v²ak na problém, jak zaji²´ovat zprávy MIDI oine, coº by VST m¥lo implementovat. Ze zdroj·, ze kterých jsem £erpal, jsem v²ak nebyl schopen oine plugin zprovoznit a po komunikaci s vývojá°i, kte°í se VST jiº n¥kolik let zabývají, jsem se na jejich radu rozhodl od VST zcela upustit, jelikoº my²lenka aplikace byla £áste£n¥ v rozporu s my²lenkou VST, kde jedním z hlavních cíl· je moºnost obsluhy za°ízení MIDI v reálném £ase. Po konzultaci s vedoucím práce jsem tedy rozhodl pro implementaci MIDI parseru.
7.1.5 Praatcon I s tímto softwarem se vyskytly problémy, které nejsou prozatím vy°e²eny. V p°ípad¥, ºe do aplikace
tcon
Praatcon
za²leme soubor, který ve své cest¥ obsahuje mezeru, aplikace
Praa-
tento soubor nedokáºe nalézt a tedy s ním nedokáºe ani pracovat.
Jestliºe v²ak vyuºijeme stejný skript a stejnou adresá°ovou strukturu v programu
Praat a
tento skript spustíme, aplikace s t¥mito soubory dokáºe pracovat bez problému. Pro správnou funkci programu je tedy pot°ebné pracovat se soubory, u kterých se v adresá°ové struktu°e nevyskytují mezery.
7.2 Budoucí vývoj Z d·vod· velkého rozsahu problematiky a náro£nosti a zárove¬ i z d·vodu, ºe se jednalo o experimentální vývoj, nemohlo být do aplikace zahrnuto mnoho nápad· vzniklých p°i vývoji. Velice rád bych aplikaci i nadále vyvíjel a tak se zde pokusím popsat, jak by mohl vypadat budoucí vývoj tohoto pomocného nástroje a na jaké vlastnosti programu bych se nadále rád zam¥°il.
58
KAPITOLA 7.
ZÁV
R
7.2.1 Multiplatformní aplikace Vzhledem k vyuºívání SAPI je aplikace vázaná na opera£ní systém Win. V budoucnu bych rád aplikaci vytvo°il multiplatformní (alespo¬ £áste£n¥) a pokusil se o implementaci programu i na opera£ní systémy neº TTS systému projektu
Mono.
Mac, jejichº systém TTS má mnohem kvalitn¥j²í výsledky
Windows. áste£n¥ multiplatformní aplikace by se mohlo docílit pomocí
7.2.2 VST A£koliv jsem se rozhodl VST do aplikace nezahrnovat, z d·vod· nemoºnosti práce v reálném £ase, do budoucna bych rád, aby aplikace alespo¬ £áste£n¥ s VST spolupracovat mohla. Toho by se dalo docílit, jestliºe by text písn¥ mohl být p°edp°ipraven a vygenerován p°edem. Vyuºitím VST by se docílilo lep²í interakce mezi aplikací (která by £áste£n¥ mohla pracovat i jako VST plugin) a nástroji pro tvorbu hudby.
7.2.3 Editor MIDI V aplikaci se bude vyskytovat editor MIDI, tudíº nebude nutné nahrávat soubory MIDI a bude tak moºné vytvá°et je p°ímo v programu. Zajímavou formou by pak mohlo být denování rytmu pomocí tla£ítka my²i pop°ípad¥ kláves, kdy by se poté sekvence automaticky zobrazily v editoru. Do tohoto editoru ke kaºdé not¥ poté bude moºné napsat frázi. Uºivatel tak bude mít naprostý p°ehled, co je kde generováno a jak výsledný soubor bude vypadat.
7.2.4 Optimalizace a vylep²ení kódu Hlavní £ástí budoucího vývoje bude taktéº vylep²ení a optimalizace kódu. Nap°íklad £ást vyhledávání slabik ve slov¥, vytvo°ení skriptu, atp. Velice rád bych kód poupravil a optimalizoval, aby práce s kódem byla p°ehledn¥j²í a do dal²ího vývoje i vyuºiteln¥j²í.
Pouºitá literatura
Monograe [1] [2]
FORRÓ, Daniel. Sv¥t MIDI. Grada, 1997. 384 s. ISBN 8071694126 HECKROTH, Jim. Complete MIDI 1.0 Detailed Specication. MIDI Manufacturers Association, 1996. 297 s. ISBN 0-9728831-0-X
Internetové zdroje [1]
BRAULT, Stephane. What is MIDI? [online]. 2007. [cit. 2012-05-18] Dostupné na www: http://www.homemusician.net/articles/what_is_midi_page2.html
[2]
COOPER, Sean. Electro | AllMusic [online]. [cit. 2012-05-13] Dostupné na www: http://www.allmusic.com/explore/essay/electro-t689
[3]
D.Breen, M.Lin. Sound-by-numbers: Motion-Driven Sound Synthesis [online]. 2003. [cit. 2012-05-11] Dostupné na www: http://www.cardle.info/lab/publications/SoundbyNumbers2003_Cardle.htm
[4]
DUEK, Tomá². Úvod do elektroakustiky a akustiky [online]. [cit. 2012-05-11] Dostupné na www: http://nf.duseknet.com/uvod.htm
[5]
Electro Wikipedie [online]. [cit. 2012-05-13] Dostupné na www: http://cs.wikipedia.org/wiki/Electro
[6]
Electro (music) Wikipedia, the free encyclopedia [online]. [cit. 2012-05-13] Dostupné na www: http://en.wikipedia.org/wiki/Electro_%28music%29
[7]
Historie hudby jménem Electro poslouchej.net [online]. 2006. [cit. 2012-05-13] Dostupné na www: http://www.poslouchej.net/2909-Historie-hudby-jmenem-Electro.html
[8]
HLAVIKA, Miroslav. Virtuáln¥ akustická syntéza, revoluce ve výrob¥ zvuku [online]. 1996, £. 12. [cit. 2012-05-11] Dostupné na www: http://natura.baf.cz/natura/1996/12/9612-3.html. ISSN 1212-6748
[9]
Linquatec Technologie p°evád¥ní textu na mluvené slovo (Text-To-Speech) [online] [cit. 2012-05-15] Dostupné na www: http://www.linguatec.cz/products/tts/information/technology
[10]
Metody Zvukové syntézy [online]. 2009. [cit. 2012-05-11] Dostupné na www: http://elektronicka-hudba.telotone.cz/clanky/metody-zvukove-syntezy
59
60
[11]
.
POUITÁ LITERATURA
Mezinárodní fonetická abeceda Wikipedie [online]. [cit. 2012-05-15] Dostupné na www: http://cs.wikipedia.org/wiki/Mezin%C3%A1rodn%C3%AD_fonetick%C3%A1_abeceda
[12]
MIDI Wikipedia, the free encyclopedia [online]. [cit. 2012-05-18] Dostupné na www: http://en.wikipedia.org/wiki/MIDI#File_formats
[13]
MIDI File Format The Sonic Spot [online]. [cit. 2012-05-17] Dostupné na www: http://www.sonicspot.com/guide/midiles.html
[14]
MIDI Specication [online]. [cit. 2012-05-17] Dostupné na www: http://home.roadrunner.com/ jgglatt/tech/midispec.htm
[15]
O'SULLIVAN, Sam. Sound SynthesisUnderstanding the Basics [online]. 2012 [cit. 2012-05-10] Dostupné na www: http://theproaudioles.com/sound-synthesis-basics/
[16]
PRAAT manual [online]. [cit. 2012-05-19] Dostupné na www: http://www.fon.hum.uva.nl/IFA-publications/Others/Courses/SpeechRecAndSyn/Literature/praat_manual.pdf
[17]
SAPP,Craig Stuart. Variable Length Values [online]. [cit. 2012-05-17] Dostupné na www: http://253.ccarh.org/handout/vlv/
[18]
Scripting (PRAAT) [online]. [cit. 2012-05-19] Dostupné na www: http://www.fon.hum.uva.nl/praat/manual/Scripting.html
[19]
Seznam hudebních styl· Wikipedie [online]. [cit 2012-05-13] Dostupné na www: http://cs.wikipedia.org/wiki/Seznam_hudebn%C3%ADch_styl%C5%AF
[20]
Sound synthesis types Wikipedia, the free encyclopedia [online]. [cit. 2012-05-10] Dostupné na www: http://en.wikipedia.org/wiki/Category:Sound_synthesis_types
[21]
Sound synthesis nonlinear methods [online]. [cit. 2012-05-11] Dostupné na www: http://sound.eti.pg.gda.pl/student/eim/synteza/jaroslaw/index_ang.htm
[22]
Speech_synthesis Wikipedia, the free encyclopedia [online]. [cit. 2012-05-10] Dostupné na www: http://en.wikipedia.org/wiki/Speech_synthesis
[23]
TTS Engine Vendor Porting Guide SAPI 5.4 [online]. [cit. 2012-05-16] Dostupné na www: http://msdn.microsoft.com/en-us/library/ee431802%28v=vs.85%29.aspx
[24]
University of
Salford
of
Salford. [online].
Sound [cit.
synthesis
2012-05-11]
tutorial|University Dostupné
na
www:
http://www.acoustics.salford.ac.uk/acoustics_info/sound_synthesis/
[25]
WILSON, Greg. Electro-Funk What Did It All Mean? | Electrofunkroots [online]. 2003 [cit. 2012-05-13] Dostupné na www: http://www.electrofunkroots.co.uk/articles/what.html
P°íloha A Seznam pouºitých zkratek
BPM CIL
Beats per minute (jednotka rychlosti rytmu hudby)
Common Intermediate Language
Mac
Macintosh (hardware, opera£ní systém od spole£nosti Apple)
MC
Master of Ceremony (rapper)
MIDI
Musical Instrument Digital Interface (specikace, protokol, v textu £asto spojováno
se soubory MIDI)
MS
Microsoft
SAPI
Speech Application Programming Interface (Technologie TTS od spole£nosti Micro-
soft)
SMF
Standard MIDI le
TTS
Text To Speech (systém slouºící pro p°evod textu do mluveného výstupu)
VLV
Variable length value (hodnota prom¥nné délky)
VST
Virtual Studio Technology (Interface pro práci s pluginy v audio editorech od Steinberg)
Win
Windows (opera£ní systém)
. . .
61
62
PÍLOHA A.
SEZNAM POUITÝCH ZKRATEK
P°íloha B Instala£ní a uºivatelská p°íru£ka
B.1 Popis Program
SynthesisOfRhytmicRecitation
byl vytvo°en jako bakalá°ská práce. Je to
nástroj pro syntézu rytmické recitace, který pro rytmickou sekvenci (ve formátu MIDI) a pro zadaný text vygeneruje odpovídající °e£ový signál. Ten lze poté pouºít ve vhodném editoru hudby jako stopu zp¥vu, doprovodnou stopu nebo jinak.
B.2 Instalace Program je v tzv. portable verzi (není tedy pot°eba instalace). Po stáhnutí tedy sta£í soubor rozbalit kamkoliv do va²eho po£íta£e a poté je moºné za£ít nástroj pouºívat. V p°ípad¥, ºe nemáte na svém systému nainstalován .Net Framework verze 4 a vy²²í, nainstalovat si jej m·ºete z adresy: http://www.microsoft.com/downloads/cs-cz/details.aspx?FamilyID=9cfb2d51-54-4491-b0e5-b386f32c0992 Pokud v rozbalovacím archivu není program Praatcon, stáhn¥te si ho na adrese: http://www.fon.hum.uva.nl/praat/download_win.html
B.3 Spu²t¥ní a nastavení pot°ebných sloºek Spu²t¥ní probíhá p°es ikonu programu SynthesisOfRhytmicRecitation.exe. Po zobrazení okna m·ºete ve spodní £ásti okna vid¥t popisky TEMP les path a PraatCon path. Pomocí tla£ítka . . . (obrázek
B.1, bod 1.) vedle TEMP les path otev°ete dialogové okno vyhle-
dání sloºky a nastavte poºadovanoue sloºku, do které chcete ukládat do£asné a výstupní soubory. Tla£ítkem . . . (obrázek
B.1, bod 2.) vedle PraatCon path nastavte na sloºku, kde se nachází program Pra-
atcon, který je sou£ástí rozbalovacího archivu (pokud tento program nemáte, stáhn¥te si ho na adrese: http://www.fon.hum.uva.nl/praat/download_win.html ).
63
64
PÍLOHA B.
INSTALANÍ A UIVATELSKÁ PÍRUKA
Obrázek B.1: Sloºky, které je t°eba nastavit v programu SynthesisOfRhytmicRecitation
B.4 Práce s programem, popis programu
B.4.1 Nastavení cest viz obrázek B.2, bod 1. V této sekci je moºné:
•
nastavit sloºku pro ukládání do£asných a výstupních soubor·
•
nastavit sloºku výskytu programu Praatcon
B.4.2 Text viz obrázek B.2, bod 2. Do této £ásti zapisujte text skladby, který chcete zpracovat.
B.4.3 Import viz obrázek B.2, bod 3. Tla£ítko Load text slouºí pro importování textu do programu. Tla£ítko Load midi slouºí pro importování souboru .mid do programu
B.4.4 Nastavení zpracování viz obrázek B.2, bod 4. Zde m·ºete vybrat, zdali chcete text rozd¥lovat po slabikách nebo po slovech (zdali se rytmika ze souboru .mid bude aplikovat na slabiky £i slova). Za²krtávací pole With pauses v p°ípad¥ za²rtnutí prodlouºí mezery mezi slovy tak, aby odpovídaly mezerám mezi odpovídajícími událostmi v souboru MIDI.
B.4.5 Zpracování viz obrázek B.3, bod 1. V této oblasti po importování souboru .mid vidíte název souboru, pomocí posuvníku m·ºete nastavit rytmus (bpm). Pokud jsou v²echny informace správn¥ nastaveny (cesta k programu Praatcon, sloºka do£asných soubor·, importovaný soubor MIDI, napsaný text písn¥), zp°ístupní se tla£ítko Process, kterým m·ºete zapnout zpracování.
B.4.6 Nápov¥da viz obrázek B.3, bod 2. Po stisku tla£ítka help se vám otev°e nabídka. V této nabídce m·ºete stisknout tla£ítko Show count of syllables/words, které vám ukáºe po£et slov a slabik v zapsaném textu. Tla£ítko About slouºí pro otev°ení nápov¥dy a informací o projektu.
B.4.
PRÁCE S PROGRAMEM, POPIS PROGRAMU
Obrázek B.2: Program SynthesisOfRhytmicRecitation
65
66
PÍLOHA B.
INSTALANÍ A UIVATELSKÁ PÍRUKA
Obrázek B.3: Program SynthesisOfRhytmicRecitation
P°íloha C Ukázka výstupních dat
C.1 Script tempPraatScript.praat form Modify Speech Expression sentence Input_file sentence Output_file sentence Duration_tier_file endform Read from file... 'Input_file$' pCurrentSound = selected("Sound") To Manipulation... 0.01 75 600 Rename... myManip select Manipulation myManip Read from file... 'Duration_tier_file$' Rename... myDuration plus Manipulation myManip Replace duration tier select Manipulation myManip Get resynthesis (overlap-add) Write to WAV file... 'Output_file$'
67
68
C.2 Script durationTier.tmp File type = "ooTextFile" Object class = "DurationTier" xmin = 0.000000000 xmax = 3.1196975 points: size =12 points[1] time = 0.5398135 value = 1.0 points[2] time = 0.5399135 value = 2.58681181254481 points[3] time = 1.1678999 value = 2.58681181254481 points[4] time = 1.1679999 value = 1.0 points[5] time = 0.0039375 value = 1.0 points[6] time = 0.0040375 value = 2.56589689759739 points[7] time = 0.5398125 value = 2.56589689759739 points[8] time = 0.5399125 value = 1.0 points[9] time = 1.5134385 value = 1.0 points[10] time = 1.5135385 value = 1.78891189473756 points[11] time = 2.1422124 value = 1.78891189473756 points[12] time = 2.1423124 value = 1.0
PÍLOHA C.
UKÁZKA VÝSTUPNÍCH DAT
C.3.
DURATION TIER KIVKA VYGENEROVÁNA PROGRAMEM
C.3 Duration tier k°ivka vygenerována programem
Obrázek C.1: Tvar duration k°ivky vygenerované programem SynthesisOfRhytmicRecitation
69
70
PÍLOHA C.
UKÁZKA VÝSTUPNÍCH DAT
P°íloha D Obsah p°iloºeného CD
Na p°iloºeném CD se nachází zdrojové kódy, spustitelná aplikace, ukázkové do£asné a výstupní soubory a výsledný ukázkový soubor kompozice výstupu programu s hudebními nástroji a digitální podoba této bakalá°ské práce s obrázky a zdrojovými soubory.
/program/src
zdrojové kódy programu
/program/app
spustitelná verze programu, program Praatcon a instala£ní
/example/temp_data
ukázka do£asných výstupních soubor·
soubor .Net Framework 4 /example/output_data
ukázka výstupních soubor·
/example/song
skladba ve které je vyuºito programu SynthesisOfRhytmicRecitation
/text/src
zdrojové soubory této bakalá°ské práce
/text/src/images
obrázky pouºité v této práci
/text/pdf
digitální verze této práce
71