Σελίδα 1 από 1

Ρύθμιση ALSA για το Festival (TextToSpeech )

ΔημοσίευσηΔημοσιεύτηκε: 19 Οκτ 2009, 09:11
από sokoban4ever

Πρόβλημα :


    Έχουμε δοκιμάσει διάφορες εφαρμογές που χρησιμοποιούν δυνατότητες TextToSpeech μέσω του Festival
    ήχος δεν παράγεται παρα μόνο όταν κλείσουμε κάποιο άλλο πρόγραμμα μουσικής αναπαραγωγής
    (exaile , Amarok,audacius,banshee κλπ κλπ)
    Τις περισσότερες φορές το πρόβλημα είναι με την ρύθμιση του Festival και όχι του προγράμματος
    Το πρόβλημα έγκειται στο ότι το festival δεν χρησιμοποιεί εξ ορισμού το ALSA (Advanced Linux Sound Architecture)ή το ESD ή το Pulseaudio για sound server
    αλλά το OSS ( Open Sound System)

Βήματα :


    Πρέπει να διαπιστώσουμε ότι έχουμε το ALSA
    μπορούμε πχ να πάμε στο Volume Applet και να δούμε αν έχουμε στην λίστα με τα devices (συσκευές)
    το Alsa mixer. Αν έχουμε το AlSA sound server προχωράμε.
    Πρέπει επίσης να βεβαιωθούμε ότι το πρόγραμμα χρησιμοποιεί σωστά την σύνταξη του festival
    και επικοινωνεί με αυτό
    την οποία μπορούμε κοιτάξουμε εκτελώντας:
    Κώδικας: Επιλογή όλων
    man festival

    στο τερματικό.
    Όπως και να έχει πρέπει να κοιτάξουμε το βοηθήματα του εκάστοτε προγράμματος είτε
    με μία από τις εντολές
    ονομαπρογράμματος -h
    ονομαπρογράμματος --h
    ονομαπρογράμματος --help
    man ονομαπρογράμματος
    είτε στο site του προγράμματος
    είτε στο μενού help ( εάν έχει γραφικό περιβάλλον το πρόγραμμα)
    όπως και να έχει καλό είναι να ανοίξουμε μια κονσόλα
    και να γράψουμε
    Κώδικας: Επιλογή όλων
    festival --tts

    ενώ ταυτόχρονα παίζουμε μουσική με κάποιον player
    και να διαπιστώσουμε ότι δεν παίζει ταυτόχρονα το festival

Παράδειγμα προβλήματος:


    Δοκίμασα το QstarDict που χρησιμοποιεί το Festival για να εκφωνεί λέξεις από λεξικά αλλά όταν
    παίζει ταυτόχρονα μουσική απλά δεν λειτουργεί .
    Στο help και στο forum (http://forum.qstardict.ylsoftware.com/ που ήταν στα ρώσικα )δεν είχε και τίποτα ...
    στις ρυθμίσεις του πρόσεξα ότι χρησιμοποιεί το festival
    και μάλιστα την εντολή
    Κώδικας: Επιλογή όλων
    festival --tts

    εκτελώντας λοιπόν festival --tts στην κονσόλα μου έδινε το σφάλμα
    can't open /dev/dsp

    όταν όμως δεν έπαιζα μουσική αυτό έπαιζε κανονικά

Λύση


    Ανοίγουμε με έναν text editor (επεξεργαστή κειμένου)
    το ~/.festivalrc , προσθέτουμε στο τις παρακάτω γραμμές
    Κώδικας: Επιλογή όλων
    (Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
    (Parameter.set 'Audio_Method 'Audio_Command)
    (Parameter.set 'Audio_Required_Format 'snd)

    και το σώζουμε
    έπειτα δοκιμάζουμε ενώ παίζει μουσική κάποιος player
    και εκτελούμε
    Κώδικας: Επιλογή όλων
    festival --tts

    γράφουμε μερικές λέξεις και άμα τις εκφωνήσει όλα καλά
    Αν όχι
    δοκιμάζουμε και βάζουμε τις παρακάτω γραμμές
    Κώδικας: Επιλογή όλων
    (Parameter.set 'Audio_Command "aplay -D plug:dmix -q -c 1 -t raw -f s16 -r $SR $FILE")
    (Parameter.set 'Audio_Method 'Audio_Command)
    (Parameter.set 'Audio_Required_Format 'snd)

    λογικά θα παίξει αυτήν την φορά.

Σημείωση :


    Αν δεν υπάρχει το .festivalrc απλά το δημιουργούμε στο
    /home/ΟνομαΧρήστη/ όπου Όνομα χρήστη το όνομα που χρησιμοποιείτε για την είσοδο (log-in name) στο σύστημα
    Αν θέλουμε να ισχύει για όλους τους χρήστες
    μπορούμε να προσθέσουμε το κείμενο στο τέλος του αρχείου
    festival.scm
    που βρίσκεται στο
    /usr/share/festival/festival.scm
    πχ με την εντολή
    Κώδικας: Επιλογή όλων
    gksudo gedit /usr/share/festival/festival.scm


    Για περισσότερες πληροφορίες ανατρέξτε
    στα manual pages
    Κώδικας: Επιλογή όλων
    man festival

    και
    Κώδικας: Επιλογή όλων
    man aplay

links