summaryrefslogtreecommitdiff
path: root/lib/voices/finnish/suo_fi_lj_diphone/README.lj
diff options
context:
space:
mode:
Diffstat (limited to 'lib/voices/finnish/suo_fi_lj_diphone/README.lj')
-rw-r--r--lib/voices/finnish/suo_fi_lj_diphone/README.lj697
1 files changed, 697 insertions, 0 deletions
diff --git a/lib/voices/finnish/suo_fi_lj_diphone/README.lj b/lib/voices/finnish/suo_fi_lj_diphone/README.lj
new file mode 100644
index 0000000..ac2ba01
--- /dev/null
+++ b/lib/voices/finnish/suo_fi_lj_diphone/README.lj
@@ -0,0 +1,697 @@
+Copyright (c) 2000-2003 Yleisen kielitieen laitos, Helsingin yliopisto, ja
+ Vieraiden kielten laitos, Joensuun yliopisto
+
+This program is distributed under Gnu Lesser General Public License (cf. the
+file LICENSE in distribution).
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+Tekijät: Nicholas Volk (nvolk@ling.helsinki.fi)
+ Martti Vainio
+ Stefan Werner (stefan.werner@joensuu.fi)
+
+
+2004-10-22: Festival on ohjelman kirjoittamisen ja julkaisun välillä
+ ehtinyt versiosta 1.4.3 versioon 1.96. Pitäisi toimia
+ myös uusissa versiossa. En ole testannut. (NV)
+
+FESTIVALIN SUOMENKIELISTEN SUOPUHE-ÄÄNTEN KÄYTTÖOHJE
+
+MANUAL FOR FINNISH FESTIVAL VOICES (in Finnish)
+
+Yleisen kielitieteen laitos, Helsingin Yliopisto
+
+Nicholas Volk, others
+
+
+1. JOHDANTO
+
+Tässä paperissa esitellään Festival-puhesynteesijärjestelmän,
+<http://www.cstr.ed.ac.uk/projects/festival>, päälle
+Suopuhe-projektissa rakennetut suomenkieliset äänet.
+Työ tehtiin Helsingin yliopiston yleiisen kielitieteen laitoksella
+ja Joensuun yliopiston vieraiden kielten laitoksella.
+Tavallaan tämä paperi siis laajentaa Festivalin oman dokumentaation
+(<http://www.cstr.ed.ac.uk/projects/festival/manual>) kattamaan
+myös suomenkieliset äänet. Kun nyt kirjoitan tätä omalla ajallani,
+niin mitään kauhean hääviä dokumentaatiota on turha odottaa
+
+Suomenkielisen äänen kehitys aloitettin kevät-kesällä 2000.
+Tällöin Festivalista oli käytössä versio 1.4.1. Nyt
+kevättalvella 2003 on Festivalista olemassa versio 1.4.3.
+Suomenkielinen Festival-laajennus tukee ainakin tätä uusinta
+versiota, uskoaksemme myös aikaisempia versioita ainakin
+versioon 1.4.1 asti. Suomenkielistä ääntä tehdessä käytettiin omien
+kehitystyökalujen lisäksi uusien Festival-äänien tekemiseen tarkoitettua'
+Festvox-työkalupakettia
+<http://www.festvox.org>, käytännössä paketin versiota 1.2 - 1.6.
+
+Suomenkielisestä laajennuksesta julkaistiin ensimmäinen "vakaa"
+versio 5.2.2003 ja siihen ensimmäinen bugikorjaus heti seuraavana päivänä.
+Ohjelman lopullista lisenssiä ei ole vielä tätä kirjoitettaessa päätetty,
+mutta lisenssin pitäisi ratketa vielä tämän kuun aikana. Joku
+open source -lisenssi sen tulisi kuitenkin olla.
+
+Suomenkieliset äänitietokannat ja ohjelmat löytyvät
+Helsingin yliopiston yleisen kielitieteen laitoksen sivulta
+(<http://www.ling.helsinki.fi/suopuhe/>).
+Toistaiseksi projektin tekeleitä jaetaan vain projektin osapuolille ja
+yhteistyöyliopistoille.
+
+Lisäksi projektin yhteydessä valmistettiin erillinen tekstin lavennin
+(<http://www-ling.helsinki.fi/suopuhe/lavennin/>), jonka tuottamaa
+XML-muotoista tekstiä suomenkielinen järjestelmä ymmärtää.
+
+
+ Helsingissä 23.5.2003
+
+ Tekijät
+
+2. TYÖNJAOSTA
+
+Ensimmäinen suomea puhunut versio syntetisaattoristamme taisi olla kokonaan
+Martti Vainion (MV) käsialaa. Tämän rungon päälle rakennetut modulit, kuten
+tavutus, tauotus ja alkukahdennus, ovat kaikkine virheineen pääsääntöisesti
+Nicholas Volkin (NV) käsialaa. Grafeemi-foneemio -konversiosäännöt
+perustuivat MV:n aikaisemmin tekemmän työhön, jotka NV jatkoi projektin
+yhteydessä edelleen. Äännekestomalleissa käytettiin ensin MV:n aiemmin
+toisessa yhteydessä laskemia keskiarvokestostoja (Ks. MV:n väitöskirja).
+Pian tämän jälkeen Jarmo Välikangas ja MV rakensivat ensimmäiset CART-pohjaiset
+äännekestomallit Festvoxin työkalujen avulla (VIITE), joita käytettiin
+suurimman osan projektin ajasta. Lopullinen versio on Nicholas Volkin
+Festoxilla rakentamat CART-puut, joissa huomioitiin erityisesti suomen kielessä
+lingvististen teorioiden mukaan olevia merkitseviä piirteitä, kuten
+moraa. Lisätyt lingvistiset piirteet perustuivat NV:n ja MV:n
+intuitiohin. Festivalin Scheme-tulkin ja lingvistisen datan yhdistäminen
+oli tietyin osin kivulaista, eikä esim. alkukahdennusta saatu
+kunnolla mukaan kestomalliin, vaan se tehdään tavallaan kestomallista
+huolimatta.
+
+Kestomallin rakentamisessa käytettiin MV:n aikaisemmin
+(jossain aiemmassa projektissa(?)) nauhoittamaa n. 700 lauseen puhetietokantaa.
+Kaikki intonaatiomallit, mukaan lukien valituksi tullut Fujisakin malli,
+olivat MV:n kirjoittamia, NV tosin on muokannut niitä ja
+intonaatiobugit ovat yleensä hänen syytään :)
+Tämä manuaali ja virheet koodissa ovat kaikki todennäköisesti
+Nicholas Volkin kirjoittamia.
+
+Difonisanalistan laadinta sekä difonilauseiden äänitys olivat Stefan
+Wernerin vastuulla.
+
+3. MODULIT
+
+Syntesoinnin eri osavaiheet on jaettu moduleihin. Kukin moduli
+huolehtii omasta kokonaisuudestaan ja moduleita on suhteellisen
+helppo korvata keskenään. Festivalin tiedostot festival/lib/synthesis.scm
+määrittää tavallisen puhunnokset-rakenteen seuraavasti:
+
+(defUttType Text
+ (Initialize utt)
+ (Text utt)
+ (Token_POS utt)
+ (Token utt)
+ (POS utt)
+ (Phrasify utt)
+ (Word utt)
+ (Pauses utt)
+ (Intonation utt)
+ (PostLex utt)
+ (Duration utt)
+ (Int_Targets utt)
+ (Wave_Synth utt)
+ )
+
+Festival ei kuitenkaan ole niin kieliriippumaton kuin miltä se näyttää,
+esimerkiksi tekstin lavennus tehdään tyypillisesti Token-modulissa
+ennen POS-modulia. Suomessa ei kuitenkaan voida laventaa oikein, ennen kuin
+morfologinen tieto on kerätty:
+
+Initialize
+----------
+
+Luo Utterance-olion. Ei muutettu. (Alkuperäistä C++-koodia.)
+
+Text
+----
+
+Festivalin omaa, kieliriippuvaista C++-koodia, jota ei kivutta voi kirjoittaa
+uudelleen Schemessä. Tekee alkuperäisestä merkkijonosta Token-relaation.
+Sananloppuiset pisteet käsitellään (järjestysluvuissa ja tietyissä
+lyhenteissä väärin) täällä, eli poistetaan ja laitetaan
+tilalle sopiva tauon ilmaiseva feature (mikä-sen-nimi-nyt-olikaan).
+Kieliriippuvainen koodi aiheuttaa ongelmia järjestyslukujen ja pisteeseen
+päättyvien lyhenteiden tunnistuksen kanssa.
+
+Token_Pos
+---------
+
+Englannin kieltä varten rakennettu moduli, jota käsittääkseni
+mikään muu kieli ei koskaan käytä. Asettaa token_pos-featuren päälle
+kullekin tokenille.
+
+Token
+-----
+
+POS
+---
+
+Phrasify
+--------
+
+Word
+----
+
+
+15 miehen 15 soitti 15. tammikuuta klo 15.15 puhelimella numeroon 15 15 15.
+
+Word-modulissa tavutetaan sana ja määritellään eri tavujen painot.
+Suomen sanat taipuvat liikaa, jotta voitaisiin käyttää kiinteää
+sanastoa, mutta toisaalta suomen kirjoituksen ja puheen välinen
+suhde on selkeä ja sanapaino määräytyy ensimmäiselle tavulle,
+tämä ei ole suuri ongelma. Sanalistojen avulla tehdään
+ero sisältö- ja merkityssanojen välille. Yleisimmät sisältösanat on
+poimittu morfologisen perustein ja listattu, jotta osattaisiin olla
+laittamatta niille lausepainoa.
+
+Tavutus on totetutettu LTS-sääntöjen avulla (vrt. espanjankielinen ääni).
+Sääntöjen avulla "väärennetään" Festivalin tukema Lisp-lista-muotoinen
+sanakirjamerkintä. Ensimmäisen tavun pääpainon (2) lisäksi sanoille merkitään
+myös mahdollinen sivupaino (1) ja painottomat tavut (0):
+
+ ("takaraivo" "content" (((t a) 2) ((k a) 0) ((r a i) 1) ((v o) 0)))
+ ("mittari" "content" (((m i) 2) ((t: a) 0) ((r i) 0)))
+ ("mato" "content" (((m a) 2) ((t o) 0)))
+ ("matto" "content" (((m a) 2) ((t: o) 0)))
+
+
+Tarkempi määritys sanaston merkinnöille löytyy Festivalin dokumentaatiosta.
+Kannattaa kuitenkin huomatata, että kirjoitetun ja puhutun kielen tavutus
+ei mene aivan yksi yhteen: kaksi samaa kirjainta vastaa tavallisesti
+yhtä pitkää äännettä, esim. äskeisen mittari-sanan t:-kirjaimet realistuvat
+puheessa yhtenä pitkänä t-äänteenä. Festivalissa ei äänteitä voi
+kuvata ambisyllaabisina eli kahteen tavuun kuuluvina, joten olemme
+käyttäneet jälkimmäistä tavua äänteen paikkana. Tällöin
+lyhyet ja pitkät äänteet käyttäytyvät samalla tavalla (vrt. mato ~ matto).
+Tämä tosin monimutkaistaa äännekestomallissa käytettyjen morien
+laskentaa. Todettaakoon myös, ettei äännekestomalli hyödyntänyt
+sivupainotietoa, tosin tätä tietoa ei onnistuttu myöskään eristämään
+parhaalla mahdollisella tavalla opetusta varten.
+
+Pauses
+------
+
+Intonation
+----------
+
+Post_Lex
+--------
+
+Duration
+--------
+
+Oma kestomoduli Duration_Finnish. Periaatteessa äännekestot haetaan
+tavalliseen tapaan CART-puusta. Lisäksi moduli huolehtii, että
+äänteiden tietty minimipituus säilyy (nyt 30ms) ja venyttää
+viimeistä äännettä. (Viimeinen äänne sisältää segmentointiteknisistä
+syistä hiljaista loppuaspiraatiota ja lisäksi kestomalli ei välttämättä
+venytä äännettä itsekseen tarpeeksi.)
+
+
+Int_Targets
+-----------
+
+Wave_Synth
+----------
+
+Signaalin generointi kerättyjen tietojen perusteella. Festivalin omaa
+C++-koodia.
+
+4. MARK-UP
+
+Suomenkielisiä ääniä varten kehitettiin oma XML-moodi, nimeltään Suopuhe.
+
+5. ÄÄNET
+
+Kaksi ääntä, miesääni hy_fi_mv_diphone ja naisääni suo_fi_lj_diphone.
+Äänten lisenssitilanteesta en ole tietoinen.
+
+6. TEHOKKUUS
+
+Testaamatta.
+
+7. TIEDOSTOT
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/COPYING
+
+Lisenssi, jahka päätetty...
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_duration.scm
+
+Suomen kielen äännekestomalli. Laskee CART-puun avulla
+äänteiden kestot. Lisäksi taukoa edeltäviä äänteitä venytään
+erikseen, sillä opetetun puun tekevä venytys ei tuntunut riittävältä.
+RMSE 0.7680 Correlation is 0.6294 Mean (abs) Error 0.5780 (0.5058)
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_lex.scm
+
+Sanastotiedosto. Sanastojen avulla tunnistetaan sisältö- ja merkityssanat.
+Lisäksi yksittäisten kirjainten leksikkoentryt.
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_lts.scm
+
+Sisältää Letter.to-sound -säännät, jotka muuttavat grafeemit eli merkit
+foneemeiksi. LTS-konversion yhteydessä tehdään myös tavutus.
+"Väärentää" Festivalin sanastoon kuulumattomille sanoille (käytännössä
+kaikki sanat pl. yksittäiset aakkkoset) leksikkomerkinnät.
+Merkinnän sanaluokka määritty finnish_lex-tiedoston tietojen påerusteella
+tai suopuhe-moodilta saatujen tietojen perusteella.
+
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_mv_int.scm
+
+Intonaatiomalli eli Fujisakin malli. Laskee perustaajuuden tavallisesti
+50 millisekuntin välein, lyhyissä tavuissa tiheämmin.
+
+Intonaation yhteydessä myös nimeää tavut.
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_mv_phrase.scm
+
+Lisää puhunnokseen tauot ja tauotuksen jälkeen huolehtii myös
+alkukahdennuksesta.
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/finnish_phones.scm
+
+Suomenkielisten äänteiden määritelmät. Käytetään mm. kestomallin apuna.
+Äänteiden nimien pohjana toimii Sampa-aakkosto, mutta yhdenmukaisuus
+ei ole täydellinen. Meidän tiettyjen äänteiden nimet ovat intuitiivisesti
+helpompia muistaa.
+
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/hy_fi_mv_diphone.scm
+ festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/suo_fi_lj_diphone.scm
+
+Mies- (hy_fi_mv_diphone) ja naisäänen (suo_fi_lj_diphone)
+määritelmät. Naisäänen "tiedosto" on vain symbolinen linkki miesääneen.
+
+festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/suopuhe.dtd
+
+Suopuhe-XML-moodin käyttämä DTD.
+
+festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/suopuhe_filter.perl
+
+Suopuhe-moodin käyttämä tekstin esikäsittelijä.
+Siivoaa syötettä erinäisin osin. Siivous on helpompi tehdä Perlillä
+kuin Schemellä...
+
+festival/lib/voices/finnish/hy_fi_mv_diphone/festvox/suopuhe_mode.scm/
+
+Suopuhe-moodin tulkitseva scheme-koodi
+
+festival/lib/voices/finnish/hy_fi_mv_diphone/group/mvlpc.group
+
+Miesäänen äänitietokanta.
+
+festival/lib/voices/finnish/suo_fi_lj_diphone/group/ljlpc.group
+
+Naisäänen äänitietokanta,
+
+8. SUOPUHEEN FUNKTIOT
+
+(= N1 N2)
+Return true if N1 and N2 are equal numbers.
+
+(Duration_Finnish)
+Lengthens the final phone after the duration cart tree.
+
+(SayText TEXT)
+TEXT, a string, is rendered as speech. (Suopuhe redifinion)
+
+(accented_p SYL)
+Sees if the syllable is accented...
+
+(add_linguistic_break WORD)
+Adds a phrase break after the word, if the context is appropriate.
+If the word is final return nil. If there already is a pause
+return the word itself. Also is pause is added, return the word itself.
+If pause couldn't be added, try the same with the next word. Simple!
+
+(baptize SYL)
+Baptizes the given syllable by concatenating together the names
+of it's daughters (phones)
+
+ (calculate_fujisaki acc_list phrase list point alpha beta f_min)
+Calculates the Fujisaki parameter values for a given point. Returns an absolute
+Hertz value
+
+(compound_stress WORD)
+Handles the exception stress placement in compounds.
+The few compounds supported are recognized by the '-' separator.
+However secondary word stress did not show up in duration and intonation
+models... We could also add boundary detection based on vowel positions
+in neighboring syllables.
+
+(distance_from_prev_pause WORD)
+Distance (in syllables) from the previous word.
+
+(distance_to_next_pause WORD)
+Counts the distance from the end of the word to the next pause in syllables.
+
+(end_of_phrase PHONE)
+Used by the duration tree to detect phrase boundary.
+Returns either 1 (last syllable), 2 (penultimate syllable of the phrase)
+or 0 (other). Somehow I'm sure that there are easier and faster
+ways to do this...
+
+(extract_feats relname feats utt outfd)
+Extract the features and write them to the screen.
+
+No documentation available for user-defined function.
+
+(find_phrase_break WORD)
+If the distance from previous break to the next break is
+long enough (now 25 syllables), try to add more pauses
+in between. New pauses are added between certain word classes.
+
+(define (find_phrases utt)
+Returns a list of phrases from an utterance in the form
+of lists whose car is the break level followed by start and end times
+
+(finnish_lts WORD)
+Creates the lexical entry for the given WORD.
+
+(finnish_number INT)
+Converts the INT into a corresponding string.
+Very simple. Does not handle cases.
+
+(finnish_token_to_words token name)
+A few simple ad hoc solutions for the most common simple T2W-problems.
+It was much nicer to use an external Perl text normalizer than scheme.
+
+(finnish_tosyl_brackets phones)
+Takes a list of phones containing - as syllable boundary.
+Should we add a compound boundary? Probably...
+Construct the Festival bracket structure.
+Used by finnish_lts-function.
+
+(fujisaki_targ_func UTT STREAMITEM)
+Returns a list of targets for the given syllable.
+
+(general_fi_diphone)
+Shared settings for all Suopuhe voices.
+
+(general_fi_diphone)
+Shared settings for all Suopuhe voices.
+
+(get_accent_list UTT)
+
+(get_amplitude point beta)
+Calculate the amplitude from time and beta information:
+
+(get_phrase_amplitude time alpha)
+calculate phrase amplitude for a given point in time.
+
+(get_phrase_list utt)
+Returns a list of phrase commands for an utterance. The first command
+is higher than the following ones.
+
+(initial_doubling WORD)
+Checks wheter the current WORD can triggers initial doubling on the
+next word or not.
+
+(insert_pause2 WORDITEM)
+ Insert a little break (pause segment) after the last segment in WORDITEM in UTT.
+
+(intro-finnish)
+Synthesize an introduction to the Festival Speech Synthesis System
+in Finnish.
+
+(lab_body PHONE)
+Writes the LAB data for a given phone and recursively call
+itself while there are phones left (ortographically right:).
+The header is done in lab_header procedure which typically
+is the caller of this function.
+
+(lab_header UTT)
+Returns the contents for the to-be *.lab file based on the UTTerance.
+Saving the output to a file is done somewhere higher.
+
+(language_finnish)
+Set up language parameters for Finnish.
+
+(list2string LIST)
+Construct a string from a list of symbols
+
+(make_number INT)
+Splits numbers into 3-letter chunks, which are converted into a number.
+Also adds an appropriate quantifier (like thousands) to each triplet,
+thus producing any int between 1 - 999999999.
+
+(make_number2 INT)
+Converts an up-to-three digit sequence into a number.
+
+(max num1 num2)
+Returns the greater of the two.
+
+(min num1 num2)
+Returns the smaller of the two.
+
+(monotone UTT SYL)
+Monotonous intonation model.
+
+(mora PHONE)
+Counts the number of morae in the syllable.
+Used by the duration model.
+
+(mora2 list_of_phones)
+Counts the moras (morae?) in a given list of phones.
+Does not support ambisyllabic long consonants.
+
+(neg number)
+Negates a number -- Festival SIOD doesn't understand (- number), but
+requires TWO arguments to the '-' operator
+
+(number_list DIGIT)
+Returns the corresponding string for a given DIGIT
+
+(one_by_one WORD)
+Speaks the letters in the given WORD one by one.
+
+(parts_of_speech UTT)
+Returns a list of sublists. Each sublist consists of a word's name
+and part-of-speech based on the UTTerance.
+
+(phone_durations PHONE)
+Prints the name and duration of a given PHONE.
+The recursively goes through the next phones and does the same for them also.
+
+(phones UTT)
+Prints a list of phone names in UTTerance and returns the original utterance
+unchanged..
+
+(pop_accent)
+Removes and returns the topmost whatever from the suopuhe_accent_stack.
+
+(pop_pos)
+Removes and returns the topmost whatever from the suopuhe_pos_stack.
+
+(push_accent alkio)
+Adds alkio to the top of the suopuhe_accent_stack.
+
+(push_pos alkio)
+Adds alkio to the top of the suopuhe_pos_stack.
+
+(remove_head_and_tail_spaces string)
+Removes unspoken space sequences from the beginning and end of a give string.
+
+(save_suopuhe_output UTT)
+Saves the UTT and some textual data about it to files.
+
+(skip_pause WORD)
+Returns the word after the next pause or nil if there are no intersentence
+pauses left.
+
+(sqr NUM)
+NUM ** 2.
+
+(suopuhe_Pauses utt)
+Converts the punctuation marks into appropriate pauses.
+Does the list intonation too.
+
+(suopuhe_add_break UTT)
+Adds pauses if necessary to a (overlong) utterance.
+Applies some linguistic intelligence in the process...
+
+(suopuhe_adjust_volume utt)
+Amplify or attenutate signale based on value of suopuhe_vol_factor
+and suopuhe_vol_type (absolute or relative).
+
+(suopuhe_exit_func)
+Exit function for SUOPUHE mode
+
+(suopuhe_init_func)
+Initialisation for SUOPUHE mode
+
+(suopuhe_init_globals)
+Initialize various global variables.
+
+(suopuhe_setup)
+Reset tts hooks for suopuhe mode.
+
+(suopuhe_token_to_words token name)
+SUOPUHE mode token specific analysis.
+
+(suopuhe_voice_param_setup)
+Set up original values for various voice parameters.
+
+(syllable stress UTT)
+Returns a list of sublists. Each sublist consists of a syllable name
+and a syllable stress value based on the UTTerance.
+
+(syllables_in_word SYL)
+Counts the number of syllables in a given word. Actually counts the numebr
+of syllables from a given syllable to the end of word.
+
+(tts FILE MODE)
+ Convert FILE to speech. MODE identifies any special treatment
+ necessary for FILE. This is simply a front end to tts_file but
+ puts the system in sync audio mode first. [see TTS]
+
+(utt.length utt)
+Returns the length of an utterance in syllables
+
+(wavesurf UTT)
+Saves the utterance UTT as a wav file
+and the creates the corresponding lab file.
+The files are placed in the /tmp dir.
+Then starts the wavesurfer-program for speech analysis.
+
+(word durations2 WORD)
+Returns the name and start and end times of the given word.
+Then recursively calls the next word if any and finally
+returns a string consisting of data from all words visited.
+
+(word_has_break? WORD)
+True, if the WORD is followed by # or ## "phone".
+
+(word_list_entry? STRING LIST)
+Checks whether the STRING is member of any of the sublists of LIST.
+
+
+9. SUOPUHEEN MUUTTUJAT
+
+suopuhe_output_file_prefix
+ Määrittää hakemistot, johon suopuhe-moodin mukaiset tiedostot talletetaan.
+ Oletusarvo "/tmp"
+
+suopuhe_max_sentences
+ Määrittää ylärajan levylle talletettaville puhunnoksille.
+ Oletusarvo 1000. Arvolla 0 tiedostoja ei pitäisi päätyä
+ kovalevylle laisinkaan, eli tällöin puhunnokset vain soitetaan.
+
+suopuhe_aloud
+ Jos tosi niin syntetisoitava ääni soitetaan ulos kaiuttimista,
+ muuten (arvolla epätosi) se vain talletetaan levylle.
+ Oletusarvoisesti tosi.
+
+[Vajavainen]
+
+10. TUNNETUT BUGIT
+
+Festival README.tiedosto kertoo seuraavaa:
+
+ INSTALL
+
+ Festival should run on any standard Unix platform. It has already run
+ on Solaris, SunOS, Linux and FreeBSD. It requires a C++ compiler (GCC
+ 2.7.2, 2.8.1, 2.95.[123], RedHat "gcc-2.96" and egcs are our standard
+ compilers) to install. A port to Windows NT/95/98 and 2000 using
+ either Cygnus GNUWIN32 and Visual C++ is included, this is still new
+ but many people are successfully using it.
+
+
+Joillain gcc:n versiolla (3.2x) ei Festivalin versio 1.4.2 käänny.
+Ongelma ratkeaa siirtymällä uudempaan Festivalin versioon (1.4.3)
+
+Verkosta löytyy valmiita RPM-tiedostoja, mutta näissä on ääkkösiin
+liittyvä bugi (7-bittinen ascii...), joka johtuu SIOD:n käyttämän
+editline-komentoriviohjelman rajoituksista.
+Lähdekoodin tehtävä bugikorjaus on kerrottu www:ssä (Ks. kpl 12), mutta
+RPM:ään tätä ei voine tehdä.
+
+Syntetisaattori käyttää ensisijaisesti lavennukseen ulkoista
+lavennin-modulia, joten sen omat tekstin lavennussäännöt ovat sangen
+huonot.
+
+Alkuperäinen koodimme on kirjoitettu ISO-8859-1 -standardilla
+(vai oliko se 8859-15). Uudemmat unixit yrittävät tukea UTF-8:aa.
+UTF-8-tuki puuttuu... Korjaukset tulisi tehdä tiedostoon
+editline.cc, mutta niitä tuskin ehditään tekemään/testaamaan projektin
+puitteissa,
+
+11. KÄYTTÖ
+
+Lukee laventimen tekemät suo- tai suopuhe-prefiksillä varustetut tiedostot
+suopuhe-moodissa, käskyllä
+
+$ festival --tts foo.suo
+
+Muuten käyttö festivalin ohjekirjojen mukainen
+
+12. WWW-SIVUT
+
+Syntisaattorit ohjesivut tulevat vastaisuudessa löytymään
+osoitteen http://www.ling.helsinki.fi/suopuhe alta.
+
+
+
+MUUTA
+
+VERSIOHISTORIA
+
+
+
+Notaatio:
+numerot kertovat versionumerot,
+kirjaimet viittavat pieniin päivityksiin/bugikorjauksiin.
+
+ 22.10.2004 Lisenssitekstin liimailua
+
+ 1.0f 23.5.2003 Äänipakettin polku festvox-paketteja vastaavaksi.
+ Puuttuvat funktioiden dokumentoinnit koodiin sekä
+ funtioiden dokumentaatio tähän dokumenttiin.
+ README-tiedostot siirtyneet yhtä hakemistoa ylemmäs.
+
+ 1.0e 22.4.2003 Duration_Method paremmin ääniriippumattomaksi.
+ Versio naisäänestä pihalle
+
+ 1.0d 16.4.2003 Korjattu suopuhe-moodissa ollut tauotusvirhe.
+ Korjattu paketintekoskriptissä ollut virhe, jonka
+ takia edellinen julkaistu versio (1.0c) ei sellaisenaan
+ toiminut.
+
+ 1.0c 10.4.2003 Korjattu virhe LTS-säännöistä.
+ Poistettu 1 tarpeettomaksi käynyt funktio.
+ Mahdollisesti muitakin pieniä muutoksia
+
+ 1.0b 10.2.2003 Tämä tiedosto osaksi pakettia.
+ Muutamaa äännekestoa korjattu käsin. (mm. pitkä l)
+
+ 1.0a 6.2.2003 Suopuhe-moodista unohtuneet funktiot lisätty
+ pakettiin. Muutama bugikorjaus.
+
+ 1.0 5.2.2003 julkaistu alustava versio
+
+Ennen helmikuuta 2003 julkaistut beta-versiot oli nimetty julkaisupäivän
+mukaan.