Παρασκευή 14 Μαρτίου 2008

Text to Speech engine για Linux

Σε αυτό το πρώτο μου post στο blog του φίλου και συμφοιτητή sinak, θα σας ενημερώσω για μία πολύ καλή text to speech engine για Linux. Μιλάω για το espeak το οποίο είναι και το μοναδικό από όσα δοκίμασα που υποστηρίζει την Ελληνική γλώσσα.

Για να το εγκαταστήσετε σε σύστημα Debian/Ubuntu μπορείτε πολύ απλά να εκτελέσετε την εντολή :

sudo apt-get install espeak


Αφού κάναμε την εγκατάσταση του, μαζί και των απαραίτητων dependencies μπορούμε να προχωρήσουμε στη λειτουργία του που είναι και πολύ εύκολη ;)
Το μόνο που έχουμε να κάνουμε είναι να ανοίξουμε μια κονσόλα και να πληκτρολογήσουμε "espeak". Στη συνέχεια μπορούμε να γράψουμε το κείμενό μας, και κάθε φορά που θα πατάμε enter θα μας διαβάζει τη σειρά που γράψαμε. Για να βγούμε από το πρόγραμμα και να επιστρέψουμε στην κονσόλα πατάμε το συνδυασμό control+D (unix EOF). Εναλλακτικά μπορούμε να πληκτρολογήσουμε δίπλα από την εντολή το κείμενό μας μέσα σε διπλά εισαγωγικά.
Για παράδειγμα :

espeak "Hello world"



Πολύ εύκολα όλα τα παραπάνω αλλά γιατί δε διαβάζει τα ελληνικά? Γιατί δεν του έχουμε ορίσει να χρησιμοποιήσει την ελληνική γλώσσα. Κάτι τέτοιο μπορεί να γίνει πολύ απλά προσθέτοντας την παράμετρο "-v el". Ακόμη πολύ χρήσιμη είναι και η δυνατότητα διαβάσματος/ακούσματος ενός ολόκληρο αρχείου κειμένου με την εντολή :

espeak -v el -f file_path



Τα παραπάνω αρκούν για να ακούτε απλά από τα ηχεία σας τα κείμενά σας. Αν όμως θέλετε κάποιες επιπλέον ρυθμίσεις μπορείτε να εκτελέσετε espeak -h και θα σας εμφανίσει τις δυνατές παραμέτρους που μπορείτε να δώσετε.
Εγώ έμεινα αρκετά ευχαριστημένος (παρά την κάπως Γαλλική προφορά της ελληνικής voice) με τις παρακάτω ρυθμίσεις :

espeak -s 140 -p 45 -v el




Τέλος, ακόμη μια engine που υποστηρίζει την ελληνική γλώσσα, και όπως άκουσα το sample στο site τους ακόμη πιο καλά, είναι η MBROLA. Το μόνο πρόβλημα ήταν ότι δεν κατάφερα να την κάνω να δουλέψει :(

Παρόμοια προγράμματα για text to speech ακόμη και για speech recognition μπορείτε να βρείτε εδώ. Αυτά για σήμερα. Cu όποτε βρω ένα ακόμη ενδιαφέρον θέμα.

1 σχόλιο:

forfolias είπε...

Μπορείτε να χρησιμοποιήσετε αυτό το script για να έχετε κάποιο υποτιπόδες GUI στο πρόγραμμα.


#!/bin/bash

text () {
msg=`zenity --title "SpeakIt" --entry --text "Enter yor text here :"`
espeak -v el "$msg"
}

file () {
fl=`zenity --title="Select a file to remove" --file-selection`
espeak -v el -f "$fl"
}

afa=`zenity --title "SpeakIt" --list --text "Choose from the list" --radiolist --column " " --column " " TRUE "Simple text" FALSE "Text file"`

if [ "$afa" == "Simple text" ]
then text
elif [ "$afa" == "Text file" ]
then file
fi