Faire parler la Raspberry

Cómo hacer que la Raspberry Pi lea texto con eSpeak.

Actualizado el 5 noviembre 2019 - 0 Comentarios - , , ,

ⓘ Este artículo puede haber sido traducido total o parcialmente utilizando herramientas automáticas. Pedimos disculpas por cualquier error que esto pueda causar.

En informática, el problema de la interfaz de usuario es probablemente uno de los más complicados. Eso, nombrar cosas e invalidar un caché …

La forma más sencilla de presentar información a un ser humano desde una computadora suele ser mediante la visión. Pero para eso necesita una pantalla, que es voluminosa, cara y, por lo tanto, no muy adecuada para su uso a bordo.

En este tutorial, veremos cómo usar la audición de su usuario en lugar de su visión, haciendo que su Raspberry Pi hable texto usando el software eSpeak, que se llama Text To Speech.

El hardware para hacer hablar a la Raspberry Pi

Para poder hacer que tu Raspberry Pi hable, necesitaremos el siguiente equipo:

Instale eSpeak en la Raspberry Pi

Para hacer que su Raspberry Pi hable, usaremos el software eSpeak, un software de síntesis de voz de código abierto.

El principio de eSpeak es el siguiente: le das algo de texto (una cadena de caracteres, un archivo, etc.) y lo dividirá en fonemas (los sonidos más pequeños que componen un lenguaje hablado), luego usas un conjunto completo de técnicas para transformar estos fonemas en archivos de sonido reales.

Instalar eSpeak en la Raspberry Pi es bastante sencillo ya que ya está presente en los repositorios. Así que solo necesitamos actualizar los repositorios y solicitar la instalación de eSpeak:

sudo apt update
sudo apt install espeak -y

Leer una oración con eSpeak

Ahora que eSpeak está instalado, podremos hacer que lea una primera oración. Pero antes de eso, nos aseguraremos de que el sonido salga por el puerto Jack de nuestra Raspberry Pi para llegar a nuestros altavoces.

Para hacer esto, ejecute el comando sudo raspi-config, luego vaya a "Opciones avanzadas", "Audio", "Forzar conector de 3,5 mm ('auriculares')" y finalmente "Finalizar".

Crearemos una carpeta espeak en el directorio del usuario descargue un archivo de audio y reprodúzcalo para verificar que todo funciona correctamente:

mkdir /home/pi/espeak
cd /home/pi/espeak
wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3
ffplay -nodisp test.mp3

Debería escuchar una escala de Do mayor tocando.

Ahora que sabemos que los altavoces están funcionando, le pediremos a eSpeak que diga la frase “Las frambuesas están posadas en el taburete de mi abuelo”. Para ello, usamos el siguiente comando:

espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay

Lo que nos da algo como esto …

Así que sí, la voz es horrible, pero la mejoraremos más adelante.

Repasemos un poco el comando para tratar de entender:

  • espeak lanzar el programa espeak
  • -a 200 indica el volumen que se utilizará para el sonido. Va de 0 a 200 y es 100 por defecto.
  • -v fr+f3 nos dice el idioma a utilizar. fr corresponde al idioma francés, +f3 indica que queremos utilizar la tercera variación de voz femenina propuesta por eSpeak. Recuerde adaptar el código de idioma a su texto.
  • La oración entre comillas es la que será pronunciada por eSpeak. En cambio, también podríamos haberle pedido que leyera un archivo de texto de manera casual. -f le_chemin/du/fichier.txt.
  • --stdout le dice a eSpeak que en lugar de reproducir el audio directamente, debería enviar los datos generados a la salida estándar del terminal.
  • | aplay indica que la salida generada por eSpeak será redirigida a la entrada del programa aplay, que es un programa para reproducir archivos de audio en formato Wave, el generado por eSpeak. Tenga en cuenta que en su lugar podríamos usar > mon_fichier.wav para guardar la salida de audio en un archivo.

Como puede ver, no es eSpeak sino un juego el que reproduce el sonido. La razón de esto es muy simple, se ha corregido espeak en la Raspberry Pi para algunas versiones …

Algunas líneas de bichos espeak.
Y eso, amigo mío, es lo que llamamos "un error" …

