Server-seitiges Streaming

Diese Anleitung zeigt Ihnen, wie Sie Audio mit ElevenLabs serverseitig in Echtzeit transkribieren.

Anleitung · Setzt voraus, dass Sie den Speech to Text Schnellstart abgeschlossen haben.

Überblick

Mit der ElevenLabs API für Echtzeit-Spracherkennung können Sie Audiostreams mit extrem niedriger Latenz und dem Modell Scribe Realtime v2 in Echtzeit transkribieren. Ob Sie Sprachassistenten, Transkriptionsdienste oder Anwendungen entwickeln, die Live-Spracherkennung benötigen: Diese WebSocket-basierte API liefert Teiltranskripte während des Sprechens und abgeschlossene Transkripte, sobald Sprachsegmente beendet sind.

Scribe v2 Realtime kann serverseitig implementiert werden, um Audio in Echtzeit zu transkribieren – über eine URL, eine Datei oder Ihren eigenen Audiostream.

Die serverseitige Implementierung unterscheidet sich in einigen Punkten von der clientseitigen:

  • Verwendet einen ElevenLabs API-Schlüssel statt eines Einmal-Tokens.
  • Unterstützt das Streaming direkt von einer URL, ohne dass Sie das Audio manuell in Abschnitte aufteilen müssen.

Informationen zum direkten Streaming von Audio über das Mikrofon finden Sie in der Anleitung Client-seitiges Streaming.

Schnellstart

In diesem Leitfaden wird vorausgesetzt, dass Sie Ihren API-Schlüssel und das SDK eingerichtet haben. Schließen Sie zuerst den Schnellstart ab, falls Sie dies noch nicht getan haben.

1

SDK konfigurieren

Das SDK bietet zwei Möglichkeiten, Audio in Echtzeit zu transkribieren: Streaming über eine URL oder manuelles Aufteilen des Audios aus einer Datei oder Ihrem eigenen Audiostream in Chunks.

Eine vollständige Liste der von der API unterstützten Parameter und Optionen finden Sie in der API-Referenz.

Dieses Beispiel zeigt, wie Sie mit dem offiziellen SDK eine Audiodatei über eine URL streamen.

Das Tool ffmpeg ist beim Streaming über eine URL erforderlich. Installationsanweisungen finden Sie auf der Website.

Erstellen Sie je nach gewählter Sprache eine neue Datei mit dem Namen example.py oder example.mts und fügen Sie den folgenden Code hinzu:

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

Code ausführen

python example.py

Die Transkription der Audiodatei wird in partiellen und bestätigten Transkripten in der Konsole ausgegeben.

Nächste Schritte