Peatükk 17 Kõnesüntees ja resüntees Praatis

Tekst-kõne sünteesiga on tänapäeval ilmselt kokku puutunud igaüks – see on integreeritud uudisportaalidesse võimalusega uudise tekst ette lugeda, auto navigatsiooniseadmes annab kõnesüntees liiklemiseks hääljuhiseid, AI põhised häälassistendid (nt ChatGPT, Apple Siri, Google Gemini, Amazon Alexa jpt) räägivad kõnesünteesi abil.

Kõnelevaid masinaid on üritatud luua juba arvutieelsel ajal ja varasemad katsetused on olnud üritada kõneloome protsessi järele aimata. Kõne arusaadavuse ja loomulikkuse poolest pole kuigi edukaks osutunud meetodid, mis algusest lõpuni üritavad järgi teha seda, kuidas inimene kõnet toodab. Tänapäeval kasutatakse neid meetodeid pigem kõne uurimisel, kuna nende meetodite puhul on võimalik sünteesi parameetreid väga täpselt kontrollida. Aga kõnetrakti füüsilisel mudelil põhineb näiteks näiteks Takayuki Arai loodud Kõriorel, mida võib näha Eesti Rahva Muuseumis (vt ka Arai 2019).

Tekst-kõne sünteesis on edukamaks osutunud meetodid, mis kasutavad salvestatud kõne korpust, mitte ei genereeri kõnesignaali akustiliste või artikulatoorsete parameetrite järgi.

Esimesi edukaid levinud laiatarbe kõnesünteesi meetod on difoonsüntees, mida kasutati peamiselt 1990. aastate lõpus ja 2000. aastate alguses. Eesti keele tekst-kõne difoonsüntesaator valmis 1999. aastal. See tähendab, et on loomuliku kõne salvestusest välja lõigatud häälikupaarid, mille kombinatsioonidest pannakse kokku uut kõnet. Häälikupaare kasutatakse selle pärast, et siirded ühelt häälikult teisele oleksid loomulikumad –- kõnes liiguvad hääldusorganid ühe hääliku moodustuskohalt teise hääliku moodustuskohale sujuvalt ja iga eelnev häälik mõjutab järgmist. Niimoodi sünteesitakse näiteks sõna tere viiest andmebaasis olemas olevast jupist: (paus + /t/ esimene pool)(/t/ teine pool + /e/ esimene pool)(/e/ teine pool + /r/ esimene pool)(/r/ esimene pool + /e/ teine pool)(/e/ teine pool + paus) (vt Mihkla, Eek & Meister 1998).

Alates 2000. aastate algusest hakati arendama korpuspõhist sünteesi, mille põhimõte sarnaselt difoonsünteesile oli panna kokku loomulikust kõnest salvestatud lõikudest. Ainult et korpusepõhise sünteesi korpus sisaldab rohkem ja suuremaid kõnelõike ning sagedasemaid sõnu. Korpusepõhine kõnesüntesaator paneb uue teksti kokku võimalikult suurtest andmebaasis olevatest juppidest. Mida suuremaid olemasolevaid juppe on võimalik kasutada, seda loomulikum tulemus on.

Tänapäeval on enimlevinud tehisnärvivõrkudel põhinev süntees. See kasutab võimalikult suurt kõnekorpust, mille põhjal õpib loomulikus kõnes esinevaid mustreid ja selle meetodiga on tulemus ka prosoodia ja intonatsiooni osas palju loomulikum kui varasemate meetoditega.

Loe eesti keele kõnesünteesi kohta ja proovi erinevaid süntesaatoreid

17.1 Tekst-kõne süntees Praatis

Vali menüüst New > Text-to-speech synthesis > Create SpeechSynthesizer. Vali keel, milles tahad sünteesida (valikus on palju keeli, nende hulgas ka eesti) ja sünteeshääl.29

Objektiloendisse tekib objekt SpeechSynthesizer, mille dünaamilises menüüs on kaks käsku: Play text... ja To Sound..., millel mõlemal on üks teksikast, kuhu saab kirjutada teksti ja käskudest esimene loeb selle ette, teine tekitab Sound objekti (mida saab omakorda salvestada helifailina).

17.2 Resüntees Praatis

Sünteesiks võib pidada, ja kõne uurimisel kasutatakse palju, loomulikul viisil hääldatud kõne mingite parameetrite (kestuse, formantide, põhitooni vm) muutmist.

