Zum Hauptinhalt springen
Lektion 8 von 18 · Realtime API und Voice Agents

Automatische Übersetzung

Lektion 8 von 18 Aktualisiert am 3. November 2026 Entwickler
Auf dieser Seite
  1. Zwei Bedürfnisse, zwei Werkzeuge
  2. Übersetzung einer Aufnahme
  3. Interpretation von Live-Sprache
  4. Kernaussagen

Lektion am 3. November 2026 überarbeitet. Sie berief sich zuvor auf den Endpunkt /v1/audio/translations und das Modell whisper-1, die beide am 26. Februar 2027 eingestellt und abgelehnt wurden, sowie auf eine umgenutzte Realtime-Assistentensitzung als Dolmetscher. OpenAI bietet nun zwei Wege: für Aufnahmen eine Transkription in der Ursprungssprache mit gpt-transcribe, gefolgt von einer Textübersetzung; für Live-Sprache eine dedizierte Sitzung zur Übersetzung mit gpt-realtime-translate. Der Code wurde mit der SDK openai 3.42.1 und der Bibliothek websocket-client verifiziert. Quellen: Transkription von Dateien · Live-Übersetzung · Einschränkungen.

Zwei Bedürfnisse, zwei Werkzeuge

Die Übersetzung von Audio abdeckt zwei sehr unterschiedliche Szenarien, und OpenAI behandelt sie mit unterschiedlichen Werkzeugen:

BedarfWerkzeug ab November 2026Ergebnis
Eine Aufnahme zur Übersetzung (Meeting, Podcast, archivierter Anruf)gpt-transcribe zur Transkription in der Ursprungssprache, anschließend ein Textmodell zur ÜbersetzungÜbersetzter Text in der Zielsprache
Live-Sprache zur Interpretation (Anruf, Konferenz, Unterricht)Live-Übersetzungssitzung mit gpt-realtime-translateÜbersetztes Audio und Transkripte, die während der Sprachproduktion generiert werden
Legacy-Pfad: /v1/audio/translations mit whisper-1Abgelehnt, eingestellt am 26. Februar 2027Nur englischer Text

Die Anleitung von OpenAI betont einen Punkt: Das bloße Ändern der Modell-ID in einer Anfrage an /v1/audio/translations führt zu keiner Migration. Der alte Endpunkt, der nur ins Englische übersetzen konnte, hat keinen direkten Ersatz.

Übersetzung einer Aufnahme

Diese Methode transkribiert zunächst getreu in der gesprochenen Sprache und übersetzt anschließend den Text. Sie funktioniert für jede Zielsprache – im Gegensatz zum alten Endpunkt, der nur Englisch produzierte – und liefert Ihnen beide Texte, was zur Verifizierung nützlich ist:

from openai import OpenAI

client = OpenAI()


def translate_recording(path: str, target_language: str) -> dict[str, str]:
    """Transkribiert eine Aufnahme in ihrer Ursprungssprache und übersetzt dann den Text."""
    with open(path, "rb") as f:
        transcription = client.audio.transcriptions.create(model="gpt-transcribe", file=f)

    response = client.responses.create(
        model="gpt-6-luna",
        instructions=(
            f"Übersetzen Sie den vom Benutzer bereitgestellten Text in {target_language}. "
            "Behalten Sie Ton und Stil bei. Antworten Sie nur mit der Übersetzung."
        ),
        input=transcription.text,
    )
    return {"original": transcription.text, "translation": response.output_text}


result = translate_recording("reunion_fr.mp3", "German")
print(result["translation"])

Zwei Entscheidungen verdienen eine Erklärung. Die Übersetzungsanweisung erfolgt in instructions, während die Transkription als reine Daten in input ankommt: Eine Aufnahme kann alles enthalten, einschließlich eines Satzes, der wie ein Befehl aussieht, und sie darf die Anweisung nicht ändern können. Das Modell gpt-6-luna ist das, was OpenAI für großangelegte, kostensensitive Verarbeitung empfiehlt; für sensible juristische oder technische Texte wählen Sie ein leistungsfähigeres Modell, wie gpt-6.1-sol.

Interpretation von Live-Sprache

