Festival parla in Italiano, con Fedora 10
Con Fedora c’è la possibilità di utilizzare festival come sistema per la sintesi vocale.
L’installazione di festival, dei suoi strumenti di utilizzo e della relativa documentazione in fedora 10 è molto semplice:
# yum install festival festival-speechtools-utils festival-docs
Sempre tramite yum, su fedora, è molto semplice installare degli oratori in modo tale da far pronunciare un testo a festival. Gli oratori presenti nei repo ufficiali di fedora al momento in cui scrivo sono i seguenti:
festvox-awb-arctic-hts.x86_64 : Scottish-accent US English male speaker "AWB" for Festival
festvox-bdl-arctic-hts.x86_64 : US English male speaker "BDL" for Festival
festvox-clb-arctic-hts.x86_64 : US English female speaker "CLB" for Festival
festvox-jmk-arctic-hts.x86_64 : Canadian-accent US English male speaker "JMK" for Festival
festvox-kal-diphone.x86_64 : American English male speaker "Kevin" for Festival
festvox-ked-diphone.x86_64 : American English male speaker "Kurt" for Festival
festvox-rms-arctic-hts.x86_64 : US English male speaker "RMS" for Festival
festvox-slt-arctic-hts.x86_64 : US English female speaker "SLT" for Festival
(La porzione di stringa “x86_64” sarà differente a seconda della versione di fedora che si è installata, se si è installato un sistema a 32bit sarà probabilmente “i386”, io ho fedora a 64bit di conseguenza i pacchetti terminano con quella porzione di stringa: “x86_64”).
Con il comando che ho suggerito precedentemente viene già installata una voce che è la seguente:
# rpm -qa|grep festvox
festvox-slt-arctic-hts-0.20061229-7.fc10.x86_64
Si potrà utilizzare festival in modo che pronunci un testo inglese, per esempio:
$ echo hallo world | festival --tts
[si dovrebbe sentire dalle casse del proprio pc la frase pronunciata in Inglese]
Per dir la verità se si scrive qualche cosa in italiano verrà tranquillamente letta e il risultato sarà qualcosa di veramente simpatico:
$ echo Non mi prendere in giro | festival --tts
Allora come fare per inserire la voce italiana per festival se non c’è nei repo ufficiali di fedora?
Non è difficile, esiste il progetto FESTIVAL in Italian.
Il progetto fornisce molte librerie per poter dare una voce italiana al proprio festival. Lo si può fare tramite una voce base, o utilizzando mbrola o altri sistemi di sintesi vocale.
Per il momento spiego come dare una voce base femminile (o maschile) a festival:
- Prima di tutto bisogna scaricare i pacchetti contenenti il lessico e lo schema della lingua italiana,
italian_scm.tar.gz
(per lo schema) efestlex_IFD.tar.gz
(per il lessico), si possono trovare nella pagina di download del progetto italiano sotto la sezione “Download lexicon, scheme files and IMS PaIntE module” e sottosezione “Italian lexicon and scheme files”; - Scaricare la voce italiana, pacchetto
festvox_lp_diphone.tar.gz
, che si trova sotto la sezione “Basic voices” della pagina di download del progetto italiano; - eseguire i seguenti passaggi (fare attenzione ai percorsi e in quale directory si sta lavorando):
$ su - [password di root] # cd /usr/share/ # tar xvfz /percorso_al_pacchetto_scaricato/italian_scm.tar.gz # tar xvfz /percorso_al_pacchetto_scaricato/festlex_IFD.tar.gz # tar xvfz /percorso_al_pacchetto_scaricato/festvox_lp_diphone.tar.gz
- la voce femminile italiana dovrebbe essere installata correttamente, per renderla predefinita bisogna configurare festival:
# vim /etc/festival/siteinit.scm
inserire alla fine del file la seguente riga:
(set! voice_default 'voice_lp_diphone)
- confermare la buona riuscita del lavoro:
$ echo "funziona?"| festival --tts
se tutto è ok si dovrebbe essere in grado di far pronunciare qualsiasi testo italiano con festival.
Questi sono dei passaggi abbastanza semplici per poter ottenere la lingua italiana femminile in festival e di conseguenza usare qualsiasi altro programma per la pronuncia dei testi come kttsmgr per kde.
Per quanto riguarda la voce maschile bisogna scaricare il pacchetto festvox_pc_diphone.tar.gz
, seguire gli stessi passaggi descritti e nel caso si siano già effettuati basta eseguire queste operazioni:
$ su -
[password di root]
# cd /usr/share/
# tar xvfz /percorso_al_pacchetto_scaricato/festvox_pc_diphone.tar.gz
la stringa del file di configurazione dovrà essere però così:
(set! voice_default 'voice_pc_diphone)
Come detto all’inizio si può fare interagire festival con mbrola che è anch’egli un sintetizzatore vocale ma parte da fonemi base e di conseguenza si possono ottenere anche dei risultati migliori essendo più flessibile.
Nella pagina successiva descrivo i vari passaggi per installare mbrola e far interagire festival con questo sintetizzatore.
12 Commenti
Aggiungi un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
Bellissima e utilissima guida, complimenti!
Guida utile, però, poco intuitiva, caratteristica fondamentale per la comunicazione web, non costava niente mettere un link per i download diretto dei file senza che uno dovessi andare a cercare in mezzo ad informazioni utili si ma in un primo momento dispensabile. Auguro migliorie!
Ho espressamente scelto di non fare link diretti per un download veloce ai file per due ragioni fondamentali:
1) dare visibilità ai siti web dei vari progetti, di conseguenza visibilità al lavoro svolto dai gruppi di ricercatori e sviluppatori, inoltre solo li si può reperire la documentazione e le informazioni utili inerenti a quel determinato software, informazioni che non ho messo nel mio sito web.
2) evito qualsiasi forma di violazione di eventuali licenze più restrittive (anche se i software che qui cito sono liberamente distribuibili); indicando la pagina del progetto per il download obbligo il lettore a navigarci e così capire da cosa è composto il software e i suoi termini di utilizzo (può andare a leggere la licenza e l’eventuale disclaimer).
Altre ragioni non meno importanti:
3) qualcuno potrebbe avere la necessità di scaricare una versione di software differente (esempio per quanto riguarda i pacchetti mbrola).
4) la guida non si riduce ad una semplice sequenza di operazioni da compiere, voglio che il lettore capisca cosa sta facendo e perchè.
Se la guida è poco intuitiva a causa del fatto di non aver messo il download diretto mi spiace ma è una cosa espressamente voluta.
La guida voleva essere più un riassunto ordinato delle operazioni da seguire per far funzionare le cose.
Grazie della critica, mi hai dato modo di spiegare il perchè di questa scelta 🙂
Se festival, dovuto agli accenti presenti nel testo, ritorna un errore del tipo:
LTS_Ruleset italian_downcase: no rule matches:
LTS_Ruleset: # *here* � � #
Provvedete alla ricodifica del testo, un modo semplice per farlo da linea di commando è:
1-installare il pacchetto recode:
# yum install recode
2-convertire il testo:
# recode utf8..lat1 testo_da_convertire.txt testo_convertito.txt
3-leggere:
$ festival –tts testo_convertito.txt
4-potete leggere anche in questo modo:
$ echo “Si può così configurare” | recode utf8..lat1 | festival –tts
ps. fate attenzione ai trattini prima dell’opzione “tts” sono due – – e non solo uno.
Grazie per l’appunto sulla codifica del testo 🙂
Scusami il ritardo, mi è sembrato doveroso scrivere.
Grazie per la guida, la critica non doveva sembrare offensiva e credo dalle spiegazioni gentili e puntuali che l’ha capita, hai perfettamente ragione. Ciao
grazie per la guida, seguendola sono riuscito ad avere festival funzionante in italiano in Fedora 12 con poco sforzo. Se puo’ essere utile ho anche realizzato i pacchetti rpm con mbrola e le voci italiane.
Grazie per avermi fatto sapere che la guida può essere seguita anche in fedora 12.
Ti chiedo se puoi indicare anche che architettura hai utilizzato (64 bit o 32 bit).
Ti ringrazio anche per la creazione degli rpm, se vuoi inserire qui un link per gli utenti in modo che possano scaricarli, visionarli ed installarli. Ti chiedo anche di controllare attentamente la licenza d’uso di mbrola sulla creazione di pacchetti vari.
Grazie ancora per la segnalazione 🙂
forse il mio precedente commento non e’ stato ricevuto, ripeto
ho usato un sistema a 32 bit. So che le licenze non sono aperte per mbrola, pensavo per evitare grane di mettere in rete solo i file .nosrc.rpm, che quindi non hanno i pacchetti non open-source inclusi.
Il tuo commento è stato ricevuto, necessita però della mia approvazione prima di essere pubblicato 😉 (voglio evitare ogni sorta di spam o commenti poco attinenti ai contenuti del mio sito web o di un articolo specifico). Forse però mi sono un attimo confuso…cioè hai inviato un commento che non appare?
Una buona cosa per aggirare la licenza potrebbe essere quella di scrivere un articoletto/mini-howto su come creare un pacchetto rpm per mbrola, in questo modo si insegna anche come creare un rpm. Si prendono due piccioni con una fava in poche parole 🙂 .
Per il problema che hai menzionato precedentemente, l’errore che salta fuori dice che non è possibile aprire il file. Ti chiedo dunque: il file esiste nella directory che è indicata dall’errore? Se si è leggibile? (in poche parole controlla i permessi).
Come gia’ detto sono riuscito ad installare le voci italiane su Fedora 12 (festival-1.96-16.fc12.i686).
Le voci funzionano ma non mi funziona la conversione con text2wave, almeno con l’argomento -eval:
$ text2wave -eval ‘(voice_lp_mbrola)’ test.txt | play -t wav –
SIOD ERROR: wrong type of argument to get_c_val
Inoltre noto che l’installazione delle voci italiane crea delle voci fittizie in festival, che non funzionano. Credo che la struttura dei directory andrebbe migliorata:
festival> (voice
viene scritto un elenco di voci disponibili
… voice_it3 voice_it4 voice_italian …
festival> (voice_italian)
SIOD ERROR: could not open file /usr/share/festival/lib/voices/italian/italian/festvox/italian.scm
Apparentemente festival definisce voci per ogni subdirectory creato nella libreria delle voci. La definizione delle voci italiane con mbrola crea dei directory aggiuntivi, che dovrebbe creare altrove. Probabilente spostare i directory it3, it4, italian richiedera’ delle modifiche ai file .scm.
In relazione all’errore “SIOD ERROR: wrong type of argument to get_c_val”: L’origine del problema, ed una patch “complessa”, le ho trovate qui: http://developer.berlios.de/bugs/?fu…&group_id=3272.
Senza andare ad applicare completamente la patch illustrata, per il mio ambiente d’uso (Centos 5.4 + Asterisk + voci italiane per mbrola) è stato sufficiente applicare solo l’ultima parte della patch trovata.
Nel file text2wave (nella mia installazione è sotto /usr/bin), identificate la riga
(let ((wholeutt (utt.synth (Utterance Text “”))))
il problema è che una delle funzioni utilizzate dalla utt.synth non gestisce “stringhe vuote”. Per risolvere rapidamente basta non effettuare la chiamata.
La riga sopra deve pertanto diventare:
(let ((wholeutt (Utterance Text “”)))
Così i file wav vengono correttamente generati…