La détection de l’activité vocale (VAD) permet à la Realtime API de détecter automatiquement quand l’utilisateur commence ou cesse de parler.
Elle est activée par défaut dans les sessions Realtime parole à parole, mais vous pouvez la désactiver.
Dans les sessions Realtime de transcription, la prise en charge de la détection des tours de parole dépend du modèle de transcription. Les modèles qui prennent en charge la VAD utilisent server_vad par défaut. Avec gpt-live-transcribe et gpt-realtime-whisper, vous devez omettre le paramètre de détection des tours de parole ou lui attribuer la valeur null. Envoyez input_audio_buffer.commit pour marquer la fin de chaque tour de parole avec ces modèles.
Vue d’ensemble
Lorsque la VAD est activée, l’audio est automatiquement découpé en segments. La Realtime API envoie des événements pour signaler que l’utilisateur commence ou cesse de parler.
input_audio_buffer.speech_startedindique le début d’un tour de parole.input_audio_buffer.speech_stoppedindique la fin d’un tour de parole.
Vous pouvez utiliser ces événements pour gérer les tours de parole dans votre application, par exemple pour suivre l’état de la conversation ou traiter les transcriptions par segments.
Pour configurer la VAD, envoyez l’événement client session.update en renseignant session.audio.input.turn_detection.
La VAD propose deux modes.
server_vaddécoupe automatiquement l’audio en fonction des périodes de silence.semantic_vaddécoupe l’audio lorsque le modèle estime, d’après les mots prononcés, que l’utilisateur a terminé son énoncé.
Pour les sessions et les modèles qui prennent en charge la VAD, la valeur par défaut est server_vad.
Les sections suivantes décrivent le fonctionnement de chaque mode.
VAD côté serveur
La VAD côté serveur est le mode par défaut pour les sessions parole à parole et pour les sessions de transcription avec un modèle qui prend en charge la détection des tours de parole. Elle s’appuie sur les périodes de silence pour découper automatiquement l’audio.
Pour affiner les réglages de la VAD, ajustez les propriétés suivantes.
thresholddéfinit le seuil d’activation (de 0 à 1). Plus le seuil est élevé, plus le son doit être fort pour activer le modèle. Un seuil élevé peut donc donner de meilleurs résultats dans un environnement bruyant.prefix_padding_msdéfinit la durée d’audio (en millisecondes) à inclure avant le début de parole détecté par la VAD.silence_duration_msdéfinit la durée de silence (en millisecondes) nécessaire pour détecter la fin d’un tour de parole. Une durée plus courte permet de détecter cette fin plus rapidement.
Voici un exemple de configuration de la VAD.
{
"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
},
},
},
},
}
Utilisez le même champ session.audio.input.turn_detection dans les sessions de transcription. Avec gpt-live-transcribe et gpt-realtime-whisper, omettez ce champ ou attribuez-lui la valeur null.
Les champs create_response et interrupt_response servent uniquement dans les conversations parole à parole. Dans les sessions de transcription, la VAD contrôle uniquement le découpage de l’audio.
VAD sémantique
La VAD sémantique est un nouveau mode qui utilise un classifieur sémantique pour détecter, d’après les mots prononcés, quand l’utilisateur a fini de parler. Le classifieur attribue à l’audio d’entrée un score qui reflète la probabilité que l’utilisateur ait fini de parler. Si cette probabilité est faible, le modèle attend que le délai expire. Si elle est élevée, il n’a pas besoin d’attendre. Par exemple, le modèle attend plus longtemps si l’utilisateur laisse sa phrase en suspens que s’il la termine par une affirmation nette.
Dans ce mode, le modèle risque moins d’interrompre l’utilisateur pendant une conversation parole à parole ou de découper la transcription avant que l’utilisateur ait fini de parler.
Pour activer la VAD sémantique, attribuez à session.audio.input.turn_detection.type la valeur semantic_vad.
Voici un exemple de configuration.
{
"type": "session.update",
"session": {
"type": "realtime",
"audio": {
"input": {
"turn_detection": {
"type": "semantic_vad",
"eagerness": "auto", // optional
"create_response": true, // only in conversation mode
"interrupt_response": true, // only in conversation mode
},
},
},
},
}
Le même champ session.audio.input.turn_detection s’applique aux sessions de transcription avec les modèles qui prennent en charge la VAD. Les champs create_response et interrupt_response sont réservés au mode conversation.
La propriété facultative eagerness ajuste le délai d’attente maximal pour déterminer au bout de combien de temps le modèle peut interrompre l’utilisateur. En mode transcription, ce réglage influe sur le découpage de l’audio, même si le modèle ne répond pas.
autoest la valeur par défaut et équivaut àmedium.lowlaisse à l’utilisateur le temps de s’exprimer.highdécoupe l’audio dès que possible.
Pour que le modèle réponde plus souvent en mode conversation ou renvoie plus rapidement les événements de transcription en mode transcription, réglez eagerness sur high.
À l’inverse, pour laisser l’utilisateur parler sans interruption en mode conversation ou obtenir des segments de transcription plus longs en mode transcription, réglez eagerness sur low.