Objektiaknas Sound objekti dünaamilises menüüs Manipulate on käsk To manipulation.... Avaneb dialoogiaken, kus küsitakse põhitoonianalüüsiks vajalikke parameetreid (põhitooni analüüsi sammu ja põhitooni ulatuse väärtuseid, nagu ka põhitoonianalüüsi To pitch... käskude puhul). Tekib uus Manipulation objekt. Manipulation objektil saab manipuleerida põhitooni ja kestust ning pärast sünteesida tagasi Sound objektiks.

Käsk View & Edit avab ManipulationEditori. Nüüd on ekraan jagatud kolmeks (vt joonis 17.1):

  1. helilaine,
  2. põhitooni manipuleerimine ja
  3. kestuse manipuleerimine.
ManipulationEditori ekraanipilt.

Joonis 17.1: ManipulationEditori ekraanipilt.

17.2.1 Põhitooni manipuleerimine

Põhitoonikõveral on punktid, mida saab hiirega edasi-tagasi ja üles-alla liigutada (tulevad ilmselt paremini nähtavale, kui natuke sisse suumida). Punktide algsed asukohad on taustal näha hallide punktikestena. Igale pulsile (ehk täisvõnkeperioodile) vastab üks punkt. Niimoodi neid ükshaaval liigutada on kaunis tülikas, kui just ei tahagi muuta põhitooni ühe täisvõnke piires. Kui üldisemat toonikontuuri manipuleerida, siis tasub punktide hulka vähendada.

Käsk Pitch > Stylize pitch... kaotab ära kõik punktid, mille vahel on väiksem erinevus kui kaks pooltooni30 (vaikimisi seadete puhul). Nii on põhitooni kontuur endine, aga punkte on oluliselt vähem. Nüüd on võimalik alles jäänud punkte nihutada nii ja vormida uus kontuur, tõstes ja langetades põhitooni liikumist sõnade või silpide kaupa. Näiteks joonisel 17.2 on lausungi kumb neist on tugevam alguses ja lõpus põhitooni langetatud ja tõstetud sõnal neist.

Stiliseeritud ja manipuleeritud põhitoonikontuur.

Joonis 17.2: Stiliseeritud ja manipuleeritud põhitoonikontuur.

Menüü Pitch > Remove pitch point(s) kustutab valitud punktid. Kui kustutada kõik punktid, kaob manipuleeritud põhitoon ära – sosinaks see ei muutu, kuuled lihtsalt algset tooni. Kui jätta alles üks punkt, on kogu heli põhitoon monotoonselt ühel kõrgusel.

Käsk Add pitch point lisab punkte.

Käsk Shift pitch frequencies... muudab kõigi punktide väärtust mingi ühiku võrra. Käsk Multiply pitch frequencies... korrutab kõigi punktide väärtuse mingi arvuga. Kui tahad põhitooni tõsta oktavi võrra, pane faktoriks 2, kui tahad tõsta 2 oktavit, pane faktoriks 3. Kui tahad langetada oktavi võrra, pane faktoriks 0.5.

Kui soovid võtta ühelt sõnalt (või fraasilt) põhitoonikontuuri ja anda selle teisele, siis seda saab nii:

  • Vali Sound objekt, millelt tahad põhitoonikontuuri võtta ja vali menüüst Analyse Periodicity > To Pitch (filtered autocorrelation)....
  • Tekkinud Pitch objekti menüüst vali Convert > Down to PitchTier, millest tekib objekt PitchTier.
  • Vali Sound objetk, millele tahad teist põhitoonikontuuri külge kleepida. Mõõda selle kestus: menüüst Query > Query time domain > Get start time ja Get end time.31
  • Vali objekt PitchTier ja menüüst Modify > Modify times > Scale times to... pane uueks algusajaks eelmises sammus küsitud algus- ja lõpuaeg ja vajuta OK.
  • Samal Sound objektil vali menüüst Manipulate > To Manipulation.... Tekib objekt Manipulation.
  • Nüüd vali korraga objektid Manipulation ja PitchTier ning vajuta nuppu Replace pitch tier.

PitchTier’i saab ka luua uue objektina ning määrata ise põhitooni punktid:

  • Vali menüüst New > Tiers > Create PitchTier.... Pane kestuseks manipuleeritava Sound objekti kestus.
  • Vali menüüst Modify > Add point.... Lisa nii kõik olulised põhitooni punktid.
  • Vali korraga objektid Manipulation ja PitchTier ning vajuta nuppu Replace pitch tier.

