Saltar al contenido
K0lateral
Programación

Automatiza audiolibros con ElevenLabs y Python

· (banco local)

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
(banco local)

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.

Más sobre Programación

Ver todo →