Festival parla in Italiano, con Fedora 10
MBROLA è un sistema di sintesi vocale che parte da fonemi base per ricostruire le frasi.
Viene fornito in formato binario e purtroppo esiste solamente la versione a AMD64 per sistemi a 64bit e sul mio fedora 10 a 64bit non ne vuole sapere di funzionare.
Per fortuna il kernel di fedora supporta anche gli applicativi a 32bit per cui per usare mbrola basta andare sul sito del progetto e scaricare la versione linux-i386 di mbrola, ovviamente se si possiede un sistema a 32bit o 64bit, comunque cercare il pacchetto corrispondente alla propria architettura.
Per essere sicuri che il programma funzioni possiamo procedere con i vari test da utente normale, per cui procedendo con ordine:
- scaricare dal progetto mbrola l’applicativo corrispondente all’architettura del proprio sistema operativo;
- scaricare, dalla pagina di download del progetto mbrola, le lingue it3 (maschile) e it4 (femminile)
- scompattare il pacchetto mbrola scaricato in una cartella a piacimento per es. mbrola, la stessa cosa per i pacchetti it3 e it4:
$ cd directory_dove_sono_presenti_pacchetti_zip $ ll -h totale 11M -rw-rw-r-- 1 mario mario 5,2M 24 mag 19:55 it3-010304.zip -rw-rw-r-- 1 mario mario 4,9M 24 mag 19:55 it4-010926.zip -rw-rw-r-- 1 mario mario 303K 24 mag 19:55 mbr301h.zip $ mkdir mbrolaTEST $ unzip file_zip -d mbrolaTEST # sostituire file_zip per ogni pacchetto zip scaricato $ cd mbrolaTEST
Il pacchetto
mbr301h.zip
conteneva vari file che elenco qui di seguito:mbrola206a-linux-ppc mbrola302b-linux-ppc mbrola-linux-alpha mbrola-linux-i386 mbrola_linux_libc5 mbrola-SuSElinux-ultra1.dat readme.txt
L’eseguibile che a me interessa è
mbrola-linux-i386
di conseguenza per vedere il corretto funzionamento dell’eseguibile scelto gli do i permessi di esecuzione e controllo se riesco a creare un file audio di test con i seguenti comandi:$ chmod +x mbrola-linux-i386 $ ./mbrola-linux-i386 it4/it4 it4/TEST/sent1.pho sent1.wav $ ./mbrola-linux-i386 it4/it4 it4/TEST/sent2.pho sent2.wav
Sono 2 file audio che sono stati creati all’interno della directory in cui si trova mbrola-linux-i386.
Per sentire se producono qualche suono posso utilizzare mplayer, o qualsiasi altro lettore multimediale:$ mplayer sent1.wav sent2.wav
Se tutto è andato per il verso giusto si ascolterà una voce femminile italiana(per quella maschile basta sostituire
it4
conit3
) che dice delle informazioni interessanti.
Dunque è tutto pronto e si può procedere con l’installazione vera e propria di mbrola per festival.
- Scaricare le voci per mbrola dal sito web di festival in italiano:
festvox_lp_mbrola.tar.gz
(la voce femminile) efestvox_pc_mbrola.tar.gz
(la voce maschile); - Autenticarsi come root e seguire i seguenti passaggi per installare mbrola:
$ su - [password di root] # cp /percorso_al_file_mbrola_testato/mbrola-linux-i386 /usr/share/festival/lib/etc/mbrola
(sostituire mbrola-linux-i386 con l’eseguibile che funziona per la propria architettura)
- Installare le voci italiane precedentemente scaricate con i seguenti comandi, fare molta attenzione:
# cd /usr/share/ # tar xvfz /percorso_alla_voce_scaricata/festvox_lp_mbrola.tar.gz # tar xvfz /percorso_alla_voce_scaricata/festvox_pc_mbrola.tar.gz
- Ora bisogna solo installare le lingue italiane, sempre come utente amministratore:
# mkdir /usr/share/festival/lib/voices/italian/italian # cp -r /percorso_al_file_mbrola_testato_con_i_pacchetti_italiani/it3 /usr/share/festival/lib/voices/italian/italian/ # cp -r /percorso_al_file_mbrola_testato_con_i_pacchetti_italiani/it4 /usr/share/festival/lib/voices/italian/italian/
- Per fare in modo che la voce principale di festival sia mbrola basta modificare il file di configurazione di festival con il proprio editor preferito:
# vim /etc/festival/siteinit.scm
E modificare la riga precedentemente inserita:
(set! voice_default 'voice_lp_diphone)
come segue per avere una voce femminile:
(set! voice_default 'voice_lp_mbrola)
per quella maschile invece:
(set! voice_default 'voice_pc_mbrola)
- In teoria dovrebbe essere tutto a posto, si può provare a vedere se festival legge qualcosa tramite mbrola con questo comando da utente normale:
$ echo tutto funziona correttamente con festival | festival --tts
Per le conclusioni e riferimenti utili andare alla pagina successiva.
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…