Streaming côté serveur

Ce guide explique comment transcrire de l’audio en temps réel côté serveur avec ElevenLabs.

Guide pratique · Suppose que vous avez suivi le démarrage rapide de Speech to Text.

Vue d’ensemble

L’API ElevenLabs Realtime Speech to Text vous permet de transcrire des flux audio en temps réel avec une latence ultra-faible grâce au modèle Scribe Realtime v2. Que vous développiez des assistants vocaux, des services de transcription ou toute application nécessitant une reconnaissance vocale en direct, cette API basée sur WebSocket fournit des transcriptions partielles pendant que vous parlez et des transcriptions validées une fois les segments vocaux terminés.

Scribe v2 Realtime peut être implémenté côté serveur pour transcrire de l’audio en temps réel, à partir d’une URL, d’un fichier ou de votre propre flux audio.

L’implémentation côté serveur diffère de celle côté client à plusieurs égards :

  • Utilise une clé API ElevenLabs au lieu d’un jeton à usage unique.
  • Prend en charge le streaming direct depuis une URL, sans avoir à découper manuellement l’audio.

Pour diffuser de l’audio directement depuis le microphone, consultez le guide de streaming côté client.

Démarrage rapide

Ce guide suppose que vous avez configuré votre clé API et votre SDK. Terminez d’abord le démarrage rapide si ce n’est pas encore fait.

1

Configurer le SDK

Le SDK propose deux façons de transcrire de l’audio en temps réel : diffuser depuis une URL ou découper manuellement l’audio depuis un fichier ou votre propre flux audio.

Pour obtenir la liste complète des paramètres et options pris en charge par l’API, consultez le Guide de l’API.

Cet exemple montre comment diffuser un fichier audio depuis une URL à l’aide du SDK officiel.

L’outil ffmpeg est requis pour diffuser depuis une URL. Consultez son site web pour les instructions d’installation.

Créez un fichier nommé example.py ou example.mts, selon le langage de votre choix, puis ajoutez le code suivant :

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

Exécuter le code

python example.py

La transcription du fichier audio s’affiche dans la console sous forme de transcriptions partielles et validées.

Étapes suivantes