Saltar a la navegación

Unir varias solicitudes

Esta guía te muestra cómo mantener la prosodia de la voz en varios fragmentos o generaciones de texto.

Guía práctica · Da por hecho que has completado la guía de inicio rápido de ElevenAPI.

Al convertir un texto extenso en audio, es posible que notes cambios bruscos en la prosodia de un fragmento a otro. Esto puede resultar especialmente evidente al convertir texto que abarca varios párrafos o secciones. Para mantener la prosodia de la voz entre varios fragmentos, puedes usar la función Request Stitching.

Esta función te permite proporcionar contexto sobre lo que ya se ha generado y lo que se generará después, lo que ayuda a mantener una voz y prosodia coherentes en todo el texto.

Request Stitching no está disponible para el modelo eleven_v3.

Aquí tienes un ejemplo sin Request Stitching:

Y el mismo ejemplo con Request Stitching:

Cómo usar Request Stitching

Request Stitching es más fácil de usar con los SDK de ElevenLabs.

Esta guía da por hecho que has configurado tu clave de API y el SDK. Completa primero la guía de inicio rápido si aún no lo has hecho.

1

Unir varias solicitudes

Crea un archivo llamado example.py o example.mts, según el lenguaje que elijas, y añade el siguiente código:

Puedes proporcionar como máximo 3 ID de solicitud en previous_request_ids. Las solicitudes con más devuelven un error 400. Pasa los 3 ID más recientes, dejando al final la solicitud más cercana a la actual.

import os
from io import BytesIO
from elevenlabs.client import ElevenLabs
from elevenlabs.play import play
from dotenv import load_dotenv
load_dotenv()
ELEVENLABS_API_KEY = os.getenv("ELEVENLABS_API_KEY")
elevenlabs = ElevenLabs(
api_key=ELEVENLABS_API_KEY,
)
paragraphs = [
"The advent of technology has transformed countless sectors, with education ",
"standing out as one of the most significantly impacted fields.",
"In recent years, educational technology, or EdTech, has revolutionized the way ",
"teachers deliver instruction and students absorb information.",
"From interactive whiteboards to individual tablets loaded with educational software, ",
"technology has opened up new avenues for learning that were previously unimaginable.",
"One of the primary benefits of technology in education is the accessibility it provides.",
]
request_ids = []
audio_buffers = []
for paragraph in paragraphs:
# Usually we get back a stream from the convert function, but with_raw_response is
# used to get the headers from the response
with elevenlabs.text_to_speech.with_raw_response.convert(
text=paragraph,
voice_id="T7QGPtToiqH4S8VlIkMJ",
model_id="eleven_v4",
# The API accepts at most 3 previous request IDs
previous_request_ids=request_ids[-3:]
) as response:
request_ids.append(response._response.headers.get("request-id"))
# response._response.headers also contains useful information like 'character-cost',
# which shows the cost of the generation in characters.
audio_data = b''.join(chunk for chunk in response.data)
audio_buffers.append(BytesIO(audio_data))
combined_stream = BytesIO(b''.join(buffer.getvalue() for buffer in audio_buffers))
play(combined_stream)
2

Ejecuta el código

python example.py

Deberías oír el audio combinado y unido.

Preguntas frecuentes

Para usar los ID de solicitud de una solicitud anterior como condicionamiento, esta debe haberse procesado por completo. En el caso del streaming, esto significa que el audio debe haberse leído por completo del cuerpo de la respuesta.

La diferencia depende del modelo, la voz y los ajustes de voz utilizados.

Los ID de solicitud no deberían tener más de dos horas.

Sí, salvo si eres un usuario Enterprise con requisitos de privacidad reforzados.

Siguientes pasos