Passer à la navigation

Assemblage de plusieurs requêtes

Ce guide explique comment préserver la prosodie vocale entre plusieurs segments ou générations de texte.

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

Lorsque vous convertissez un long texte en audio, vous pouvez constater des changements brusques de prosodie d’un segment à l’autre. Cela peut être particulièrement perceptible lorsque vous convertissez un texte couvrant plusieurs paragraphes ou sections. Pour préserver la prosodie vocale 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é ensuite, afin de préserver 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 facile à utiliser avec les SDK ElevenLabs.

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

1

Assembler plusieurs requêtes

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

Vous pouvez fournir au maximum 3 ID de requête dans previous_request_ids. Au-delà, les requêtes renvoient une erreur 400. Transmettez les 3 ID les plus récents, en plaçant en dernier la requête la plus proche de la requête actuelle.

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

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 comme contexte, celle-ci doit être entièrement traitée. Avec le streaming, cela signifie que l’audio doit être entièrement lu 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 Enterprise ayant des exigences accrues en matière de confidentialité.

Étapes suivantes