
La conversión de texto a voz con Python ofrece muchas características, por ejemplo, podemos guardar la salida en un archivo de MP3, utilizar diversos idiomas y voces masculinas o femeninas.
Vamos a utilizar la librería gTTS (Google Text-to-Speech) de Python y generar archivos de audio desde un texto en español con una voz masculina, y para nuestro proyecto necesitaremos instalar la librería gTTS y un reproductor de audio como mpg321. Asegúrate de tener instalados ambos antes de ejecutar el código que compartiremos escrito en Python usando el framework Flask..
Primero, instala la librería gTTS y mpg321 utilizando pip en un entorno virtual:
python -m venv venv #python3 si estás en una distro Linux
venv\Scripts\activate #en Windows
source /venv/bin/activate #en Linux
pip install gtts
sudo apt-get install mpg321 # Si estás en Linux
Luego, puedes usar el siguiente código para leer un archivo de texto en español o una variable conteniendo el texto a transformar y convertirlo a audio. Guárdalo como archivo app.py:
def text_to_audio(text, output_file, language='es', tld='es'):
# Crear el objeto gTTS con la configuración del acento deseado
tts = gTTS(text=text, lang=language, tld=tld)
# Guardar el archivo de audio
tts.save(output_file)
if __name__ == "__main__":
input_text_file = '¿Por qué aprender desarrollo y programación web? Aprender desarrollo y programación web puede ser una inversión valiosa para cualquier persona interesada en una carrera en tecnología o en cualquier persona que busque una forma de trabajar de manera más independiente y creativa. Además, el campo está en constante evolución, lo que significa que siempre hay oportunidades para aprender y mejorar tus habilidades.'
output_audio_file = "audio.mp3" # Reemplaza con la ruta donde quieras guardar el archivo de audio
text_to_audio(input_text_file, output_audio_file)
Asegúrate de reemplazar "ruta/donde/guardar/el/audio.mp3"
con la ubicación donde quieras guardar el archivo de audio resultante. Procede a correr el script:
python app.py
Este código leerá el contenido del archivo de texto en español, utilizará gTTS para generar el audio con la voz masculina, y lo guardará como un archivo mp3.
Recuerda que para ejecutar este código, necesitarás tener acceso a Internet, ya que gTTS utiliza la API de Google para realizar la conversión de texto a voz.
Aplicación Flask
Para utilizar el script de Python que hemos desarrollado con el framework Flask y cargar una plantilla HTML con un formulario que reciba el texto, sigue estos pasos. Instala Flask si aún no lo tienes:
pip install flask
Crea una carpeta para tu proyecto y dentro de ella crea los siguientes archivos:
app.py
: Este será el archivo principal donde estará el código de Flask.templates/
: Esta carpeta contendrá las plantillas HTML.static/
: Esta carpeta contendrá archivos estáticos como CSS o imágenes (aunque en este caso no lo utilizaremos).
Coloca el siguiente contenido en los archivos:
app.py
from flask import Flask, render_template, request
from gtts import gTTS
app = Flask(__name__)
def text_to_audio(text, output_file, language='es-us'):
tts = gTTS(text=text, lang=language)
tts.save(output_file)
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
texto = request.form['texto']
archivo_audio = "static/audio.mp3" # Ruta donde se guardará el archivo de audio
text_to_audio(texto, archivo_audio)
return render_template('index.html', audio_file=archivo_audio)
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)
templates/index.html
<!DOCTYPE html>
<html>
<head>
<title>Text to Speech</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="container"><p>
<h1>Text to Speech</h1>
<form method="post">
<label for="texto">Ingresa el texto:</label>
<br>
<textarea name="texto" id="texto" rows="5" cols="40"></textarea>
<br>
<input type="submit" value="Generar Audio">
</form>
{% if audio_file %}
<audio controls>
<source src="{{ audio_file }}" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
{% endif %}
</p></div>
</body>
</html>
Ejecuta el servidor Flask:
python app.py

El servidor Flask se ejecutará en http://127.0.0.1:5000/
. Ahora, al abrir esta dirección en tu navegador, verás la página con un formulario donde puedes ingresar el texto.

Al enviarlo con el botón «Generar Audio», se creará un archivo de audio con la voz masculina en español utilizando el script de gTTS. El audio se reproducirá en la misma página para que puedas escucharlo

Recuerda que este código es solo un ejemplo sencillo para mostrarte cómo integrar gTTS con Flask y una plantilla HTML. Puedes mejorarlo y personalizarlo según tus necesidades.
Mira también el repositorio en GitHub.
Para conocer mas a fondo gTTS y ver su documentación visita este link.