Apuntes mientras aprendo sobre software y computadoras.

Linux

Convertir texto en audio con gnuspeech

En este nuevo apunte voy a concentrarme en convertir texto en audio en Linux utilizando para eso gnuspeech.

Particularmente voy a trabajar con el comando spd-say.

Lo que me interesa es poder utilizar la terminal bash del sistema GNU/Linux para transformar un texto escrito en audio hablado.

Conseguir esto puede servir de ayuda para muchas cosas, especialmente para volver más accesible lo que hacemos.

Puede ser que estemos en la búsqueda de crear videos sin necesidad de utilizar nuestra propia voz. O tal vez nos interesa convertir documentos de textos en audio, para poder escucharlos o compartirlos. Todo eso se puede realizar por medio de gnu speech y el comando spd-say.

¿Qué es gnuspeech?

Al final del texto vas a encontrar un enlace a la página oficial de gnuspeech.

Para pasar de esta parte rápidamente, permitime darte un resumen de lo que entiendo yo al leer su manual.

Según pude comprender, gnuspeech es el nombre de un paquete de programas multi-plataforma para crear audio hablado por medio de la computadora.

Esta voz “sintética” admite distintos modelos de ritmo y entonación.

Todo eso luego se amplia con distintas explicaciones y aplicaciones que superan mi capacidad de entendimiento en este exacto momento.

Según el manual lo que hace es enviar lo que escribimos al proceso “speech-dispatcher” que se ocupa del texto y devuelve el audio.

Si… Bueno, en un ultra resumen, gnuspeech es lo que tenemos que instalar para ponernos a trabajar.

¿Cómo instalar gnuspeech en Linux?

Es posible que, al momento en que estas viendo esto, tu versión de GNU/Linux ya venga con todo lo referente a gnuspeech instalado.

Si esto no es así, conseguir el paquete correcto no es difícil.

Para instalar el programa, abrí la terminal y escribí:

sudo apt install gnustep-gui-runtime

Listo, terminado, simple como eso. Ojala escribir mi explicación anterior me hubiera resultado tan fácil como esto otro.

Cómo convertir texto en audio con el comando say

Ahora vamos a ver la forma más rápida de conseguir nuestro objetivo.

Lo que hay que hacer es escribir en la terminal el comando say acompañado de lo que queremos decir. Por ejemplo:

say apunte impensado es realmente interesante

El problema es que realmente no suena de forma espectacular. Es más funcional que espectacular y sirve para comunicarse con voz a través del teclado.

Lo mismo puede servir para leer un texto, si agregamos la opción -f y el nombre del archivo escrito. De este modo:

say -f archivodetexto.txt

Pero una vez más, esta es la solución rápida pero le falta delicadeza. No tiene más opciones para personalizarlo.

Y otro problema, este comando no nos permite exportar el audio hablado que se genera como un archivo independiente.

Si queremos llevar nuestro trabajo a otro nivel necesitamos usar el comando spd-say.

Cómo convertir texto en audio con el comando spd-say

En principio, hacer que convertir texto en audio en Linux con gnuspeech no es difícil.

Tenemos ahora que usar el comando spd-day, un comando que acepta muchos más matices que el anterior.

Abrimos la terminal y escribimos el comando junto a lo que buscamos decir… pero hay algo muy importante a tener en cuenta.

Con este comando el lenguaje en que estamos escribiendo es muy importante, va a determinar la interpretación de la lectura. Por configuración, el modelo que viene programado es el del idioma ingles.

Por ejemplo, podemos decir hola en ingles:

spd-say hello

Y puede ser buena idea usar comillas, para identificar rápido al verlo cual es la parte que va a decirse.

spd-say “hello”

Si todo funciona bien, vas a notar que esta voz parece mucho más “natural” que la obtenida por medio del comando say.

Sin embargo, si probas escribir algo en castellano, por ejemplo:

spd-say “hola”

La respuesta va a sonar como si la palabra estuviera siendo separada en silabas. Nos genera una suerte de ruido al interpretarlo.

Para convertir en audio con otro idioma, utilizamos la opción -l es (agregar -l establece el lenguaje, y “es” agrega el código ISO para castellano español).

Entonces probamos:

spd-say -l es “hola”

Ahora parece una palabra hablada por alguien que domina el español.

Y lo mismo a la inversa, si escribimos:

spd-say -l es “hello”

Va a resultar en un hello pronunciado sin entonación, lo que hace que se vuelva difícil de entender.

Pero no se termina en esto. Ademas, el comando spd-say admite múltiples opciones.

Entre todo lo que hay por hacer, vamos a poder darle otro perfil a la voz. Enriquecerla con nuevos detalles.

Con esto, que voy a profundizar en otro apunte, buscamos conseguir que nuestro texto escrito se convierta en un texto hablado de gran calidad.

Conclusión

Con todo esto ya pudimos ver cómo convertir texto en audio en Linux con gnuspeech.

Claro que en esta oportunidad apenas nos acercamos a la superficie de esta actividad. Todavía podemos hacer mucho más.

Si te interesa aprender un poco más del comando spd-say, te recomiendo leer esta otra entrada donde voy a estar revisando algunas otras de las opciones que el programa ofrece.

Del mismo modo que digo siempre, no olvides avisarme sobre cualquier error que encuentres en el material. Cualquier comentario o mensaje que puedas darme ayuda a mejorar el sitio.

La seguimos en el próximo apunte.

Recursos

Manual oficial (en ingles) de gnuspeech

Manual del comando spd-say (en inglés)

Dejar una respuesta