Suomenkielisen Festival-synteesin Emacspeak-tuen asennus- ja käyttöohje Nicholas Volk, Yleisen kielitieteen laitos, Helsingin Yliopisto 1. JOHDANTO Emacspeak on T.V. Ramanin kehittämä käyttöliitymä Emacs-editoriin. Ramanin alkuperäinen Emacspeak joukon Emacs Lisp (elisp) -kielellä kirjoitettuja funktiota. Nämä funktiot kutsuvat lähettävät tclx-komentotulkin takaa toimivalle (oletusarvoisesti) DecTalk-syntetisaattorille. Meidän ohjelmamme tukee emacspeakin joulukuussa 2002 julkaistuva versiota 17.0. Emacspeakin Festival-tuki (espeakf) on alunperin Mario Langin kirjoittama GPL2-lisenssin alainen koodinpätkä. Meidän versiomme on rakennettu tämän koodinpätkän päälle, joten se on siis myös GPL2-lisenssin alainen. Ohjelmamme on sekin vain pieni jotenkuten toimiva ranka, joka todistaa, että suomenkielinen Emacspeak on tehtävissä. Rangan päälle voi halutessaan kirjoittaa kattavamman version (GPL-lisenssin mukaisin rajoituksin). Emacspeakin Festival-tukea on myöhemmin laajennettu Aaron Binghamin toimesta, mutta hänen tekemiä parannuksia ei ehditty ottaa mukaan meidän versioomme. Tiedostot suopuhe.el ja suopuhe-post.el lankeavat alkuperäisen Emacspeak 17.0:n lisenssin alle, josta nee on apinoitu. Alkuperäiset DecTalkille suunnatut käskyt menevät Emacspeakilta DecTalkin sijaan Perliä käyttävälle ohjelmalle, joka käynnistää Festival-palvelimen ja parhaansa mukaan korvaa alkuperäiset käskyn sopivilla Festivalin komennoilla. ja lähettää ne festival-palvelimelle. Myöhemmin Perl-osio saatetaan jakaa kahdeksi prosessiksi, joista toinen kuuntelee mitä Festival sille palauttaa. Jotta Festival kuitenkin palauttaisi syntikalle jotain järkevää pitäisi Festivalin lähdekoodia muutella ja tällä aikataululla ja yhteensopivuussyistä siihen tuskin mennään tähän hätään. 2. ACK Stefan Werner teki alustavan implementaation, jolla osoitettiin, että suomenkielistä puhetta saa ulos emacsista. Nykyinen implementaatio on Nicholas Volkin tekemä. 3. ASENNUS Tarvitset Perl-tulkin ja asennetun Festivalin, jossa on suomenkielinen hy_fi_mv_diphone-ääni. Näppäimet: käytä ISO-8859-1 -standardia. ISO-8859-15 käynee myös, mutta UTF-8 aiheuttaa päänsärkyä sekä emacsin että Festivalin kanssa. Emacspeakistä tulee käyttää lähdekoodia, ei RPM:iä RPM:t sisältävät tiettyjä rasittavia amerikanismeja, jotka aiheuttavat päänsärkyä. Lähdekoodin elisp-osuuttakaan en suosittele kompiloimaan samasta syystä. Emacspeak-hakemistoksi oletetaan näissä ohjeissa /usr/share/emacs/site-lisp/emacspeak/, mutta se voi myös asentaa muualle. Anna käskyt: export DTK_TCL=perl export DTK_PROGRAM=espeakf.pl Nämä kannattaa asettaa jokonkin asetustiedostoon (esim. ~/.bashrc tai /etc/profile), jotta ne latautuvat käynnistyksen yhteydessä automaagisesti. Lisää tiedostoon /usr/share/emacs/site-lisp/emacspeak/servers/.servers rivi "perl". (Tämä ei taida olla pakollista, mutta ei siitä haittaakaan ole.) Muuta tiedostojen /usr/share/emacs/site-lisp/emacspeak/lisp/emacspeak.el ja /usr/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.el rivi (defvar emacspeak-unibyte t muotoon (defvar emacspeak-unibyte nil saadaksesi 8-bittisyyden tuen päälle. Alkuperäinen emacspeak on inherentisti 7-bittinen. Jotta ääkköset eivät katkaisisi sanaa, muuta tiedostosta /usr/share/emacs/site-lisp/emacspeak/lisp/dtk-tcl.el rivi (defvar dtk-speak-nonprinting-chars nil muotoon (defvar dtk-speak-nonprinting-chars t Tämä estänee lisäksi myös hilpeän taulukon ylivuotobugin... Lataa emacspeak omien emacs-aseutstesi kautta lisäämällä tiedostoon ~/.emacs rivit ------------------------------------------------------------------------------ ;; Setup the emacspeak (if (file-readable-p "/usr/share/emacs/site-lisp/emacspeak/lisp/suopuhe.el") (load-file "/usr/share/emacs/site-lisp/emacspeak/lisp/suopuhe.el")) (if (file-readable-p "/usr/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.el") (load-file "/usr/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.el")) (if (file-readable-p "/usr/share/emacs/site-lisp/emacspeak/lisp/suopuhe-post.el") (load-file "/usr/share/emacs/site-lisp/emacspeak/lisp/suopuhe-post.el")) ------------------------------------------------------------------------------- Laita tiedosto espeakf.pl hakemistoon /usr/share/emacs/site-lisp/emacspeak/servers/. Tarkista ohjelman perl-polku (oletus: /usr/bin/perl) ja festarin käynnistyskäsky. Jälkimmäisen oletusarvo on varmasti väärä ("/home/n/v/nvolk/bin/festival"). Lisäksi laita tiedostot suopuhe.el ja suopuhe-post.el hakemistoon /usr/share/emacs/site-lisp/emacspeak/lisp/. 4. TEHOKKUUS Tällä hetkellä Festival syntetisoi kaiken sille lähetetyn. Niinpä se syntetisoi myös tavaraa, jota ei tarvitsisi puhua, eli hiljaisuus-käsky ei mene läpi ennen kuin kaikki sitä ennen lähetetty tavara on syntetisoitu. Eli ohjelma saattaa puhua pälpättää pitkän tovin ennen vaikenemistaan. Syntikasta voisi tehdä myös erillisen idioottisyntetisaattoriversion, joka puhuisi monotonisesti. Tällöin ei intonaatiota tarvitsisi laskea, joten syntetisointi olisi nopeampaa. Varsinainen päähyöty tulee kuitenkin toisaalta: perustaajuden ollessa vakio voitaisiin syntesoida pienempiä paloja, sillä ympäristö ei vaikuttaisi intonaatioon. Jos lähdekoodia ehditään muokata, niin voitaisiin rakentaa eräänlaiset puskurit, jolloin tavaraa tungettaisiin syntetisaattorille vain jos syntetisaattorilla olisi resursseja vapaana. Tällöin syntetisoitavat tekstit odottelisivat puskurissa, ja ne eivät veisi prosessoriaikaa, jos niitä ei puhuttaisi. 5. TUNNETUT BUGIT Alkuperäinen emacslisp on jostain käsittämättömästä angloamerikkalaisesta syystä pakotettu 7-bittiseksi. Suomenkielinen versio on onnistuttu palauttamaan 8-bittiseksi. Ks. myös kohta 4 (tehokkuus). 6. KÄYTTÖ Emacspeakin pitäisi käynnistyä nyt normaalin emacsin käynnistyksen yhteydessä. 7. LINKKEJÄ: Emacspeak Festival speech server (espeakf): Emacspeak