Mehrere Anfragen zusammenfügen

In diesem Leitfaden erfahren Sie, wie Sie die Sprachprosodie über mehrere Text-Chunks bzw. Generierungen hinweg beibehalten.

Anleitung · Setzt voraus, dass Sie den ElevenAPI- Schnellstart abgeschlossen haben.

Wenn Sie einen großen Textumfang in Audio umwandeln, kann es zwischen einzelnen Abschnitten zu abrupten Änderungen der Prosodie kommen. Das fällt besonders bei Texten auf, die mehrere Absätze oder Abschnitte umfassen. Um die Stimmprosodie über mehrere Abschnitte hinweg beizubehalten, können Sie die Funktion Request Stitching verwenden.

Mit dieser Funktion können Sie Kontext dazu angeben, was bereits generiert wurde und was künftig generiert wird. So bleiben Stimme und Prosodie im gesamten Text konsistent.

Request Stitching ist für das Modell eleven_v3 nicht verfügbar.

Hier ist ein Beispiel ohne Request Stitching:

Und dasselbe Beispiel mit Request Stitching:

Request Stitching verwenden

Request Stitching ist mit den ElevenLabs SDKs am einfachsten.

Dieser Leitfaden setzt voraus, dass Sie Ihren API-Schlüssel und Ihr SDK eingerichtet haben. Schließen Sie zuerst den Schnellstart ab, falls noch nicht geschehen.

1

Mehrere Anfragen zusammenfügen

Erstellen Sie je nach gewählter Sprache eine neue Datei mit dem Namen example.py oder example.mts und fügen Sie folgenden Code hinzu:

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_multilingual_v2",
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

Code ausführen

python example.py

Sie sollten das zusammengefügte Audio hören.

FAQ

Um die Anfrage-IDs einer vorherigen Anfrage zur Konditionierung zu verwenden, muss diese vollständig verarbeitet sein. Bei Streaming bedeutet das, dass das Audio vollständig aus dem Response-Body gelesen werden muss.

Der Unterschied hängt vom verwendeten Modell, der Stimme und den Stimmeinstellungen ab.

Die Anfrage-IDs sollten nicht älter als zwei Stunden sein.

Ja, außer für Enterprise-Nutzer mit erhöhten Datenschutzanforderungen.

Nächste Schritte