17.2.2 Kestuse manipuleerimine

Kestuse kihil ei ole alguses ühtegi punkti. Kui tahad kogu faili ulatuses ühtlaselt kiirust muuta, lisa üks punkt: menüü Dur käsk Add duration point. Punkti üles-alla liigutades muutub helilõigu kestus. Kui liigutad punkti üles (väärtus 1 on algne kestus), muutub kõne aeglasemaks, kui liigutad alla, siis kiiremaks.

Kui tahad heli ühe osa kestust muuta, lisa neli kestuspunkti: kaks tükki kõrvuti lõigu algusesse, kaks tükki lõigu lõppu. Välimiste punktide väärtus sea 1 peale, sisemiste väärtus suuremaks, kui tahad lõiku aeglustada, või väiksemaks, kui tahad lõiku kiirendada. Joonisel 17.3 on muudetud sõna “on” kestus 1.5 korda pikemaks: kui algne kestus oli umbes 131 ms, siis nüüd on 130 * 1,5 = 195 ms.

Ühe sõna kestuse pikendamine.

Joonis 17.3: Ühe sõna kestuse pikendamine.

Kui tahad kestuse punktide seadmist alustada otsast peale, kasuta käsku Dur > New duration.

17.2.3 Manipuleeritud heli salvestamine

Manipulation objekt ei ole tavaline helifail, nii et kui see salvestada käsuga Save to text file... või Save to binary file..., saab seda Praatis uuesti avada, aga teised programmid seda ei loe.

Et saada Manipulation objektis jälle helifail, tuleb see sünteesida ehk tagasi helifailiks muundada. Manipuleeritud heli sünteesimiseks on mitu varianti, millest kõige parema (loomulikuma) tulemuse annab meetod overlap-add. Kui oled töö Manipulation objektiga lõpetanud, sünteesi selle põhjal helifaili, kasutades objektiakna käsku Get resynthesis (overlap-add) (või toimetamisaknas menüüst File > Publish resynthesis). Nüüd tekib objektiaknasse uus Sound objekt32 Uue Sound objekti võid salvestada wav-failina (menüüst Save käsuga Save to WAV file...).

17.3 Allikas-filter süntees Praatis

Allikas-filter e formantsüntees e Klatti süntees on kõnetrakti akustiline mudel, mille idee on matkida loomuliku kõne moodustamist. See meetod ei ole tänapäeval kasutusel tekst-kõne süntesaatori rakendustes, aga seda kasutatakse kõne uurimiseks, tihti stiimulite sünteesimiseks tajutestide tarvis. Sünteesil on kaks komponenti: allikas ja filter.

Allikas on justkui häälekurrud, st genereeritakse justkui häälekurdudest tulev puhas heli, nagu see on enne, kui kõnetrakt mingeid komponente sellest võimendab või summutab.

See allika signaal lastakse läbi filtri, mis on justkui nagu kõnetrakt, mis mingeid etteantud sagedusvahemikke üles võimendab või summutab.

Praatis on allikas-filtri sünteesi jaoks kaks võimalust. Üks võimalus on genereerida allikas ja filter eraldi, vt Praati manuaalist märksõna ‘Source-filter synthesis’. Teine võimalus on kasutada nn Klatti süntesaatorit, vt manuaalist ‘KlattGrid’. Mõlemal viisil on võimalik kas sünteesida kõik algusest lõpuni või resünteesida loomulikku kõnet.

Lähme nüüd Praati ja proovime sünteesida vokaale, mida kasutame stiimulitena tajukatses peatükis 18.1.

Järgnevalt on esitatud käsud tekstikastides Praati skripti vormis (vt Praati skriptikeele kohta ptk 19) ja eelnevas tekstis on osutatud sellele, kust menüüst käsu leiab.33

Kõigepeal genereerime allika ehk häälekurdudest tuleva signaali. Sõna kestus võiks olla umbes 300 ms e 0.3 sekundit. Otsi menüüst New > Tiers > Create PitchTier....

Create PitchTier: "allikas", 0, 0.3

