Zur Navigation springen

Mehrere Anfragen zusammenfügen

Dieser Leitfaden zeigt, wie Sie die Stimmprosodie über mehrere Textabschnitte/Generierungen hinweg beibehalten.

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

Wenn Sie einen großen Text in Audio umwandeln, können abrupte Änderungen der Prosodie zwischen einzelnen Abschnitten auftreten. Dies kann besonders auffallen, wenn Sie Text umwandeln, der mehrere Absätze oder Bereiche umfasst. Um die Stimmprosodie über mehrere Abschnitte hinweg beizubehalten, können Sie die Funktion „Request Stitching“ verwenden.

Mit dieser Funktion können Sie Kontext dazu bereitstellen, 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 funktioniert am einfachsten mit den ElevenLabs SDKs.

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

1

Mehrere Anfragen zusammenfügen

Erstellen Sie je nach Ihrer bevorzugten Sprache eine neue Datei namens example.py oder example.mts und fügen Sie den folgenden Code hinzu:

Sie können maximal 3 Anfrage-IDs in previous_request_ids angeben. Bei mehr Anfragen wird ein 400-Fehler zurückgegeben. Übergeben Sie die 3 neuesten IDs, wobei die Anfrage, die der aktuellen am nächsten liegt, zuletzt kommt.

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

Code ausführen

python example.py

Sie sollten die zusammengefügte Audioausgabe hören.

FAQ

Um die Anfrage-IDs einer vorherigen Anfrage für die 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 Sie sind Enterprise-Nutzer mit erhöhten Datenschutzanforderungen.

Nächste Schritte