Um während des Sprechens zu übersetzen, bietet OpenAI eine spezielle Art von Realtime-Sitzung an. Die Anleitung unterscheidet dies klar von einer Voice-Agenten-Sitzung:

Voice-Agenten-SitzungÜbersetzungssitzung
Verbindet sich mit /v1/realtimeVerbindet sich mit /v1/realtime/translations
Das Modell agiert als AssistentDas Modell agiert als Dolmetscher
Gesprächs- und Antwortzyklus (response.create)Kontinuierlicher Strom aus eingehendem Audio, kein response.create
Kann Tools aufrufenErzeugt übersetztes Audio und Transkripte

Der Transport hängt davon ab, wo das Audio ankommt. Im Browser sendet WebRTC die Mikrofoneingabe und empfängt die übersetzte Stimme als Audio-Tracks; Ihr Server erstellt hierfür einen kurzlebigen Client-Schlüssel über /v1/realtime/translations/client_secrets, sodass Ihr API-Schlüssel den Server nie verlässt. Auf der Serverseite, wenn das Audio bereits roh ankommt (Telefonstrom, Aufnahme), reicht eine WebSocket-Verbindung:

import base64
import json
import os

import websocket  # pip install websocket-client

ws = websocket.WebSocket()
ws.connect(
    "wss://api.openai.com/v1/realtime/translations?model=gpt-realtime-translate",
    header=[
        f"Authorization: Bearer {os.environ['OPENAI_API_KEY']}",
        "OpenAI-Safety-Identifier: hashed-user-id",  # gehashter Identifier Ihres Benutzers
    ],
)

# Zielsprache des Dolmetschers
ws.send(json.dumps({"type": "session.update", "session": {"audio": {"output": {"language": "en"}}}}))


def send_audio(pcm16: bytes) -> None:
    """Fügt einen Chunk von Quell-Audio hinzu: 16-Bit PCM, Mono, 24 kHz."""
    ws.send(json.dumps({"type": "session.input_audio_buffer.append", "audio": base64.b64encode(pcm16).decode()}))

Während Sie das Audio senden, einschließlich Pausen, gibt die Sitzung Ereignisse zurück, die auf dem Laufenden verarbeitet werden müssen: session.output_audio.delta enthält das übersetzte Audio in Base64, session.output_transcript.delta den übersetzten Text und session.input_transcript.delta die Transkription des Originals. Wenn die Quelle aufhört, senden Sie session.close: Der Dienst beendet die aktuelle Übersetzung und antwortet mit session.closed.

translation: list[str] = []
while True:
    event = json.loads(ws.recv())
    if event["type"] == "session.output_transcript.delta":
        translation.append(event["delta"])
    elif event["type"] == "error":
        raise RuntimeError(f"Übersetzungsfehler: {event['error']['code']}")
    elif event["type"] == "session.closed":
        break
ws.close()
print("".join(translation))

Vernachlässigen Sie das error-Ereignis nicht: Eine abgelehnte Schlüssel führt nicht zum Verbindungsabbruch selbst; sie kommt kurz darauf als error-Ereignis mit dem Code invalid_api_key (beobachtet am 3. November 2026). In der Produktion läuft die Rezeption parallel zum Senden in einem separaten Thread oder Task, und das übersetzte Audio geht an den Player oder die Telefonleitung, sobald es ankommt: Die offizielle Anleitung bietet eine vollständige Version an, einschließlich der Audio-Wiedergabe.

Kernaussagen

  • /v1/audio/translations und whisper-1 werden am 26. Februar 2027 eingestellt, ohne direkten Ersatz: Das Ändern des Modells reicht nicht aus
  • Für eine Aufnahme: gpt-transcribe in der Ursprungssprache, anschließend Textübersetzung durch ein Textmodell in jede Sprache
  • Halten Sie die Übersetzungsanweisung in instructions und die Transkription als reine Daten
  • Für Live-Sprache: Eine Übersetzungssitzung (/v1/realtime/translations, gpt-realtime-translate), die als Dolmetscher agiert, ohne response.create
  • WebRTC im Browser, mit einem vom Server erstellten Client-Schlüssel; WebSocket auf der Serverseite, mit 16-Bit PCM-Audio bei 24 kHz