Skip to navigation

Transcriptbewerking

In deze handleiding leer je hoe je bewerkingsinstructies in natuurlijke taal toepast op vastgelegde transcripties met de Realtime Speech to Text API.

How-to-handleiding · Hierbij wordt ervan uitgegaan dat je de handleiding voor client-side of server-side- streaming hebt voltooid.

Overzicht

Transcriptbewerking is een experimentele functie en voegt 30% toe aan de basiskosten voor transcriptie. Er wordt minimaal 10 seconden audio per vastgelegd transcript gefactureerd. Bekijk de API-prijspagina voor gedetailleerde prijsinformatie.

Realtime transcriptie kan een bewerkingsinstructie in natuurlijke taal toepassen op elk vastgelegd transcript, bijvoorbeeld om gesproken datums in een vaste notatie te schrijven of afkortingen en acroniemen uit te breiden. De instructie wordt één keer doorgegeven wanneer de verbinding wordt geopend en elk vastgelegd transcript wordt gevolgd door een afzonderlijke edited_transcript-event met de bewerkte tekst.

Gedeeltelijke transcripties worden nooit bewerkt. Ook de committed_transcript-event wordt niet gewijzigd, zodat bestaande integraties blijven werken wanneer je de functie inschakelt.

Transcriptbewerking kan niet worden gecombineerd met entity_detection. Verbindingen waarin beide zijn ingesteld, worden afgewezen met een invalid_request-fout.

Transcriptbewerking inschakelen

Geef de instructie door met de optie transcriptEdit bij het verbinden (de queryparameter transcript_edit van de WebSocket API). De instructie mag maximaal 2000 tekens lang zijn. Raadpleeg de handleiding voor batchtranscriptbewerking voor richtlijnen over het schrijven van instructies.

In alle SDK’s komen de bewerkte transcripties binnen via de event RealtimeEvents.EDITED_TRANSCRIPT.

Client-side

Gebruik @elevenlabs/client in de browser met een single-use token die door je server is uitgegeven, zoals beschreven in de handleiding voor client-side streaming.

import { Scribe, RealtimeEvents } from "@elevenlabs/client";
// Fetch a single-use token from your server first
const response = await fetch("/scribe-token", yourAuthHeaders);
const { token } = await response.json();
const connection = Scribe.connect({
token,
modelId: "scribe_v2_realtime",
transcriptEdit: "Write all dates in ISO 8601 format (YYYY-MM-DD)",
microphone: {
echoCancellation: true,
noiseSuppression: true,
},
});
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data) => {
console.log("Committed:", data.text);
});
connection.on(RealtimeEvents.EDITED_TRANSCRIPT, (data) => {
console.log("Edited:", data.edited_text);
});

Server-side

Gebruik de officiële SDK op je server, zoals beschreven in de handleiding voor server-side streaming. Alleen de optie en de event handler verschillen van die handleiding; audio versturen en de verbinding sluiten werkt op dezelfde manier.

import asyncio
import os
from dotenv import load_dotenv
from elevenlabs import AudioFormat, ElevenLabs, RealtimeAudioOptions, RealtimeEvents
load_dotenv()
async def main():
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeAudioOptions(
model_id="scribe_v2_realtime",
audio_format=AudioFormat.PCM_16000,
sample_rate=16000,
transcript_edit="Write all dates in ISO 8601 format (YYYY-MM-DD)",
))
def on_committed_transcript(data):
print(f"Committed: {data.get('text', '')}")
def on_edited_transcript(data):
print(f"Edited: {data.get('edited_text', '')}")
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, on_committed_transcript)
connection.on(RealtimeEvents.EDITED_TRANSCRIPT, on_edited_transcript)
# Send audio chunks as shown in the server-side streaming guide, then close.
await connection.close()
if __name__ == "__main__":
asyncio.run(main())

Bewerkte transcripties ontvangen

Wanneer de functie is ingeschakeld, volgt elk vastgelegd transcript op een edited_transcript-event met de vastgelegde tekst en de bewerkte versie ervan:

{
"message_type": "edited_transcript",
"text": "our next meeting is on the twelfth of July twenty twenty-six",
"edited_text": "our next meeting is on 2026-07-12"
}

Gedrag om rekening mee te houden:

  • Bewerkingen worden per vastgelegd segment toegepast. De edited_transcript-event wordt kort na de bijbehorende committed_transcript-event verzonden, omdat bewerking asynchroon gebeurt. De event kan na de volgende gedeeltelijke transcriptie arriveren en bewerkingen voor opeenvolgende segmenten kunnen in een andere volgorde arriveren. Gebruik het veld text om een bewerking aan het vastgelegde transcript te koppelen.
  • Als er geen bewerkingen aan een segment zijn gedaan, is edited_text identiek aan text.
  • Als er geen bewerking voor een segment kan worden gemaakt, wordt er geen edited_transcript-event voor verzonden. De committed_transcript-event wordt niet beïnvloed.
  • Tijdstempels op woordniveau in committed_transcript_with_timestamps beschrijven de oorspronkelijke vastgelegde tekst, niet de bewerkte tekst.

Volgende stappen