Nüüd tuleks märkida mingid punktid põhitooni kõrgusega. Kui tahame, et stiimul oleks monotoonse põhitooniga, siis piisab sellest, kui lisada ainult üks põhitooni punkt ükskõik kas algusesse (aeg 0 s), lõppu (0.3 s) või kuhugi vahepeale. Aga et anda natuke loomulikum kõla häälele, genereerime siia väikese põhitooniliikumise: hääliku esimeses pooles on kerge langus 150 hertsilt 140-le, seejärel natuke suurem langus, nii et lõppeb 100 hertsi peal.

Hääliku alguses võiks olla f0 150 Hz, ja esimeses silbis kergelt langeda 140 Hz (sest päris lame põhitoon ei ole väga loomulik), ning siis sõna lõpuks langeda 100 Hz peale. Kui avada PitchTier’i editor, siis leiab menüüst PitchTier käsu Add point at... ja objektiaknas leiab menüüst Modifiy käsu Add point.... Lisame siis kolm punkti:

Add point: 0, 150 
Add point: 0.16, 140 
Add point: 0.3, 100

Võid seda nüüd kuulata, selleks on dünaamilises menüüs kaks käsku Play pulses mängib pininana, Hum mängib üminana.

Lähme edasi ja genereerime põhitooni kõverast objekti, mis matkib kõripulsse. Objektiaknas PitchTier objekti dünaamilisest menüüst Synthesize leiad käsu:

To PointProcess

Nüüd ongi meil allikas peagu valmis, teeme veel PointProcess objektist Sound objekti. Dünaamilisest menüüst Synthesize leiad käsu:

To Sound (phonation): 44100, 1.0, 0.05, 0.7, 0.03, 3.0, 4.0

Nüüd teeme filtri. Filter peab siis ka olema 300 ms pikk ja kõigepealt teeme ta vaikimisi väärtustega, st formantväärtused, mis võiksid sobida švaa vokaalile, kui keel on suus jõudeasendis: F1 = 550 Hz ja iga järgmine formant 1100 Hz võrra kõrgem. Menüüst New > Tiers

Create FormantGrid: "filter", 0, 0.3, 10, 550, 1100, 60, 50

Nüüd anname F1 ja F2 soovitud vokaali väärtused. Teeme esimeseks /i/, seega F1 võiks olla näiteks 200 Hz ja F2 2700.

Kõigepealt eemaldame kogu sõnast F1 ja F2 punktid. Kui FormantGrid editori aknas seda teha, siis tuleks valida esimene formant Formant > Select first ja seejärel Point > Remove point(s) ning seejärel sama teise formandiga. Objektiakna menüüst Modify:

Remove formant points between: 1, 0, 0.3
Remove formant points between: 2, 0, 0.3

Ja nüüd anname vokaalile soovitud väärtused F1 = 200 Hz ja F2 2700 Hz:

Add formant point: 1, 0.15, 200
Add formant point: 1, 0.15, 2700

Ja ongi filter valmis! Nüüd paneme allika ja filtri kokku: vali mõlemad objektid: Sound allikas + FormantGrid filter > Filter.

Nüüd saame sünteesida teise vokaali, selleks tõstame F1 väärtust 100 Hz ja langetame F2 väärtust samuti 100 Hz. Valime uuesti objekti FormandGrid, eemaldame eelmiste väärtustega F1 ja F2 punktid ning lisame uute väärtustega punktid:

Remove formant points between: 1, 0, 0.3
Remove formant points between: 2, 0, 0.3
Add formant point: 1, 0.15, 300
Add formant point: 1, 0.15, 2600
plusObject: "Sound allikas"
Filter

Korda seda protseduuri veel viis korda, kuni F1 väärtus on 800 Hz ja F2 väärtus 0n 2000 Hz. Nüüd võiks olla seitsmest stiimulist koosnev vokaaliseeria, mis võiks katta eesvokaale /ä/, /e/ ja /i/. Salvesta Sound objektid WAV failidena, et kasutada neid stiimulitena tajukatses (vt ptk 18.1).

17.4 Artikulatoorne süntees Praatis

Artikulatoorse sünteesi idee on lihtsustatult kirjeldades selles, et inimese kõneaparaati võib käsitleda torustikuna, mille kuju musklid muudavad, ning seda torustikku ja lihaspingeid on võimalik modelleerida. Artikulatoorse sünteesi eesmärk tänapäeval ei ole teha võimalikult loomulikku tekst-kõne süntesaatorit. Ülesande lahendamisele (võimalikult loomulik kõne) suunatud rakenduste puhul ei ole artikulatoorne süntees kuigi efektiivseks osutunud. Artikulatoorse sünteesi eesmärk on paremini aru saada, kuidas inimese kõneaparaat töötab ja hääldusprotsesse modelleerida.

