ESpeak

De Por un Mundo Accesible

Es una herramienta para síntesis de voz 100% libre, que ofrece una documentación completa dando información desde lo mas simple hasta como crear una voz.

Este sintetizador ofrece una gran variedad de configuraciones para ser aplicadas y obtener mejoras en las voces y en la síntesis. Por otro lado también ofrece una portabilidad entre sistemas operativos como GNU/Linux.

Los aspectos negativos que se observan en este sintetizador son:

1. Su voz robótica, que viene dada por el tipo de síntesis aplicada (Basados en formantes).

2. Las voces se crean en 2 archivos _list y _rules (en el caso del español seria es_list y es_rules), el primero contiene una lista de excepciones y atributos para ciertas palabras, y el segundo contiene la pronunciación de los fonemas del idioma. Lo que me parece negativo es que se tiene que generar un archivo _dict (es_dict para el español), mediante la compilación de los dos ficheros anteriormente mencionados. El hecho de tener que compilar las voces hace el trabajo algo mas engorroso.

Sintesis basada en Formantes

La síntesis de formantes no usa muestras de habla humana en tiempo de ejecución. En lugar de eso, la salida se crea usando un modelo acústico. Parámetros como la frecuencia fundamental y los niveles de ruido se varían durante el tiempo para crear una forma de onda o habla artificial. Este método se conoce también como síntesis basada en reglas pero algunos aducen que muchos sistemas concatenativos usan componentes basados en reglas para algunas partes de sus sistemas, como el front-end, así que el término no es suficientemente específico.

Muchos sistemas basados en síntesis de formantes generan habla robótica y de apariencia artificial, y la salida nunca se podría confundir con la voz humana. Sin embargo, la naturalidad máxima no es siempre la meta de un sintetizador de voz, y estos sistemas tienen algunas ventajas sobre los sistemas concatenativos.

La síntesis de formantes puede ser muy inteligible, incluso a altas velocidades, evitando los defectos acústicos que pueden aparecer con frecuencia en los sistemas concatenativos. La síntesis de voz de alta velocidad es a menudo usada por los discapacitados visuales para utilizar computadores con fluidez. Por otra parte, los sintetizadores de formantes son a menudo programas más pequeños que los sistemas concatenativos porque no necesitan una base de datos de muestras de voz grabada. De esta forma, pueden usarse en sistemas empotrados, donde la memoria y la capacidad de proceso son a menudo exiguas. Por último, dado que los sistemas basados en formantes tienen un control total sobre todos los aspectos del habla producida, pueden incorporar una amplia variedad de tipos de entonaciones, que no sólo comprendan preguntas y enunciaciones.¹“

eSpeak fue desarrollado en lenguaje C/C++, haciendolo robusto y bastante estable, a su vez ofrece una gran cantidad de idiomas y que poseen un soporte completo para las necesidades requeridas.

Instalación

la instalación es muy sencilla y debe realizarse como súper usuario (root) bien sea mediante sudo o su

En Debian y derivados

# aptitude install espeak
  

En Red Hat y derivados

# yum install espeak

En gentoo y derivados

# emerge espeak
Nota: 
     Las dependencias a instalarse con el paquete son: espeak-data{a} libespeak1{a}

Opciones de eSpeak en linea de comandos

Acá se listan las opciones de configuración que eSpeak ofrece en linea de comandos, las cuales permiten obtener un mejor resultado en la síntesis.

          -f <text file>   Text file to speak.
    
          --stdin    Read text input from stdin instead of a file.
                 If neither -f nor --stdin, <words> are spoken, or if none then text is
                 spoken from stdin, each line separately.
  
          -a <integer>
              Amplitude, 0 to 200, default is 100.
  
          -l <integer>
              Line length. If not zero (which is the default), consider
              lines less than this length as end-of-clause.
  
          -p <integer>
              Pitch adjustment, 0 to 99, default is 50.
  
          -s <integer>
              Speed in words per minute, 80 to 370, default is 170.
  
          -v <voice name>
             Use voice file of this name from espeak-data/voices.
  
          -w <wave file name>
             Write output to this WAV file, rather than speaking it directly.
  
          -b         Input text is 8-bit encoding.
  
          -m         Interpret SSML markup, and ignore other < > tags.
  
          -q         Quiet, don't produce any speech (may be useful with -x).
  
          -x         Write phoneme mnemonics to stdout.
  
          -X         Write phonemes mnemonics and translation trace to stdout.
   
          -z         No final sentence pause at the end of the text.
  
          --stdout   Write speech output to stdout.
  
          --compile=<voice name>
                   Compile the pronunciation rules and dictionary in the current
                   directory. =<voice name> is optional and specifies which language.
  
           --punct="<characters>"
                    Speak the names of punctuation characters during speaking
                    If =<characters> is omitted, all punctuation is spoken.
   
           --voices=<langauge>
                    List the available voices for the specified language.
                    If <language> is omitted, then list all voices.
   
           -k <integer>
               Indicate capital letters with: 1=sound, 2=the word "capitals",
               higher values = a pitch increase (try -k20).


A continuación se explicara las opciones más resaltantes para obtener mejores resultados y su forma de uso:

La opción -f permite obtener el texto a sintetizar desde un archivo, Ejemplo:

  $ espeak -f texto.txt

La opción --stdin permite sintetizar un texto sin necesidad de ingresarlo directamente con el comando, es decir, primero se ingresa el comando y luego te permite ingresar el texto, y para que ese texto sea sintetizado, se debe finalizar la escritura con <control> + D. Ejemplo:

  $ espeak --stdin
  Hola, esta es una prueba de síntesis con espeak y la opción --stdin
  <control> + D

La opción -a permite manipular la amplitud de la voz, es decir, la fuerza de la misma, el volumen. Ejemplo:

  $ espeak -a 150 "Hola como estas?"

La opción -p permite manipular el tono de la voz, para poder obtener una voz mas aguda o grave. Ejemplo:

  $ espeak -p 99 "Hola, esta voz es muy aguda"

La opción -s permite definir la velocidad de lectura, indicando la cantidad de palabras por minuto. Ejemplo:

  $ espeak -s 20 "Este es un ejemplo de lectura muy lenta"

La opción -v es utilizada para especificar el idioma a utilizar para la síntesis. Para el español se utiliza 'es', sin embargo con la opcion --voices podemos ver la lista completa (se explica mas adelante). Ejemplo:

  $ espeak -v es "Esto es un ejemplo de la voz en español de eSpeak"

La opción -w permite exportar el texto sintetizado a un archivo de audio .wav. Ejemplo:

  $ espeak -v es -w texto_sintetizado.wav

La opción --voices ofrece una lista con todas las voces que posse espeak en ese momento. Esta opción puede utilizarse de 2 formas, una de ellas es sin asignarle valores, y la otra es asignandole valores. Ejemplo

  $ espeak --voices #Con este comando se listan todas las voces
  
  $ espeak --voices=es #Con este comando se listan unicamente las voces en español
Herramientas personales