Vai alla navigazione

Streaming lato server

Questa guida mostra come trascrivere l'audio in tempo reale lato server usando ElevenLabs.

Guida pratica · Presuppone che tu abbia completato la guida rapida a Speech to Text.

Panoramica

L’API Trascrizione vocale in tempo reale di ElevenLabs ti consente di trascrivere stream audio in tempo reale con latenza ultra-ridotta usando il modello Scribe Realtime v2. Che tu stia creando assistenti vocali, servizi di trascrizione o qualsiasi applicazione che richieda il riconoscimento vocale in diretta, questa API basata su WebSocket fornisce trascrizioni parziali mentre parli e trascrizioni confermate quando i segmenti vocali sono completi.

Scribe v2 Realtime può essere implementato lato server per trascrivere l’audio in tempo reale, tramite URL, file o il tuo stream audio.

L’implementazione lato server differisce da quella lato client per alcuni aspetti:

  • Usa una chiave API ElevenLabs anziché un token monouso.
  • Supporta lo streaming diretto da un URL, senza dover suddividere manualmente l’audio in chunk.

Per lo streaming audio direttamente dal microfono, consulta la guida allo streaming lato client.

Guida rapida

Questa guida presuppone che tu abbia configurato la chiave API e l’SDK. Se non l’hai ancora fatto, completa prima la guida rapida.

1

Configura l'SDK

L’SDK offre due modi per trascrivere l’audio in tempo reale: streaming da un URL oppure suddivisione manuale dell’audio in chunk da un file o dal tuo stream audio.

Per l’elenco completo dei parametri e delle opzioni supportati dall’API, consulta il riferimento API.

Questo esempio mostra come eseguire lo streaming di un file audio da un URL usando l’SDK ufficiale.

Lo strumento ffmpeg è obbligatorio per lo streaming da un URL. Visita il sito web per le istruzioni di installazione.

Crea un nuovo file denominato example.py o example.mts, in base al linguaggio scelto, e aggiungi il codice seguente:

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

Esegui il codice

python example.py

Vedrai la trascrizione del file audio stampata nella console come trascrizioni parziali e confermate.

Passaggi successivi