Automatiza audiolibros con ElevenLabs y Python
Aprende a generar audiolibros automáticos con ElevenLabs y Python. Tutorial práctico con prompts listos para copiar y pegar. Crea narraciones de calidad en
Automatiza audiolibros con ElevenLabs y Python
Mira, colega, si estás aquí es porque quieres dejar de leer en pantalla y empezar a escuchar contenido de calidad. Y tío, ElevenLabs con Python es la bomba para eso. Te voy a contar cómo automatizar la narración de textos largos, como libros o artículos, sin volverte loco. Directo al grano, sin teorías vacías.
Lo primero: necesitas una API key de ElevenLabs (te registras, eliges plan, y listo). Luego, Python con las librerías requests y pydub para manejar el audio. Instala con pip install requests pydub. Fácil, ¿no?
Aquí te dejo el primer prompt funcional para empezar. Cópialo y pégarlo en tu script:
import requests
CHUNK_SIZE = 1024
url = "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM" # Voz Rachel
headers = {
"Accept": "audio/mpeg",
"Content-Type": "application/json",
"xi-api-key": "TU_API_KEY"
}
data = {
"text": "Hola, esto es una prueba de narración automática con ElevenLabs y Python. Suena bien, ¿verdad?",
"model_id": "eleven_monolingual_v1"
}
response = requests.post(url, json=data, headers=headers)
with open('output.mp3', 'wb') as f:
for chunk in response.iter_content(chunk_size=CHUNK_SIZE):
if chunk:
f.write(chunk)
print("Audio generado: output.mp3")
¿Ves? Simple. Pero para audiolibros necesitas dividir textos largos en partes. Aquí va el segundo prompt, tío:
def generar_audio(texto, nombre_archivo):
url = "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM"
headers = {"Accept": "audio/mpeg", "Content-Type": "application/json", "xi-api-key": "TU_API_KEY"}
data = {"text": texto, "model_id": "eleven_monolingual_v1"}
response = requests.post(url, json=data, headers=headers)
with open(nombre_archivo, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
Ejemplo: narra un capítulo
capitulo = "Era una noche oscura y tormentosa. El viento aullaba entre los árboles..."
generar_audio(capitulo, "capitulo1.mp3")
Pero colega, un audiolibro de verdad tiene que unir todo. Aquí el tercer prompt, más pro:
from pydub import AudioSegment
import os
def unir_audios(lista_archivos, salida):
audio_completo = AudioSegment.empty()
for archivo in lista_archivos:
audio = AudioSegment.from_mp3(archivo)
audio_completo += audio
audio_completo.export(salida, format="mp3")
Supón que tienes capitulo1.mp3, capitulo2.mp3...
archivos = [f"capitulo{i}.mp3" for i in range(1, 4)]
unir_audios(archivos, "audiolibro_completo.mp3")
print("Audiolibro creado: audiolibro_completo.mp3")
Y si quieres automatizar desde un archivo de texto, mira este cuarto prompt:
def texto_a_audiolibro(archivo_txt, salida_mp3):
with open(archivo_txt, 'r', encoding='utf-8') as f:
texto = f.read()
# Divide en fragmentos de 5000 caracteres (límite ElevenLabs)
fragmentos = [texto[i:i+5000] for i in range(0, len(texto), 5000)]
audios_temp = []
for i, frag in enumerate(fragmentos):
nombre = f"temp_{i}.mp3"
generar_audio(frag, nombre)
audios_temp.append(nombre)
unir_audios(audios_temp, salida_mp3)
# Limpia archivos temporales
for archivo in audios_temp:
os.remove(archivo)
print(f"Audiolibro generado: {salida_mp3}")
Uso
texto_a_audiolibro("mi_libro.txt", "mi_audiolibro.mp3")
¿Ves cómo se automatiza todo? Claro, puedes ajustar la voz (cambia el ID en la URL), la velocidad, o hasta usar el modelo eleven_multilingual_v1 para otros idiomas. Pero colega, lo básico ya lo tienes.
El quinto prompt, para los más cracks, es añadir pausas entre capítulos:
def generar_con_pausas(texto, salida, pausa_ms=2000):
# Añade silencio entre fragmentos
url = "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM"
headers = {"Accept": "audio/mpeg", "Content-Type": "application/json", "xi-api-key": "TU_API_KEY"}
data = {"text": texto, "model_id": "eleven_monolingual_v1"}
response = requests.post(url, json=data, headers=headers)
with open("temp.mp3", 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
audio = AudioSegment.from_mp3("temp.mp3")
pausa = AudioSegment.silent(duration=pausa_ms)
audio_con_pausa = audio + pausa
audio_con_pausa.export(salida, format="mp3")
os.remove("temp.mp3")
Tío, con esto tienes un sistema para generar audiolibros de forma automática. Ideal para creadores de contenido que quieren convertir sus artículos, libros o guiones en audio sin esfuerzo. ElevenLabs suena de puta madre, y Python lo hace todo fácil.
Y tú, ¿qué herramienta usas para tus narraciones? ¿O prefieres hacerlo a mano como los de antes? Cuéntame en los comentarios de k0lateral.com.


