Die Sprachaktivitätserkennung (VAD) ist eine Funktion der Realtime API, die automatisch erkennt, wann eine Person zu sprechen beginnt oder aufhört.
Sie ist in Echtzeitsitzungen für Speech-to-Speech standardmäßig aktiviert, aber optional und kann deaktiviert werden.
Bei Echtzeitsitzungen für die Transkription hängt die Unterstützung für die Erkennung von Redebeiträgen vom Transkriptionsmodell ab. Modelle, die VAD unterstützen, verwenden standardmäßig server_vad. Bei gpt-realtime-whisper muss die Einstellung zur Erkennung von Redebeiträgen dagegen weggelassen oder auf null gesetzt werden.
Übersicht
Wenn VAD aktiviert ist, werden die Audiodaten automatisch in Abschnitte unterteilt. Die Realtime API sendet Ereignisse, die anzeigen, wann eine Person zu sprechen beginnt oder aufhört:
input_audio_buffer.speech_started: Beginn eines Redebeitragsinput_audio_buffer.speech_stopped: Ende eines Redebeitrags
Du kannst diese Ereignisse nutzen, um Redebeiträge in deiner Anwendung zu verarbeiten. Beispielsweise kannst du damit den Gesprächszustand verwalten oder Transkripte abschnittsweise verarbeiten.
Du kannst VAD mit dem Client-Ereignis session.update konfigurieren, indem du session.audio.input.turn_detection festlegst.
Für VAD gibt es zwei Modi:
server_vad: Unterteilt die Audiodaten anhand von Sprechpausen automatisch in Abschnitte.semantic_vad: Unterteilt die Audiodaten in Abschnitte, wenn das Modell anhand der gesprochenen Worte davon ausgeht, dass die Person ihre Äußerung abgeschlossen hat.
Für Sitzungen und Modelle, die VAD unterstützen, ist server_vad der Standardwert.
Im Folgenden erfährst du mehr über die verschiedenen Modi.
Server-VAD
Server-VAD ist der Standardmodus für Speech-to-Speech-Sitzungen sowie für Transkriptionssitzungen mit Modellen, die die Erkennung von Redebeiträgen unterstützen. Dieser Modus unterteilt die Audiodaten anhand von Sprechpausen automatisch in Abschnitte.
Mit den folgenden Eigenschaften kannst du die VAD-Einstellungen genauer abstimmen:
threshold: Aktivierungsschwelle (0 bis 1). Bei einer höheren Schwelle muss das Audiosignal lauter sein, um das Modell zu aktivieren. Das kann in lauten Umgebungen zu besseren Ergebnissen führen.prefix_padding_ms: Länge des Audioabschnitts (in Millisekunden), der vor dem von VAD erkannten Sprachbeginn zusätzlich einbezogen wird.silence_duration_ms: Dauer der Stille (in Millisekunden), nach der das Ende eines Redebeitrags erkannt wird. Bei kürzeren Werten werden Redebeiträge schneller erkannt.
Hier ist ein Beispiel für eine VAD-Konfiguration:
{
"type": "session.update",
"session": {
"type": "realtime",
"audio": {
"input": {
"turn_detection": {
"type": "server_vad",
"threshold": 0.5,
"prefix_padding_ms": 300,
"silence_duration_ms": 500,
"create_response": true, // only in conversation mode
"interrupt_response": true // only in conversation mode
}
}
}
}
}
Verwende in Transkriptionssitzungen dasselbe Feld session.audio.input.turn_detection. Lass bei gpt-realtime-whisper die Einstellung zur Erkennung von Redebeiträgen weg oder setze sie auf null.
Die Felder create_response und interrupt_response werden nur in Speech-to-Speech-Gesprächen verwendet. In Transkriptionssitzungen steuert VAD ausschließlich, wie die Audiodaten in Abschnitte unterteilt werden.
Semantische VAD
Die semantische VAD ist ein neuer Modus, der mithilfe eines semantischen Klassifikators anhand der gesprochenen Worte erkennt, wann eine Person zu Ende gesprochen hat. Dieser Klassifikator bewertet die eingehenden Audiodaten danach, wie wahrscheinlich es ist, dass die Person zu Ende gesprochen hat. Bei geringer Wahrscheinlichkeit wartet das Modell eine bestimmte Zeit ab. Bei hoher Wahrscheinlichkeit muss es dagegen nicht warten. Wenn eine Äußerung beispielsweise mit einem zögerlichen „ähm …“ ausklingt, führt das zu einer längeren Wartezeit als bei einer eindeutigen Aussage.
In diesem Modus ist es weniger wahrscheinlich, dass das Modell die sprechende Person während eines Speech-to-Speech-Gesprächs unterbricht oder einen Transkriptabschnitt abschließt, bevor sie zu Ende gesprochen hat.
Du kannst die semantische VAD aktivieren, indem du session.audio.input.turn_detection.type auf semantic_vad setzt.
So kannst du sie konfigurieren:
{
"type": "session.update",
"session": {
"type": "realtime",
"audio": {
"input": {
"turn_detection": {
"type": "semantic_vad",
"eagerness": "low" | "medium" | "high" | "auto", // optional
"create_response": true, // only in conversation mode
"interrupt_response": true, // only in conversation mode
}
}
}
}
}
In Transkriptionssitzungen gilt dasselbe Feld session.audio.input.turn_detection. Die Felder create_response und interrupt_response gelten nur für Gespräche.
Mit der optionalen Eigenschaft eagerness kannst du steuern, wie schnell das Modell die sprechende Person unterbricht. Dazu passt du die maximale Wartezeit an. Im Transkriptionsmodus beeinflusst diese Eigenschaft die Unterteilung der Audiodaten in Abschnitte, auch wenn das Modell nicht antwortet.
autoist der Standardwert und entsprichtmedium.- Mit
lowkann sich die sprechende Person Zeit lassen. - Mit
highwerden die Audiodaten so früh wie möglich in Abschnitte unterteilt.
Wenn das Modell im Gesprächsmodus häufiger antworten oder im Transkriptionsmodus schneller Transkriptionsereignisse zurückgeben soll, kannst du eagerness auf high setzen.
Wenn du dagegen die Person im Gesprächsmodus ungestört sprechen lassen möchtest oder im Transkriptionsmodus größere Transkriptabschnitte bevorzugst, kannst du eagerness auf low setzen.