Skip to navigation

Meerdere requests samenvoegen

In deze handleiding leer je hoe je stemprosodie behoudt in meerdere tekstchunks/generaties.

Handleiding · Hierbij wordt ervan uitgegaan dat je de ElevenAPI- snelstart hebt voltooid.

Wanneer je een grote hoeveelheid tekst naar audio omzet, kun je abrupte veranderingen in prosodie van de ene chunk naar de andere tegenkomen. Dit kan vooral merkbaar zijn wanneer je tekst omzet die meerdere alinea’s of secties beslaat. Om de stemprosodie over meerdere chunks 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 volledige 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 is het eenvoudigst wanneer je de ElevenLabs-SDK’s gebruikt.

In deze handleiding wordt ervan uitgegaan dat je je API-sleutel en SDK hebt ingesteld. Voltooi eerst de snelstart 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 die je kiest, en voeg de volgende code toe:

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

De code uitvoeren

python example.py

Je zou de gecombineerde samengevoegde audio moeten horen afspelen.

Veelgestelde vragen

Om de request-ID’s van een eerdere request voor conditionering te gebruiken, moet die request volledig zijn verwerkt. Bij streaming betekent dit dat de audio volledig uit de response body moet worden 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 hogere privacyvereisten.

Volgende stappen