Etiquetas: , , , ,

Puedes hacer hablar a tu Raspberry Pi utilizando un sintetizador de voz como eSpeak para convertirlo en un asistente inteligente. Este tutorial te ayudará a hacer hablar a tu robot o aplicación.

Hardware

  • Raspberry Pi 3 avec Raspberry Pi OS
  • Conexión a Internet y acceso remoto

Compruebe los periféricos de audio

Empezaremos por comprobar los periféricos de audio disponibles

aplay -l
raspberry-pi-find-audio-device Sintetizador de voz eSpeak para Raspberry Pi

Selecciona el dispositivo de audio

Por defecto, el sonido se emite a través del puerto jack o HDMI. Si desea conectar auriculares, debe seleccionar la salida correspondiente en la interfaz gráfica de Raspberry Pi o con sudo raspi-config.

raspberry-pi-select-audio-output Sintetizador de voz eSpeak para Raspberry Pi

Comprobar audio

Vamos a empezar por comprobar que el audio funciona correctamente y que se tienen en cuenta los periféricos de audio.

aplay /usr/share/sounds/alsa/*

Instalación del sintetizador de voz espseak

sudo apt-get install espeak

Para probar la instalación de espeak, simplemente introduzca el siguiente comando:

espeak "Hello World"

También puede instalar el paquete python y utilizarlo directamente en un script.

sudo apt-get install python3-espeak
from espeak import espeak
espeak.synth("hello world")

Para obtener la lista de voces disponibles, introduzca el comando

espeak --voices

Uso de eSpeak en un script Python con Subprocess

Puede ejecutar comandos de shell desde un script de Python utilizando la biblioteca de subprocesos.

from time import sleep
import subprocess

def say(something, voice='fr+f1'):
	print("espeak -v {} {}".format(voice,something))
	subprocess.call(['espeak', '-v%s' % (voice), something])
    
text=[u"bonjour",u"aurevoir",u"a bientot", u"sa va", u"merci"]
textf=u"bienvenu admine, comment allez-vous aujourd'hui?"

for t in text:
	say(t)
	sleep(0.5)

say(textf)

Instalar pyttsx3

Para utilizar el sintetizador de voz con Python utilizaremos el paquete pyttsx3.

Para instalar el paquete pyttsx3 Python, introduzca el siguiente comando:

pip3 install pyttsx3

Elige la voz que quieras

for i,voice in enumerate(voices):
	print("----------------{}".format(i))
	print(voice.id)
	engine.setProperty('voice', voice.id)  # changes the voice
	print(voice.age)
	print(voice.gender)
	print(voice.languages)

Código txt2speech

#!/usr/bin/python3.4
# -*-coding:Utf-8 -*

from time import sleep
import pyttsx3 as pyttsx
engine = pyttsx.init()
voices = engine.getProperty('voices')

print(voices)

engine.setProperty('voice', voices[0].id)  # changes the voice
	
#engine.setProperty('voice', voices[14].id)  # changes the voice
voiceNum=0
#Fr=[0 1 6 7 8 14] #6 = AC
"""
for voice in voices:
	print(voiceNum)
	voiceNum=voiceNum+1
	print(voice.id)
	engine.setProperty('voice', voice.id)  # changes the voice
	print(voice.age)
	print(voice.gender)
	print(voice.languages)
	print(voice.name)
"""

text=[u"bonjour",u"aurevoir",u"a bientot", u"sa va", u"merci"]
textf=u"bienvenu admine, comment allez-vous aujourd'hui?"

#rate = engine.getProperty('rate')
engine.setProperty('rate', 120)

#volume = engine.getProperty('volume')
#engine.setProperty('volume', volume)

for t in text:
	engine.say(t)
	sleep(0.5)

engine.say(textf)


engine.runAndWait()

Deberías oír hablar a tu Rapsberry Pi.

Añadir otras voces

Puedes crear y añadir una voz personalizada inspirándote en las voces existentes y leyendo atentamente la documentación. Esto te permitirá concentrarte en determinadas frases y pronunciaciones. Luego, una vez que domines los ajustes, acabarás teniendo una voz que se adapte a ti.

Mejorar los resultados con los votos de MBROLA

Puedes utilizar otro sintetizador de voz un poco más potente que eSpeak e instalar nuevas voces con MBROLA. En nuestro caso, vamos a instalar una voz femenina francesa. Puedes encontrar la voz que más te convenga en la lista de voces disponibles.

Comprueba si mbrola ist. El siguiente comando le dará las voces disponibles

apt-cache search mbrola
mkdir espeak
cd espeak
wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb
sudo dpkg -i mbrola.deb
rm mbrola.deb

Una vez instalado mbrola, puedes instalar nuevas voces

sudo apt-get install mbrola-fr4
raspberry-pi-install-mbrola-voices Sintetizador de voz eSpeak para Raspberry Pi
espeak -v mb-fr4 "bonjour admin, comment allez-vous?"

N.B.: Pour installer le paquet mbrola, j’ai dû mettre à jour l’OS vers la version 11 (bullseye). Vous pouvez vérifier la version de l’os avec la commande cat /etc/os-release

Obviamente, las voces mbrola no pueden utilizarse con pyttsx3. Por lo tanto, utilizamos el subproceso

from time import sleep
import subprocess

def say(something, voice='mb-fr4'):
	print("espeak -v {} {}".format(voice,something))
	subprocess.call(['espeak', '-v%s' % (voice), something])
    
text=[u"bonjour",u"aurevoir",u"a bientot", u"sa va", u"merci"]
textf=u"bienvenu admine, comment allez-vous aujourd'hui?"

for t in text:
	say(t)
	sleep(0.5)

say(textf)

Salida de audio HMDI

Si desea utilizar la salida de audio HDMI y no hay sonido, puede que tenga que modificar el archivo config.txt

sudo nano /boot/config.txt

Descomente la línea hdmi_drive=2

Fuentes