Skip to navigation

Meerdere requests samenvoegen

In deze handleiding lees je hoe je de prosodie van een stem behoudt tussen meerdere tekstblokken/generaties.

Handleiding · Hierbij gaan we ervan uit dat je de ElevenAPI- quickstart hebt voltooid.

Wanneer je een grote hoeveelheid tekst naar audio omzet, kun je abrupte veranderingen in prosodie tussen tekstblokken tegenkomen. Dit kan vooral opvallen wanneer je tekst omzet die meerdere alinea’s of secties beslaat. Om de prosodie van de stem over meerdere tekstblokken te behouden, kun je de functie Request Stitching gebruiken.

Met deze functie kun je context geven over wat al is gegenereerd en wat in de toekomst wordt gegenereerd. Zo blijft de stem en prosodie in de hele tekst consistent.

Request Stitching is niet beschikbaar voor het model eleven_v3.

Hier is een voorbeeld zonder Request Stitching:

En hetzelfde voorbeeld met Request Stitching:

Request Stitching gebruiken

Request Stitching werkt het eenvoudigst met de ElevenLabs SDK’s.

In deze handleiding gaan we ervan uit dat je je API-sleutel en SDK hebt ingesteld. Voltooi eerst de quickstart als je dat nog niet hebt gedaan.

1

Meerdere requests samenvoegen

Maak een nieuw bestand met de naam example.py of example.mts, afhankelijk van de programmeertaal van je keuze, en voeg de volgende code toe:

Je kunt maximaal 3 request-ID’s opgeven in previous_request_ids. Requests met meer ID’s geven een fout 400 terug. Geef de 3 meest recente ID’s door, waarbij de request die het dichtst bij de huidige ligt als laatste komt.

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

De code uitvoeren

python example.py

Je zou de samengevoegde audio moeten horen afspelen.

Veelgestelde vragen

Om de request-ID’s van een eerdere request voor conditionering te gebruiken, moet deze volledig zijn verwerkt. Bij streaming betekent dit dat de audio volledig uit de response body moet zijn gelezen.

Het verschil hangt af van het gebruikte model, de stem en de steminstellingen.

De request-ID’s mogen niet ouder zijn dan twee uur.

Ja, tenzij je een enterprise-gebruiker bent met strengere privacyvereisten.

Volgende stappen