Bienvenido(a) a Grupo Linuxero del Bajío domingo, abril 21 2019 @ 11:16 CEST

Hablando con Pingüinos ( Reconocimiento y Síntesis de Voz en GNU/Linux )

  • Autor:
  • Lecturas 11,313
Artículos

El reconocimiento y síntesis de voz en Linux recientemente ha mejorado bastante, recordemos que para otras plataformas ya existen programas comerciales que lo hacen bastante bien pero que cuestan muchos billetes y que por software libre existen alternativas.

Este es un pequeño manual sobre tres programas acoplados para tal efecto, hablar con la computadora y que esta haga algo.

1. Reconocimiento de voz
Para el reconocimiento de voz utilizamos Sphinx2 un programa desarrollado por The Sphinx Group en Carnegie Mellon University bajo licencia BSD del tipo Apache.
Sphinx2 es el más rápido que los otros desarrollados (Sphinx3 y Sphinx4) y tiene buenas características como reconocimiento continuo (no por palabras) y independencia del locutor (sin entrenamiento previo).
Para instalarlo basta con obtener el archivo fuente y hacer los clásicos

tar zxvf sphinx2****.tgz
cd sphinx2****
./configure
make
make install

o con el RPM.

2. Síntesis de Voz
Este es más sencillo dado el gran desarrollo que que tiene el proyecto Festival que es liberado bajo un licencia tipo X11.
Su instalación es sencilla mediante el administrador de contenido URPMI de Mandrake, basta con urpmi festival y hay RPMs o compilenlo desde sus fuentes.

3. Integración de ambos con PerlBox-Voice
Pues encontre un programita escrito en Perl que se encarga de administrar a Sphinx2 y Festival a la par y todo bajo un bonito ambiente hecho en Tcl, se obtiene de aquí y su instalación es trivial usando el script perlbox-voice.install.

Con todo listo, probamos el sistema simplemente abrimos una terminal y ejecutamos perlbox-voice, se abre una ventana y podemos controlar el listener sphinx2 (festival lo arranca desde la llamada) o definir nuevos comando. Lamentablemente por defecto esta en inglés y los comando que creemos tendrán que ser en este idioma, la voz que nos contesta lo hace igual en inglés, aunque puede contestar en español mocho hablando como gringo ("Hola amigou").

PerlBox Voice nos permite definir comandos de voz para ejecutar determinadas acciones como si decimos "web" abra "firefox" o "editor" y ejecute "gvim", los límites son la imaginación y nuestros conocimientos en la línea de comandos.

Otra característica es la de formular dialogos preestablecidos, como si decimos "morning" conteste "good morning", imaginen un escenario en que cuando como de costumbre insultemos al equipo y te conteste, algo así:

TÚ: Ejecutar proceso XXXX
COM: No puedo ejecutar proceso XXXX
TÚ: Pi... máquina pen...
COM: Tú eres el pen... no yo
TÚ: Ha sí, pues ch... tú m...
COM: No tengo progenitora biológica
TÚ: Pues ch... tus bytes
COM: AUXILIO, HUMANO INTENTA GOLPEARME
...

Ahora ando investigando sobre como colocar otras voces, he estado viendo el proyecto MBROLA pero los pasos que se siguen no me sirven ya que al ejecutar en la terminal Festival me ocurre:

$ festival -i
Festival Speech Synthesis System 1.4.3:release Jan 2003
Copyright (C) University of Edinburgh, 1996-2003. All rights reserved.
For details type `(festival_warranty)'
festival> (voice_mx_mbrola)
SIOD ERROR: could not open file /usr/share/festival/voices/spanish/mx_mbrola/festvox/mx_mbrola.scm
festival>

ya me fije y no existen los archivos que llama y es que creo que Festival no entiende que la voz es de tipo mbrola, bueno sigo en eso y si tengo resultados les aviso.

Conclusiones
El reconocimiento y síntesis de voz en Linux está en punta, este conjunto de programas que les describí trabajan aceptablemente bien, salvo veces en que no me entiende o lo entiende mal pero se ve que sigue en desarrollo y la fase de soporte a otros idiomas hace falta. En cuanto al consumo de CPU y memoria es mínimo comparado con lo que hay para MS-Window$ y el tiempo de respuesta es aceptable. La integración a los escritorios favoritos ya empezó con KDE y con GNOME no hay nada todavía pero no se ve tan complicada.

__LINXE__