VeuAPython

Fa poc vaig explicar com fer servir les veus catalanes a Ubuntu. En aquest temps FestCAT ha fet forces progressos: ja hi ha diverses veus de molta qualitat (clunits) i un repositori per a Ubuntu, que facilita la instal·lació.

Avui explicaré com fer servir les veus amb Python, per fer els nostres programes més humans. Com que només fa uns mesos que faig servir Python, segur que trobareu millors formes de fer-ho, així que us animo a deixar els vostres comentaris. En tot cas funciona!.

Aquest és el mòdul que s'encarrega de que Festival tingui la codificació que necessita, i només cal importar-lo aixÍ:

from xerra import diguesCadena

i cridar-lo així:

diguesCadena(cadena)

Codi del mòdul:

#-*- coding: UTF-8 -*-
__doc__="""Funcions de veu amb Festival

"""
__author__ = "Paco Rivière (http://pacoriviere.cat)"
__version__ = "0.1"
__date__ = "21 desembre 2009"
__copyright__ = "Copyright (c) 2009 Paco Rivière"
__license__ = "Python"
########################################
# xerra.py #
########################################

import os, sys

#Si echo és cert l'ordre es copia a pantalla:
echo=False
Debug=False

#llengua
llengua='catalan'
# cadena del tub de veu:
motor='|festival --tts --language '+llengua

def diguesCadena(cadena=u'Això és una prova'):
    """Llegeix una cadena en veu alta
    cadena: string

    Torna: int (0-éxit 1-fracàs)
    """
    if cadena=='': cadena=u'No hi ha res a llegir'
    try:
        ordre=u'echo \'%s\' %s' % (cadena, motor)
        ordre=ordre.encode('latin-1')
        if echo:print ordre.decode('latin-1')
        err=os.system(ordre)
        return err
    except:
        if Debug:
            print "Hi ha hagut un error:", sys.exc_info()[0] 
            print "  La ordre utilitzada ha estat:"
            print ordre.decode('latin-1')
            raise
        print "  Hi hagut un problema en llegir la cadena:", cadena.decode('latin-1')
        raw_input("  Premeu Intro per continuar.")
        return 1

if __name__ == '__main__':
    print __doc__
    err=diguesCadena()
    print 'Retorn:', err

Crèdits: Sergi Oller, PacoRivière http://galindaines.blogspot.com/


CategoryTutorialsEnCatala

CatalanTeam/Tutorials/SíntesiDeVeu/VeuAPython (last edited 2009-12-31 11:41:13 by 135)