Herramientas para convertir texto a audio de voz natural

Escrito por picodotdev el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

Los archivos de audio son difíciles de editar, un cambio requiere volverlos a grabar de forma parcial o de forma completa lo que requiere mucho tiempo. Hay herramientas que permiten convertir texto a audio de voz sintetizada, el resultado de algunas herramientas es suficientemente bueno como para no distinguirse de una voz humana natural.

Al grabar un audio de voz se crea un archivo binario con la grabación en formato wav o comprimido con mp3. Estos formatos de audio son archivos poco editables, no se puede sustituir una palabra, frase o realizar una corrección. La única edición que permite un audio de voz es cortar un trozo o añadir un trozo de audio nuevo. Sin embargo, la edición no es perfecta y el tono de la voz de la parte editada puede variar con la parte anterior y posterior. Además, grabar un audio de voz requiere el tiempo para realizar la grabación.

Hay herramientas que usando un sintetizador de voz permiten transformar un texto en un audio, dando solución a dos de los problemas de la grabación de voz a partir de texto. Al convertir un texto a voz es más fácil la edición ya que basta simplemente cambiar el texto y generar de nuevo el audio y es más rápido ya que la generación del audio es más rápido que grabarlo en tiempo real. Algunos sintetizadores y herramientas además permiten seleccionar el idioma de la voz o ser una voz masculina o femenina.

Una de estas herramientas es TTS: Text-to-Speech, un proyecto de Mozilla y las ofrecidas por Amazon, Google y Microsoft. Esta y otras herramientas alternativas de conversión de texto a voz producen audios de voz bastante fieles a la voz humana natural. Para ayudar en la interpretación del texto se enriquece con un lenguaje de marcado que indica a la computadora como entonar e interpretar el texto.

En la actualidad hay herramientas de conversión de texto a voz natural que producen resultados difícilmente indisinguibles de si la voz ha sido producida por un humano por una computadora. Otra tarea para la que hay herramientas que producen buenos resultados es reconocimiento de texto en imágenes con OCR. Estas son tareas aparentemente simples pero significativamente complejas para una computadora que a pesar de su rapidez y capacidad enorme de cálculo no posee la inteligencia humana.

Convertir texto a voz natural

Herramientas web

Hay algunas páginas web que ofrecen el servicio de conversión de texto a audio sin necesidad de software adicional a un navegador web. Algunas con limitaciones de número de caracteres pero suficiente para un uso básico. También algunas permiten descargar el archivo de audio, en caso de que no ofrezcan la descargar se puede reproducir y capturar con el reproductor multimedia VLC en la opción Captura de audio > Monitor de audio interno (HDMI) > Guardar.

Servicios de conversión

Para un uso más profesional y avanzado hay algunas aplicaciones para Windows y entre los muchos servicios que ofrecen Amazon AWS, Google y Microsoft para hacer la operación de convertir audio a texto que realmente producen unos resultados muy buenos con una voz natural difícil de distinguir de una real.

Aplicaciones.

Servicios.

Mozilla TTS

La herramienta TTS es capaz de generar un audio de voz sintética a partir de un texto de bastante buena calidad. El audio de voz sintética no es perfecta ni tiene todos los matices en tono, velocidad de habla, contiene algunos defectos y otros matices de las voces humanas pero es aceptablemente bueno.

TTS se ofrece como una imagen de Docker que permite una instalación y uso sencillo de la herramienta. Previamente hay que instalar Docker, una vez instalado descargar la imagen del contenedor TTS e iniciar un contenedor de la herramienta TTS.

Hay varias voces disponibles específicas para cada idioma, la del español se indica con es, la de inglés con en

1
2
$ docker run --rm -it -p 5002:5002 synesthesiam/mozillatts:es

docker.sh

Iniciado el servidor de TTS este ofrece dos interfaces una interfaz web en la dirección http://localhost:5002/ y una interfaz de linea de comandos con una API REST. Tanto en la interfaz web como en la interfaz de linea de comandos se ha de indicar el texto que convertir a audio. Esto genera como resultado un archivo de audio en formato wav. Para que ocupe menos es posible convertirlo a mp3.

1
2
$ curl -o voice.wav -X POST -H 'Content-Type: text/plain' --data '@text.txt' http://localhost:5002/api/tts

curl.sh

Interfaz web de Mozilla TTS

espeak

espeak y espeak-ng son dos herramientas de linea de comandos que aunque producen una voz sintetizada con un tono fácilmente reconocible como generado por computadora, robótico y metálico, son otras opciones conocidas.

1
2
$ espeak -f text.txt -v europe/es -w voice.wav

espeak.sh

Lenguaje de marcado de síntesis de voz (SSML)

Dependiendo de la herramienta de conversión de texto a voz la calidad de las voces de resultado son más fieles a la voz humana o son fácilmente reconocibles como haber sido generadas por una computadora. Algunas de estas herramientas ya producen conversiones de texto a voz que imitan con fidelidad las voces humanas haciendo uso de redes neuronales entrenadas. Un aspecto por el que son todavía fácilmente identificables es por la entonación y personalidad que los humanos imprimimos en el habla, sin ayuda las conversiones sintéticas de texto a voz son monótonas.

El lenguaje de marcado de síntesis de voz o SSML es un lenguaje que sirve de ayuda a la computadora para interpretar y dar entonación al texto a convertir a voz. Es un lenguaje similar al HTML, con etiquetas atributos y valores, utilizado en las páginas web pero con el propósito de la conversión a voz.

Hay aplicaciones que permite la edición del texto para añadirle el lenguaje de marcado SSML.

Resultado y ejemplo de conversión de texto a voz

El texto que he utilizado para hacer pruebas ha sido el de la descripción de mi blog. Con los siguientes resultados.

1
2
3
4
5
Blog sobre al lenguaje de programación Java y la distribución GNU/Linux que uso habitualmente, Arch Linux,
lo que aprendo sobre el software libre, la programación web y otros temas relacionados con la tecnología y la informática.
El contenido puede contener trazas de asuntos fuera de tema.

Publicando de uno a tres artículos únicos a la semana desde el año 2010.
text.txt

Utilizando el servicio Microsoft Text to Speech.

Utilizando el servicio Free TTS.

Utilizando Mozilla TTS.

Utilizando espeak.

Convertir el audio en formato wav a mp3

En el artículo cómo Cambiar el formato de archivos de música o audio en GNU/Linux comentaba cómo convertir diferentes tipos de audio entre formatos con la herramienta FFmpeg.

El comando para convertir un wav a los formatos mp3 y ogg comprimidos que ocupan significativamente menos sin pérdida de calidad perceptible son los siguientes. En función del formato

1
2
3
4
$ ffmpeg -i voice.wav -codec:a libmp3lame voice.mp3
$ ffmpeg -i voice.wav -codec:a libvorbis voice.ogg
$ ffmpeg -i voice.mp3 -codec:a libvorbis voice.ogg
$ ffmpeg -i voice.mp3 -codec:a libmp3lame -b:a 128k voice.mp3
convert.sh


Comparte el artículo: