Skip to navigation

Server-side streaming

In deze handleiding leer je hoe je met ElevenLabs audio in realtime aan de serverzijde transcribeert.

Stapsgewijze handleiding · Hierbij wordt ervan uitgegaan dat je de Speech to Text- quickstart hebt gevolgd.

Overzicht

Met de ElevenLabs Realtime Speech to Text API kun je audiostreams in realtime met ultralage latentie transcriberen met het model Scribe Realtime v2. Of je nu spraakassistenten, transcriptieservices of een andere applicatie bouwt die live spraakherkenning vereist: deze WebSocket-gebaseerde API levert gedeeltelijke transcripten tijdens het spreken en vastgelegde transcripten wanneer spraaksegmenten zijn voltooid.

Scribe v2 Realtime kan aan de serverzijde worden geïmplementeerd om audio in realtime te transcriberen, via een URL, bestand of je eigen audiostream.

De implementatie aan de serverzijde verschilt op een paar punten van die aan de client-side:

  • Gebruikt een ElevenLabs API-sleutel in plaats van een token voor eenmalig gebruik.
  • Ondersteunt rechtstreeks streamen vanaf een URL, zonder dat je de audio handmatig in chunks hoeft op te delen.

Bekijk voor het rechtstreeks streamen van audio vanaf de microfoon de handleiding Client-side streaming.

Quickstart

In deze handleiding wordt ervan uitgegaan dat je je API-sleutel en SDK hebt ingesteld. Volg eerst de quickstart als je dat nog niet hebt gedaan.

1

De SDK configureren

De SDK biedt twee manieren om audio in realtime te transcriberen: streamen vanaf een URL of de audio handmatig in chunks opdelen vanuit een bestand of je eigen audiostream.

Bekijk de API-referentie voor een volledige lijst van parameters en opties die de API ondersteunt.

Dit voorbeeld laat zien hoe je met de officiële SDK een audiobestand vanaf een URL streamt.

De tool ffmpeg is vereist wanneer je vanaf een URL streamt. Ga naar hun website voor installatie-instructies.

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

from dotenv import load_dotenv
import os
import asyncio
from elevenlabs import ElevenLabs, RealtimeEvents, RealtimeUrlOptions
load_dotenv()
async def main():
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
# Create an event to signal when to stop
stop_event = asyncio.Event()
# Connect to a streaming audio URL
connection = await elevenlabs.speech_to_text.realtime.connect(RealtimeUrlOptions(
model_id="scribe_v2_realtime",
url="https://npr-ice.streamguys1.com/live.mp3",
include_timestamps=True,
))
# Set up event handlers
def on_session_started(data):
print(f"Session started: {data}")
def on_partial_transcript(data):
print(f"Partial: {data.get('text', '')}")
def on_committed_transcript(data):
print(f"Committed: {data.get('text', '')}")
# Committed transcripts with word-level timestamps. Only received when include_timestamps is set to True.
def on_committed_transcript_with_timestamps(data):
print(f"Committed with timestamps: {data.get('words', '')}")
# Errors - will catch all errors, both server and websocket specific errors
def on_error(error):
print(f"Error: {error}")
# Signal to stop on error
stop_event.set()
def on_close():
print("Connection closed")
# Register event handlers
connection.on(RealtimeEvents.SESSION_STARTED, on_session_started)
connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, on_partial_transcript)
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, on_committed_transcript)
connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS, on_committed_transcript_with_timestamps)
connection.on(RealtimeEvents.ERROR, on_error)
connection.on(RealtimeEvents.CLOSE, on_close)
print("Transcribing audio stream... (Press Ctrl+C to stop)")
try:
# Wait until error occurs or connection closes
await stop_event.wait()
except KeyboardInterrupt:
print("\nStopping transcription...")
finally:
await connection.close()
if __name__ == "__main__":
asyncio.run(main())
2

De code uitvoeren

python example.py

Je ziet de transcriptie van het audiobestand als gedeeltelijke en vastgelegde transcripten in de console.

Volgende stappen