Enchaîner plusieurs requêtes

Ce guide explique comment préserver la prosodie d’une voix entre plusieurs segments ou générations de texte.

Guide pratique · Suppose que vous avez suivi le démarrage rapide d’ElevenAPI.

Lorsque vous convertissez un volume important de texte en audio, vous pouvez constater des changements brusques de prosodie d’un segment à l’autre. Cela peut être particulièrement perceptible lors de la conversion de texte couvrant plusieurs paragraphes ou sections. Pour préserver la prosodie de la voix sur plusieurs segments, vous pouvez utiliser la fonctionnalité Request Stitching.

Cette fonctionnalité vous permet de fournir le contexte de ce qui a déjà été généré et de ce qui sera généré ultérieurement, afin de conserver une voix et une prosodie cohérentes dans l’ensemble du texte.

Request Stitching n’est pas disponible pour le modèle eleven_v3.

Voici un exemple sans Request Stitching :

Et le même exemple avec Request Stitching :

Utiliser Request Stitching

Request Stitching est plus simple à utiliser avec les SDK ElevenLabs.

Ce guide suppose que vous avez configuré votre clé API et votre SDK. Suivez d’abord le démarrage rapide si ce n’est pas encore fait.

1

Enchaîner plusieurs requêtes

Créez un fichier nommé example.py ou example.mts, selon le langage de votre choix, puis ajoutez le code suivant :

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",
previous_request_ids=request_ids
) 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

Exécuter le code

python example.py

Vous devriez entendre la lecture de l’audio assemblé.

FAQ

Pour utiliser les ID de requête d’une requête précédente afin de conditionner la génération, celle-ci doit avoir été entièrement traitée. En diffusion en continu, cela signifie que l’audio doit être lu intégralement depuis le corps de la réponse.

La différence dépend du modèle, de la voix et des paramètres vocaux utilisés.

Les ID de requête ne doivent pas dater de plus de deux heures.

Oui, sauf si vous êtes un utilisateur d’entreprise ayant des exigences de confidentialité renforcées.

Étapes suivantes