Praati artikulatoorse sünteesi mudel põhineb Paul Boersma doktoritööl (Boersma 1998).

Täpsemalt on kõnetrakti mudel selline: osa torusid on otsast lahti (huuled, ninasõõrmed), osa kinni (kopsud) ja osa ühendab ühtesid teistega (neel-suu-nina). Torustiku kuju on ajas muutuv. Teatud tingimustel tekitab kopsudest tulev õhk kõris heli (kas paneb häälekurrud vibreerima või hõõrdub neid läbides).

Praatis jaguneb artikulatoorne süntees kahte etappi:

  1. musklite tegevuse põhjal kujundatakse kõnetrakti kuju,
  2. kõnetrakti kuju põhjal sünteesitakse heli.

Artikulatsioonimudeli põhilised osad on:

  1. Kõrieelne süsteem. Sajad miljonid alveoolid suubuvad kopsutorudesse, mis omakorda suubuvad hingetorru,
  2. Kõri,
  3. Ninaõõs,
  4. Neeluõõs ja suuõõs.

Neelu- ja suuõõnt kujutatakse Praatis 27 torusektsioonina, mille kuju saab muuta, andes neid sektsioone kontrollivatele lihastele pingeid.

Artikulatoorse sünteesi animatsioon.

Joonis 17.4: Artikulatoorse sünteesi animatsioon.

Praatis kasutatav artikulatsiooni mudel arvestab ka toru osade kuju muutumisest tuleneva pumpamise ja imemise efektiga: kui üks toru osa muutub väiksemaks, siis surub ta õhku eri suundades, kui muutub suuremaks, siis vaakumi tõttu imeb eri suundadest. Seega õhu liikumist ei määra ainult kopsude tegevus. Kui õhk liigub kitsamast torust laiemasse, põhjustab see õhu kaootilist liikumist.

Artikulatoorne süntees on üsna keerukas ja nõuab oluliselt põhjalikumaid teadmisi füsioloogiast kui siin õpikus käsitletud. Sellegipoolest proovime ka artikulatoorse sünteesiga ühe katsetuse läbi teha ja sünteesime sõna tere.

Kõigepealt on vaja kõnelejat. Vali menüüst New > Articulatory synthesis > Create Speaker.... Paneme kõnelejale nimeks näiteks Maret, aga muidu jätame vaikimisi väärtused:

Create Speaker: "Maret", "female", "2"

Järgmiseks on vaja luua artikulatsiooni muster ehk artikulaatorite liikumine, et hääldada sõna tere. Selleks on vaja tekitada objekt Artword. Vali menüüst New > Articulatory synthesis > Create Artword.... Sõna kestus võiks olla 500 ms ehk 0.5 sekundit.

Create Artword: "tere", 0.5

Kui objekt Artword on objektiloendis valitud ja vajutad nüüd Edit, avaneb selline aken, nagu joonisel 17.5. Aknas vasakul on nimekiri sihtmärkidest, st mis ajahetkel millisele musklile mis pinge on seatud. Aknas paremal on nimekiri musklitest (või hääldusaparaadi osadest, kõik ei ole nimetatud musklitena) ja kui sealt mõni valida, siis saab anka keskel määrata aja, millal see muskel mingi väärtuse saab. Pingete väärtused muutuvad vahemikus -1 kuni 1, 0 on jõudeasend.

Artikulatoorse sünteesi toimetamisaken.

Joonis 17.5: Artikulatoorse sünteesi toimetamisaken.

Kõigepealt paneme kopsudest õhu liikuma. Seda saab nii, et valid aknas paremalt Lungs ja keskel Time ja Value lahtrites määrad mingile ajahetkele väärtuse ning vajutad nuppu Add target. Alternatiiv on objektiaknas käsuga Set target..., nagu allpool kõik järgnevad käsud. Anname kopsudele kaks väärtust: ajal 0 väärtus 0.2 ja ajal 0.1 väärtus 0:

Set target: 0, 0.2, "Lungs"
Set target: 0.1, 0, "Lungs"

Liigutame pilkkõhresid, et panna häälekurrud võnkuma:

Set target: 0.1, 0.5, "Interarytenoid"
Set target: 0.5, 0.5, "Interarytenoid"

