Festival-puhesyntetisaattorin asennus

Tuorein versio tästä sivusta: http://www.ling.helsinki.fi/~nvolk/festival.shtml

Copyright

Copyright © 2003-2008 Nicholas Volk
All Rights Reserved.

Tämän tekstin tekijänoikeudet kuuluvat allekirjoittaneelle, Nicholas Volkille, ei entisille, nykyisille eikä tuleville työnantajilleni1. Ohjetta saa käyttää omalla vastuullaan miten lystää. Ohjeen saa julkaista edellyttäen, että 1) tämä copyright-teksi sisällytetään julkaisuun, 2) tehdyt muutokset tulee selkeästi merkitä ja 3) tekijän nimeä ei saa poistaa.

Sisältö

Ohjelmistojen hakeminen WWW:stä

Festival-puhesynteesiohjelmiston uusimmat versiot saa parhaiten Festvoxin sivuilta (http://www.festvox.org), ei Festivalin viralliselta kotisivulta Edinburghissa), sillä aivovienti on vienyt projektin kantavat voimat rapakon taakse CMU:hun töihin. Tämä ohje on päivitetty Festivalin versiolle 1.96. Ohje soveltunee kuitenkin myös aikaisempiin versiohin (1.4.3).

Festvoxin etusivulla valitse ensin Festival Download ja sitten Downloads. Sitten klikkaa linkkiä 1.96 sources, voices and lexicons ja pääset hakemistoon (http://festvox.org/packed/festival/latest/, josta voit noutaa asennuksessa tarvittavat tiedostot.

Pakollisia tiedostoja ovat vain Speech Tools (speech_tools-1.2.96-beta.tar.gz) ja Festival (festival-1.96-beta.tar.gz). Äänitietokannat ja sanastot ovat ydin-Festivalista. Ilman niitä Festival tosin toimii vain epästandardina SIOD/Scheme-tulkkina.

Festvoxista saatavat äänitietokannat ja leksikot eivät siis ole pakollisia, varsinkin jos saat käyttöösi suomenkielisen äännetietokannan ja sen tarvitseman koodin. Yleisesti todettakoon, että festvox-alkuiset tiedostot ovat ääniä ja festlex-alkuiset tiedostot ovat sanastoja. Osa äänistä vaatii sanankielisen sanaston toimiakseen, mutta koska useampi ääni voi käyttää samaa sanastoa, jaellaan ne toisistaan erillään. Lisäksi osa tarjolla olevista äänistä on MBROLA-ääniä, joten ne vaativat hieman toisenlaista virittelyä, jota emme tässä käy läpi.

Itse voisin ottaa näistä seuraavat äänet (leksikko suluissa): amerikanenglantia puhuvan äänen festvox_kallpc16k.tar.gz (festlex_CMU.tar.gz) ja britti- tai oikeammin skottienglantia puhuvan äänen festvox_rablpc16k.tar.gz (festlex_OALD.tar.gz). Molempiin ääniin tarvitaan lisäksi "lisäsanasto" festlex_POSLEX.tar.gz.

festvox_ellpc11k.tar.gz on muuten espanjankielinen ääni, joka ei tarvitse mitään leksikkoa avukseen. Lisäksi olemassa on mm. kymrinkielinen ääni!

Käyttöjärjestelmät

Festival on kehitetty Unix-ympäristössä, joten siellä se kääntyy näteimmin. Tosin lukuisat eri C++-kääntäjät ja niiden eri versiot aiheuttavat satunnaisesti päänvaivaa.

Windows-puolella ohjelma on käännettävissä Cygwinissä. Tosin em. GCC:n versio-ongelma voi tulla vastaan myös siellä.

Festival kääntyy myös Mac OS X -koneessa, mutta siitä en osaa sanoa sen kummempaa.

Tiedostojen purkaminen

.tar.gz-päätteiset tiedostot ovat pakattuja, eli ensimmäiseksi ne pitää purkaa. Tähän tulee käyttää Unixin komentorivikäskyjä, ei esim. Winzip-ohjelmaa, jonka on raportoitu purkavan pakatut difonitietokannat väärin. (WinZip-ongelma ilmeisesti johtuu "intelligent CR/LF"-ominaisuuden päällä olosta: WinZip luulee group-tiedostoa tekstitiedostoksi ja muuttaa "rivinvaihtomerkkejä", joihin ei saisi kajota.) Purkaminen Unix-koneessa (tai Cygwinissä) tapahtuu käskyillä ($ tarkoittaa kehotetta eli promptia):

      $ gunzip foo.tar.gz
      $ tar -xvf foo.tar
    

tai helpommin kerralla käskyllä:

      $ tar -zxvf foo.tar.gz
    

jos käytössä on vähänkin uudempi versio tar-käskystä.

Festivalin purkaminen ja asennus

Suosittelisin, että asennat Festivalin omaan kotihakemistoosi.

Ensimmäisenä asennetaan Speech Tools, joka sisältää erinäisiä Festivalin käyttämiä kirjastoja. Sen voi noutaa wget-komennolla ja purkaa seuraavasti:

      $ wget http://www.festvox.org/packed/festival/latest/speech_tools-1.2.96-beta.tar.gz
      $ tar -zxvf speech_tools-1.2.96-beta.tar.gz
    

Tämän jälkeen korjataan komentorivieditorissa oleva, ääkkösten kanssa hankaluuksia aiheuttava piirre. Tämä tehdään kommentoimalla ohjelman C-koodista ongelmia aiheuttava tiedoston speech_tools/siod/editline.c noin 1949. rivi, jossa lukee:

    {   'd',       fd_kill_word    },
    

Koneessa, jossa on Perl, tämän voi tehdä käskyllä

      $ perl -pi~ -e "s/\{.*'d'.*fd_kill_word/\/\/ $&/;" speech_tools/siod/editline.c
    

Muuten rivin pitää kommentoida laittamalla sen eteen kaksi /-merkkiä jollain tekstieditorilla, esimerkiksi Emacsilla.

Tämän jälkeen voidaan kääntää kyseinen Speech Tools:

      $ cd speech_tools
      $ ./configure
      $ make
      $ cd ..
    

Äänet ja leksikot kannattaa purkaa jo ennen Festivalin asennusta. Alla näytetään festvox_rablpc16k.tar.gz-äänen purku (paketti pitää tietenkin hakea ensin):

      $ cd .. # jos oltiin vielä speech_tools-hakemistossa
      $ tar -zxvf festvox_rablpc16k.tar.gz
    

Puretut äänet menevät jonnekin hakemiston festival/lib/voices/language alle. Puretut leksikot menevät jonnekin hakemiston festival/lib/dicts alle. Festival löytää automaagisesti oikeisiin paikkoihin puretut äänet ja leksikot, joten niitä ei tarvitse erikseen ladata. Äänet voi myös purkaa Festivalin asentamisen jälkeen, koska ne käyttävät ajonaikona tulkittavaa Scheme-koodia. Ääni ei siis tarvitse varsinaisesti "asentaa", sen kun purkaa oikeaan paikkaan.

Speech Toolsin onnistuneen kääntämisen ja mahdollisten äänten purkamisen jälkeen puretaan ja asennetaan Festival kutakuinkin samalla tavalla. Seuraavat käskyt olettavat, että olla samassa hakemistossa kuin Speech Toolsia purettaessa:

      $ tar -zxvf festival-1.96-beta.tar.gz
      $ cd festival
      $ ./configure
      $ make
    

Festivalin voi käynnistää nyt (tässä hakemistossa) käskyllä

      $ bin/festival
      Festival Speech Synthesis System 1.96:beta July 2004
      Copyright (C) University of Edinburgh, 1996-2004. All rights reserved.
      For details type `(festival_warranty)'
      festival>  
    

Jos on asentanut jomman kumman suosittelemistani englanninkielisistä äänistä, Festival osaa laittaa äänen automaattisesti oletusääneksi. Suomenkielisten äänten kanssa joutuisit erikseen asettaamaan äänen päälle ensin. Voit syntetisoida haluamasi tekstit SayText-käskyllä:

      festival> (SayText "hello world!")
    

Sulut viittaavat Festivalin käyttämään LISP/Scheme-pohjaiseen SIOD-komentotulkkiin tai oikeammin epästandardiin versioon SIOD:sta. Jos ääniä ei ole asennettu, Festivalia voi käyttää pelkkänä SIOD-komentotulkkina. Festivalin suorituksen voi lopettaa käskyllä (quit):

      festival> (quit)
      $  
    

Suomenkieliset äänet

Festival-ympäristöön on kehitetty myös suomenkielisiä ääniä. Ensimmäiset suomenkieliset äänet tehtiin Tekesin rahoittamassa Suopuhe-projektissa Helsingin ja Joensuun yliopistoissa. (2000-huhtikuu 2003). Projektin jäljiltä julkaistiin kaksi äänitietokantaa LGPL-lisenssillä. Projektissa tehtiin siis difonikonkatenaatiotekniikalla kaksi ääntä: miesääni hy_fi_mv_diphone ja naisääni suo_fi_lj_diphone. Suopuhe-projektille ei tietääkseni ole tulossa jatkoa yliopistomaailmassa, joten projektin jatkokehitys on käyttäjien varassa (vrt. LGPL).

Seuraavassa esitellään miesäänen äänitietokannan asentaminen Festivaliin. Naisäänen asennus tapahtuu periaatteessa samalla tavalla. Hae paketti hy_fi_mv_diphone-date.tgz. Paketti puretaan siinä hakemistossa mihin Festival ja Speech Tools ovat asennettuina käskyllä

      $ tar -zxvf hy_fi_mv_diphone-date.tgz
    

Äänitietokannat menevät näin suoraan oikeaan paikkaan ja ääni on valmis käytettäväksi:

      $ festival
      Festival Speech Synthesis System 1.96:release July 2004
      Copyright (C) University of Edinburgh, 1996-2004. All rights reserved.
      For details type '(festival_warranty)'
      festival>  
    

Tämän lisäksi saattaa tulostua jotain suomenkieliseen ääneen liittyvää informaatioita. Äänen pitäisi kuitenkin olla käytettävissä:

      $ (voice_hy_fi_mv_diphone) ;; laittaa äänen päälle
      hy_fi_mv_diphone
      $ (SayText "Terve maailma")
    

Todettakoon tässä, että allekirjoittanut on ohjelmoinut suurimman osan sekä Suopuheen että Bitlipsin syntetisaattoreista. Suopuheen koodista löytyvät bugit ja kysymykset kannattanee raportoida minulle yliopiston osoitteeseen, jossa ehkä korjailen niitä satunnaisesti joutessani. Luulenpa, ettei Suopuhetta kukaan muu ainakaan tule enää päivittämään. Kaupallisia intressejäni en kuitenkaan tällä toiminnallani ajatellut vaarantaa...

Installointiskripti

Ohjelmat voi noutaa ja asentaa käyttämällä tekemääni festivaali.sh-skriptiä. Skripti asentaa Speech Toolsin, Festivalin, Suopuheen miesäänen ja Festvoxin käyttäjän kotihakemistoon. (Festvoxia ei tässä dokumentissa käsitellä.) Skripti on jokseenkin testaamaton, enkä vaivaudu vastaamaan sitä koskeviin kysymyksiin...

Konfigurointi

Festival lukee erinäisiä asetustiedostoja, joihin voi tallettaa muuttujille sopivia alkuarvoja, vaihtaa oletusääntä tms. Käyttäjä voi laittaa unixissa kotihakemistoonsa tiedoston .festivalrc ja kirjoittaa siihen haluamansa käskyt. Paikalliset "globaalit" asetukset voi tehdä tiedostoihin festival/lib/siteinit.scm ja festival/lib/sitevars.scm. Näistä olen itse käyttänyt vain ensin mainittua. Mikään näistä tiedostoista ei ole valmiiksi olemassa, vaan ne on itse luotava jollain tekstieditorilla.

Hyödyllisiä SIODin peruskäskyjä

Festivalin komentotulkki käyttää Lisp-pohjaista Scheme-kieltä. Käytössä on epästandari SIOD-niminen komentotulkki. Tämä siksi, että SIODia voi liittää kaupallisiin tuotteisiin ilman ongelmia. Festivalin SIOD poikkeaa hieman standardi-SIODista, joten Festivalin oma dokumentaatio ja Festvoxin dokumentaatio ovat luotettavimmat tietolähteet.

Käsky halutun tekstin muutamiseksi syntetisoiduksi wav-tiedostoksi:

      (utt.save.wave (SynthText "teksti") "foo.wav" "wav")
    

Äänenvaihtokäskyjä (kaikkia tietokantoja ei välttämättä ole koneellasi):

      (voice_hy_fi_mv_diphone) ;; suomenkielinen miesääni
      (voice_suo_fi_lj_diphone) ;; suomenkielinen naisääni
      (voice_kal_diphone) ;; amerikanenglanti
      (voice_rab_diphone) ;; englanninenglanti (mies)
      (voice_el_diphone) ;; espanja (mies)      
    

MBROLA-tietokantaa käyttävä ruotsinkielinen synteesikin olemassa. MBROLAn asennuksesta tarkemmin Festivalin sivuilla ja ruotsin kieltä tukeva koodi löytyy Johan Fridin sivuilta.

Puhenopeuden säätö

      (Parameter.set 'Duration_Strech n)
    

jossa n on nopeutus/hidastuskerroin, esim. 0.5 tai 2.0.


1 Samantyyppinen, mutta puutteellisempi ja mahdollisesti osin vanhentunut Suopuhe-projektin aikana silloiselle työnantajalle (HY) kirjoittama ohje löytyy osoitteesta http://www.ling.helsinki.fi/suopuhe/ohjeet.shtml.


Nicholas Volk