Hoppa till navigering

Serversidesstreaming

Den här guiden visar hur du transkriberar ljud i realtid på serversidan med ElevenLabs.

Guide · Förutsätter att du har slutfört snabbstarten för Speech to Text .

Översikt

ElevenLabs Realtime Speech to Text API gör att du kan transkribera ljudströmmar i realtid med extremt låg latens med modellen Scribe Realtime v2. Oavsett om du bygger röstassistenter, transkriberingstjänster eller någon annan applikation som kräver taligenkänning i realtid, levererar detta WebSocket-baserade API delvisa transkript medan du talar och bekräftade transkript när talsegment är klara.

Scribe v2 Realtime kan implementeras på serversidan för att transkribera ljud i realtid, antingen via en URL, en fil eller din egen ljudström.

Implementeringen på serversidan skiljer sig från klientsidan på några sätt:

  • Använder en ElevenLabs API-nyckel i stället för en engångstoken.
  • Stöder streaming direkt från en URL, utan att du behöver dela upp ljudet manuellt i segment.

För att strömma ljud direkt från mikrofonen, se guiden Klientsidesstreaming.

Snabbstart

Den här guiden förutsätter att du har konfigurerat din API-nyckel och ditt SDK. Slutför snabbstarten först om du inte redan har gjort det.

1

Konfigurera SDK:t

SDK:t erbjuder två sätt att transkribera ljud i realtid: streaming från en URL eller manuell uppdelning av ljudet från antingen en fil eller din egen ljudström.

En fullständig lista över parametrar och alternativ som API:t stöder finns i API-referensen.

Det här exemplet visar hur du streamar en ljudfil från en URL med det officiella SDK:t.

Verktyget ffmpeg krävs vid streaming från en URL. Besök deras webbplats för installationsinstruktioner.

Skapa en ny fil med namnet example.py eller example.mts, beroende på vilket språk du väljer, och lägg till följande kod:

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

Kör koden

python example.py

Du ser transkriberingen av ljudfilen utskriven i konsolen som delvisa och bekräftade transkript.

Nästa steg