Liigutame pehmet suulage, et sulgeda käik ninna:

Set target: 0, 1, "LevatorPalatini"
Set target: 0.5, 1, "LevatorPalatini"

Styloglossus on lihas, mis hoiab, et keel kurku/suust välja ei vajuks:

Set target: 0, -0.5, "Styloglossus"
Set target: 0.5, -0.5, "Styloglossus"

Tekitame sulu: LowerTongue liigutab keeletippu, mälurlihas (Masseter) lõualuud:

Set target: 0 ,-1, "LowerTongue"
Set target: 0.04, -1, "LowerTongue"
Set target: 0, 0.7, "Masseter"
Set target: 0.1, -0.05, "Masseter"

Nüüd vallandame sulu:

Set target: 0.1, -0.2, "LowerTongue"
Set target: 0.25, -0.2, "LowerTongue"
Set target: 0.5, -0.1, "Masseter"

Tekitame /r/ jaoks keeletipu vibreerimise:

Set target: 0.26, -1, "LowerTongue"
Set target: 0.28, 0, "LowerTongue"
Set target: 0.3, -1, "LowerTongue"
Set target: 0.32, -0.1, "LowerTongue"

Nüüd ongi valmis ja tuleb sõna ja kõneleja omavahel kokku viia. Vali objektiaknas Speaker Maret ja Artword tere ja käsuga To Sound... saad sünteesida heli:

selectObject: "Speaker Maret"
plusObject: "Artword tere"
To Sound: 22050, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0

Tulemus kõlab nii – ei vokaalid on võrdlemisi redutseeritud, kuid sõna on äratuntav. Vokaalide parema kvaliteedi saavutamiseks tuleks keele kuju täpsemini vormida.

Peale selle saad vaadata kõnetrakti liikumise animatsiooni: vali kõik kolm objekti – Speaker Martet + Artword tere + Sound tere_Maret > Movie (vt joonis 17.4).

Kirjandus

Arai, Takayuki. 2019. Vocal-Tract Models in Phonetic Teaching and Research. William F. Katz & Peter F. Assmann (toim), The Routledge Handbook of Phonetics (Routledge Handbooks teoses Linguistics), 570–598. London ; New York: Routledge, Taylor & Francis Group. https://www.taylorfrancis.com/chapters/edit/10.4324/9780429056253-21/vocal-tract-models-phonetic-teaching-research-takayuki-arai?context=ubx&refId=52f9409f-790f-4f92-b57e-6f365d283269.
Boersma, Paul. 1998. Functional Phonology: Formalizing the Interactions between Articulatory and Perceptual Drives (LOT 11). The Hague: Holland Academic Graphics.
Mihkla, Meelis, Arvo Eek & Einar Meister. 1998. Creation of the Estonian Diphone Database for Text-to-Speech Synthesis. Linguistica Uralica 34(3). 334–340. https://doi.org/10.3176/lu.1998.3.29.

  1. Tegu on eSpeak süntesaatoriga, mis on küllalti vana difoon/formantsüntesaatori mudel, vt https://github.com/espeak-ng/espeak-ng/.↩︎

  2. Inglise k semitone, see on muusikaline mõiste pooltoon, mis vastab 21/12 kordsele (ehk umbes 6%) sagedusemuutusele.↩︎

  3. See on oluline kui Sound on lõigatud pikemast failist nii et algusaeg ei ole null, aga kui Sound algab nullist, piisab ka käsust Get total duration.↩︎

  4. Tõenäoliselt on uus fail sama nimega, mis on Manipulation objektil ja algsel Sound objektil, millest see tuletatud on, nii et ole ettevaatlik selle salvestamisel, et oma algset faili üle ei kirjuta. Kindlam on see enne ümber nimetada käsuga Rename.↩︎

  5. Kui menüüs on käsu lõpus kolm punkti, siis see tähendab, et selle käsu peale avaneb dialoogiaken, kus küsitakse täiendavaid väärtuseid. Käsureal on kolme punkti asemel koolon ning kooloni järel komadega eraldatud argumendid selles järjekorras nagu nad graafilise kasutajaliidese dialoogiaknas vastavates lahtrites peaks olema. Skriptis peavad sõnalised väärtused olema jutumärkides, dialoogiakna vastavasse lahtrisse tuleks kirjutada aga ilma jutumärkideta.↩︎