Festival: hablame ubuntu (3)

La idea es que ubuntu nos notifique cuando se conecte un dispositivo a algún puerto usb. Esto ser hará usando:

  • Festival.
  • Python.
  • La librería dbus.

Se usara dbus para monitorear los puertos usb y detectar cuando se conecte un nuevo dispositivo. Para esto nos creamos un nuevo archivo, supongamos que se llame festival_usb y lo creamos en /usr/bin (es importante hacerlo con privilegios de superusuario). En consola:

sudo gedit /usr/bin/festival_usb

Cuyo contenido será el siguiente (tomar muy en cuenta los espacios al inicio de cada línea de código):

import dbus
import dbus.glib
import gobject
import os

global bus

def add_device(*args, **keywords):
 device_obj = bus.get_object('org.freedesktop.Hal', args[0])
 device = dbus.Interface(device_obj, dbus_interface = "org.freedesktop.Hal.Device")
 signal = device.QueryCapability('block')

 if signal:
  comando = "echo nuevo dispositivo USB conectado | festival --tts&"
  os.system(comando)

bus = dbus.SystemBus()
bus.add_signal_receiver(add_device, 'DeviceAdded', 'org.freedesktop.Hal.Manager', 'org.freedesktop.Hal', '/org/freedesktop/Hal/Manager')

loop = gobject.MainLoop()
loop.run()

Para que se ejecute al inicio tenemos que añadirlo en Aplicaciones al inicio que se encuentra en Sistema->Preferencias, solamente en la casilla Orden ponemos el nombre del archivo, en este caso festival_usb, finalmente reiniciamos para que se cargue la nueva aplicación.

Festival: hablame ubuntu (2)

Habrán visto muchas películas en las cuales al encender la computadora esta da un saludo hablado, ahora intentaremos hacer algo parecido, en primero lugar necesitamos instalar festival para esto leemos aquí.

Luego nos creamos un nuevo archivo en /usr/bin, supongamos que el archivo se llama saludo_inicial, cuyo contenido sería:

sleep 10
echo & date +'Bienvenido son las %H horas y %M minutos del %A %d d %B d %Y' | iconv -f utf-8 -t iso-8859-1  | festival --tts

Vayamos a explicar el contenido, con sleep esperamos 10 segundos antes de mandar el saludo.

La segunda línea indica que el equipo nos dirá la hora y la fecha, es importante poner el argumento date para que funcione %H como la hora %M como los minutos y los demás parámetros con un % por delante, luego la segunda parte indica que si tenemos algunas palabras que contengan acentos la lea de forma correcta.

Ahora tendríamos que darle permisos de ejecución, en consola escribimos:

sudo chmod +x /usr/bin/saludo_inicial

Para hacer una prueba en consola escribimos:

saludo_inicial

Si todo esta bien escucharemos el saludo.

Finalmente para que al ingresar al sistema el equipo nos salude vamos al menú Sistema->Preferencias->Aplicaciones al inicio.

Ahí añadimos una nueva entrada haciendo clic en el botón Añadir, en la casilla de Orden escribimos saludo_inicial, en las demás escribimos lo que sea.

Cerramos sesión y al ingresar ya deberíamos escuchar el saludo.

Festival: hablame ubuntu (1)

Festival es un sintetizador de voz, es decir que se encarga de «leer» cualquier texto que se le de. Se puede usar Festvox (por defecto) o MBROLA (un poco más parecido al lenguaje natural)

Mas información en el siguiente enlace | Festival

Bueno vamos al grano la instalación, en consola:

sudo apt-get install festival

Ahora para poder reproducir los textos en español es necesario descargar el paquete de idiomas, ya se el masculino o el femenino:

wget http://forja.guadalinex.org/repositorio/frs/download.php/153/festvox-palpc16k_1.0-1_all.deb
wget http://forja.guadalinex.org/repositorio/frs/download.php/154/festvox-sflpc16k_1.0-1_all.deb

Definimos el idioma:

festival –language spanish

Definir el tipo de voz (las voces se encuentran en: /usr/share/festival/voices):

Para la voz masculina que descargamos, en consola escribimos:

festival
(voice_JuntaDeAndalucia_es_pa_diphone)

Para la voz femenina:

festival
(voice_JuntaDeAndalucia_es_sf_diphone)

Ahora hay varias maneras de usar festival, la primera, en sonsola:

festival
(SayText «Hola mundo?»)

O también, en consola:

echo Hola mundo | festival –tts

Para leer un archivo de texto, en consola escribimos:

festival –tts archivo_de_texto.txt