Nutze Echtzeittranskription, wenn deine Anwendung Text aus einem Mikrofon, einem Anruf oder einem anderen Live-Audiostream benötigt, ohne dass der Assistent eine gesprochene Antwort ausgibt. Das empfohlene Modell liefert während des Spracheingangs schrittweise Transkript-Ergänzungen und ein endgültiges Transkript, sobald deine Anwendung den jeweiligen Audiobeitrag festschreibt.
Beginne mit gpt-live-transcribe. Wenn dein Audio bereits aufgezeichnet ist, nutze die Funktion Dateien transkribieren. Einen Vergleich der Arbeitsabläufe findest du in der Übersicht zur Transkription.
Eine Transkriptionssitzung erstellen
Erstelle eine Sitzung mit type: "transcription" und wähle gpt-live-transcribe aus. Stelle die Verbindung für serverseitige Audio-Pipelines über WebSocket oder für Audio im Browser über WebRTC her.
{
"type": "session.update",
"session": {
"type": "transcription",
"audio": {
"input": {
"format": {
"type": "audio/pcm",
"rate": 24000
},
"transcription": {
"model": "gpt-live-transcribe"
},
"turn_detection": null
}
}
}
}Dieses Beispiel verwendet PCM-Audio mit 24 kHz und deaktiviert die automatische Erkennung von Redebeiträgen, damit du jeden Beitrag explizit festschreiben kannst. Die vollständige Sitzungskonfiguration findest du in der Referenz zu Echtzeitsitzungen.
Audio streamen
Sende Audioabschnitte mit input_audio_buffer.append:
ws.send(
JSON.stringify({
type: "input_audio_buffer.append",
audio: base64Pcm16,
})
);Wenn die automatische Erkennung von Redebeiträgen deaktiviert ist, schreibe den Puffer fest, sobald du einen Audiobeitrag abschließen möchtest:
ws.send(
JSON.stringify({
type: "input_audio_buffer.commit",
})
);Damit der Server die Grenzen von Redebeiträgen erkennt und die Beiträge festschreibt, konfiguriere stattdessen die Sprachaktivitätserkennung.
Transkript-Ereignisse verarbeiten
Reagiere auf schrittweise Transkript-Ergänzungen und Abschlussereignisse:
ws.on("message", (data) => {
const event = JSON.parse(data);
if (event.type === "conversation.item.input_audio_transcription.delta") {
process.stdout.write(event.delta);
}
if (event.type === "conversation.item.input_audio_transcription.completed") {
console.log("\nFinal transcript:", event.transcript);
}
});Ein Delta-Ereignis enthält neu verfügbaren Transkripttext:
{
"type": "conversation.item.input_audio_transcription.delta",
"item_id": "item_003",
"content_index": 0,
"delta": "Hello,"
}
Ein Abschlussereignis enthält das endgültige Transkript für das festgeschriebene Element:
{
"type": "conversation.item.input_audio_transcription.completed",
"item_id": "item_003",
"content_index": 0,
"transcript": "Hello, how are you?"
}
Die Reihenfolge der Abschlussereignisse verschiedener Redebeiträge ist nicht garantiert. Verwende item_id, um Transkriptionsereignisse den festgeschriebenen Eingabeelementen zuzuordnen.
Kontext für die Transkription hinzufügen
Füge Kontext hinzu, wenn das Audio Fachbegriffe enthält oder mehrere Sprachen zu erwarten sind. Sende ein weiteres session.update-Ereignis, um die Transkriptionskonfiguration während einer laufenden Sitzung zu ändern.
{
"type": "session.update",
"session": {
"type": "transcription",
"audio": {
"input": {
"format": {
"type": "audio/pcm",
"rate": 24000
},
"transcription": {
"model": "gpt-live-transcribe",
"prompt": "A customer support call about a premium plan and account AC-42.",
"keywords": ["premium plan", "AC-42", "billing"],
"languages": ["en", "fr"],
"delay": "low"
},
"turn_detection": null
}
}
}
}- Verwende
prompt, um die Aufnahme oder ihren Kontext zu beschreiben. - Verwende
keywordsfür Produktnamen, Akronyme und andere Begriffe, die im Audio wörtlich vorkommen können. - Verwende
languagesfür die erwarteten Eingabesprachen.
Zu den unterstützten Sprachcodeformaten gehören:
- Codes nach ISO 639-1, etwa
en,esundfr. - Ausgewählte Codes nach ISO 639-3, etwa
eng,spa,yueundcmn. - Regionale Locale-Codes für
zh, etwazh-cn,zh-twundzh-hk.
Die Realtime API lehnt nicht unterstützte oder falsch formatierte Sprachcodes ab.
Schlüsselwörter dienen als Hinweise und müssen nicht in der Ausgabe erscheinen. Jedes Schlüsselwort muss auf einer einzigen Zeile stehen und darf weder < noch >, Wagenrücklauf- oder Zeilenvorschubzeichen enthalten. Die Realtime API lehnt die Sitzungsaktualisierung ab, wenn ein Schlüsselwort eines dieser Zeichen enthält oder prompt die Längenbegrenzung des Modells überschreitet.
gpt-live-transcribe verwendet languages anstelle des Felds language im Singular. Sende nicht beide Felder.
Einen festgeschriebenen Beitrag transkribieren
Verwende gpt-transcribe in einer Echtzeitsitzung nur dann, wenn die Transkription ausdrücklich erst nach dem Festschreiben eines Audiobeitrags beginnen soll oder du eine Ausgabe der erkannten Sprachen benötigst. Dieser spezielle Ablauf erfordert eine WebSocket-Verbindung.
Wenn gpt-transcribe Eingaben in einer Sitzung der Realtime API transkribiert oder in einer dedizierten Transkriptionssitzung ausgeführt wird, verwendet es automatisch zuvor transkribierte Beiträge als Kontext.
{
"type": "session.update",
"session": {
"type": "transcription",
"audio": {
"input": {
"format": {
"type": "audio/pcm",
"rate": 24000
},
"transcription": {
"model": "gpt-transcribe"
},
"turn_detection": null
}
}
}
}Füge Audio hinzu und sende input_audio_buffer.commit. Das Modell kann dann vor dem abschließenden Abschlussereignis schrittweise Transkript-Ergänzungen ausgeben. Das Abschlussereignis enthält auch die erkannten Sprachen:
{
"type": "conversation.item.input_audio_transcription.completed",
"item_id": "item_003",
"content_index": 0,
"transcript": "Bonjour, pouvez-vous m'entendre ?",
"languages": [{ "code": "fr" }]
}
Wenn gpt-transcribe keine zuverlässige Sprachvorhersage treffen kann, ist languages ein leeres Array. gpt-live-transcribe gibt keine Vorhersagen zu erkannten Sprachen zurück.
Latenz und Genauigkeit abstimmen
Bei der Streaming-Transkription musst du zwischen Latenz und Transkriptqualität abwägen. Mit einer geringeren Verzögerung können erste Textteile früher erscheinen. Eine höhere Verzögerung gibt dem Modell mehr Audiokontext, bevor es Text ausgibt, und kann die Wortfehlerrate senken.
Lege zunächst audio.input.transcription.delay fest und teste die Einstellung mit deinem tatsächlichen Audiomaterial. Diese Werte eignen sich als Ausgangspunkt:
minimalfür Interaktionen, bei denen es besonders auf eine geringe Latenz ankommt;lowfür Live-Untertitel mit geringer Latenz;mediumfür einen ausgewogenen Kompromiss zwischen Latenz und Genauigkeit;high, wenn Genauigkeit wichtiger ist als eine sofortige Anzeige;xhigh, wenn dein Ablauf die längste Verzögerung zugunsten von mehr Kontext zulässt.
Die genaue Verzögerung in Millisekunden kann je nach Modellkonfiguration variieren. Führe deshalb Benchmarks mit repräsentativem Audiomaterial durch, statt für jede Stufe eine feste Dauer anzunehmen.
Wähle eine Einstellung nicht allein anhand synthetischen Audiomaterials. Teste mit repräsentativen Mikrofonen, Telefonaudio, Akzenten, Hintergrundgeräuschen, Sprachwechseln, Fachvokabular und langen Sitzungen.
Mit Konfidenzwerten, Zeitstempeln und Sprecherkennzeichnungen umgehen
gpt-live-transcribe gibt weder Zeitstempel auf Wortebene noch Sprecherkennzeichnungen oder Konfidenzwerte für die Transkription zurück. Wenn deine Anwendung Zeitstempel oder Sprecherkennzeichnungen benötigt, verwende ein kompatibles Modell, das Dateien transkribieren kann, oder ergänze eine Ausweichlösung auf Anwendungsebene.
Checkliste für den Produktivbetrieb
- Lege vor der Abstimmung eine Ziellatenz und einen Schwellenwert für die Genauigkeit fest.
- Teste mit tatsächlichem Audiomaterial aus dem Produktivbetrieb, nicht nur mit störungsfreien Beispielen.
- Teste jede Zielsprache.
- Nimm Zahlen, Datumsangaben, Währungsangaben, E-Mail-Adressen, Produktnamen und Fachbegriffe in deinen Evaluationsdatensatz auf.
- Erfasse leere, abgeschnittene und verspätete Transkripte getrennt von der Wortfehlerrate.
- Lege fest, wie deine Benutzeroberfläche vorläufigen Text aktualisieren soll, wenn spätere Deltas frühere Textstellen korrigieren.
- Verwende
item_id, um endgültige Transkripte zu ordnen und abzugleichen. - Halte eine Ausweichlösung für nicht unterstützte Zeitstempel, Sprecherkennzeichnungen oder Konfidenzfelder bereit.
Weiterführende Leitfäden
Vergleiche Sitzungen für Sprachagenten, Übersetzung und Transkription.
Übersetze gesprochene Sprache live mit einer eigenen Übersetzungssitzung.
Streame Audio-Rohdaten über eine serverseitige Medienpipeline.
Konfiguriere die Erkennung von Gesprächsbeiträgen für Live-Audiostreams.