Si intenta hacer que eSpeak hable directamente, obtendrá errores relacionados con Alsa, el servidor de sonido Raspberry Pi. Por tanto, la solución más sencilla es enviar los datos a un juego, que en sí mismo funciona perfectamente. Al final funciona y eso es todo lo que importa.

Mejore la voz de eSpeak instalando MBROLA en la Raspberry.

Como puede ver, las voces generadas por eSpeak son absolutamente sucias. Que no cunda el pánico, tenemos una solución para mejorar esto.

Lo mencioné al principio del artículo, eSpeak es capaz de generar fonemas, estos fragmentos de sonido constituyen un lenguaje hablado. Y resulta que hay otros programas que pueden leer y pronunciar estos fonemas, ¡y de una manera más convincente que eSpeak!

En nuestro caso, utilizaremos el software MBROLA, un proyecto colaborativo global iniciado por la Facultad Politécnica de Mons, Bélgica, que tiene como objetivo diseñar una enorme base de datos para la síntesis de voz.

Curiosamente, el software MBROLA no está disponible en los repositorios de Raspbian, mientras que los datos de idioma sí lo están. Esto tiene la consecuencia de imposibilitar la instalación de estos datos de idioma …

¡Incluso Kevin Hart lo encuentra lleno de errores!
¿Que el que?

¡No te preocupes, tenemos la solución! De hecho, un buen alma tuvo la amabilidad de crear un paquete MBROLA para la Raspberry Pi y, por lo tanto, decidimos crear un espejo en el sitio.

Así que descargaremos e instalaremos este paquete con los siguientes comandos:

cd ~/espeak
wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb
sudo dpkg -i mbrola.deb

Y ahora que MBROLA está instalado, podremos descargar los archivos de idioma que necesitamos. Asi que para mi sera mbrola-fr1, es decir la primera voz francesa. Adapte el comando a su idioma.

sudo apt install mbrola-fr1 -y

Todo lo que tenemos que hacer ahora es tomar nuestro pedido de eSpeak anterior y adaptarlo para generar fonemas y hacer que MBROLA los lea. Lo que nos dará el comando a continuación.

espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay

Lo que nos da el audio a continuación:

Por supuesto, siempre sentimos que es un robot. ¡Pero admite que todavía hay lo mejor!

Encontrará algunas de las mismas configuraciones que antes, pero con dos cambios:

  • -v mb-fr1 indica que queremos usar MBROLA para generar el archivo de audio mb, y la voz francesa número 1 -fr1.
  • -s 150 le indica cuando queremos generar el archivo a una velocidad de 150 palabras por minuto. El valor predeterminado es 165, pero lo encuentro un poco rápido, al menos para el francés.

Como antes, por supuesto, puede modificar el comando para crear un archivo, leer el texto de un archivo txt, etc.

Al combinar estos comandos con cosas como leer etiquetas RFID y similares, puede crear fácilmente sistemas en el vehículo con interfaces relativamente completas.

Por supuesto, todavía estamos lejos de ser una voz humana y sabemos que existen mejores motores de "Text to Speech", como el TTS de Mozilla desarrollado como parte del proyecto Common Voice. Sin embargo, MBROLA y eSpeak ofrecen un buen compromiso entre facilidad de uso, velocidad de ejecución y eficiencia.

Compartir
Boletin informativo
Autor:
Raspberry Pi FR
Únete a la comunidad de Raspberry Pi
Un ordenador de 35$ ya vendió 10 millones de copias
COMPRAR LA NUEVA RASPBERRY PI 4
Tutoriales relacionados
Compre la Raspberry Pi 4 y sus accesorios, las trampas que debe evitar. Apague el LED de la cámara para Raspberry Pi. ¡Raspbian France cambia de nombre y se convierte en Raspberry Pi FR! ¿Por qué debería haber explicado Bitcoin a France Info en lugar de a mi abuela? Conéctese a la Raspberry Pi sin Internet con el puerto serie.
No hay comentarios
Compartir
Inscríbase al boletín
Suscríbete a la newsletter.
Did you like this article ?
Subscribe and stay informed!