Como leer un texto – text to speech con eSpeak

Darle a un dispositivo la capacidad de hablar es cada vez más frecuente. Hablar hace más humano, los asistentes virtuales como Alexa o Siri, las voces de nuestros gps, los bots de teleasistencia o simplemente el parkimetro o el ascensor. Las máquinas hablan y es útil.

Algo que puede parecer dificil de implementar, está al alcance de cualquiera gracias a librerias/módulos gratuitos.

Si duda hay muchas horas de código y esfuerzo detrás de este software, así que, desde aquí, gracias a los chicos de eSpeak por ponerlo a disposición de todos.

Instalación

La instalación es sencilla, abre Terminal:

sudo apt-get install espeak

Probando espeak

espeak es una aplicación de consola.

Ejecuta:

espeak -ves+m3 'Hola, soy Altaruru. Gracias por seguirnos.'

Ahora prueba:

espeak -ves+f5 'Esta voz me gusta mas.'

Al llamar a speak estamos indicando el idioma español: -ves y la voz que queremos, por ejemplo la voz «f5» que corresponde con una chica, female5.

Cambiar el tono

Puede que prefieras un tono más grave o agudo, en ese caso utilizamos -p:

El valor por defecto es -p50, un valor mas bajo hace la voz más grave y más alto hace la voz más aguda:

espeak -ves+f5 -p70 'Ahora mi timbre es más agudo'

Cambiar la velocidad de lectura

Puedes acelerar o reducir la velocidad de lectura con el parámetro -s.

La velocidad por defecto equivale a -s160. Un valor más alto hace que lea más rápido y un valor menor lee más despacio.

El siguiente ejemplo leerá un poco más rápido que los anteriores.

espeak -ves+f5 -s175 'Ahora hablo un poco más rápido'

Leer el texto de un fichero

Si en vez de pasar el texto como parámetro quieres leer un archivo, lo indicamos con -f.

espeak -ves+f5 -f 'elprincipito.txt'

Generar un archivo de audio.

Es posible generar un archivo de audio, el formato soportado es wav.

Posteriormente puedes pasar de wav a otro formato (mp3, ogg, …) con lame o soundconverter.

espeak desde Python

Si bien hay módulos de python, no consigo echarlos a andar ni en Lubuntu y en Raspbian, si alguien lo ha hecho que lo deje por aqui xD.

A pesar de eso, cualquier app de consola puede llamarse desde python facilmente con os.system

El código no tiene mucho que comentar.

La función leetexto() tiene como parámetros <idioma>,<voz> y <texto>

import os

def listavoces():
	print('lista de voces disponibles:')
	scommand="espeak --voices=variant"
	os.system(scommand)

def leetexto(idioma, voz, texto):
	#idioma='es'; voz='m3'
	print('lectura de texto, idioma: "' + idioma + '", voz: ' + voz + ";")
	scommand='espeak -v' + idioma + '+' + voz + ' "' + texto + '"'
	print("$ " + scommand)
	os.system(scommand)

listavoces()
leetexto('es','whisperf','Hola, soy Altaruru. Gracias por seguirnos.')

He dejado mi voz favorita para el final, whisperf. Aunque yo la llamo Epi xD

Ayuda

Hemos visto las opciones más frecuentes si quieres investigar por tu cuenta puedes ver el resto de opciones con:

espeak --help

Espero os guste.

Hagamos que las máquinas hablen! Saludos y Altaruru.

Referencias:

Deja un comentario

Tu dirección de correo electrónico no será publicada.