Options de configuration de l'API Live


Même avec l'implémentation de base de Live API, vous pouvez créer des interactions attrayantes et puissantes pour vos utilisateurs. Vous pouvez éventuellement personnaliser davantage l'expérience à l'aide des options de configuration suivantes :



Voix et langue de la réponse

Vous pouvez faire en sorte que le modèle réponde avec une voix spécifique et l'influencer pour qu'il réponde dans différentes langues.

Spécifier une voix de réponse

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques au fournisseur sur cette page.

Live API est compatible avec 30 voix HD synthétisées différentes, chacune ayant des caractéristiques distinctes. Vous pouvez consulter la liste des options de voix de réponse et écouter des démos de chaque voix en développant la section ci-dessous.

Si vous ne spécifiez pas de voix de réponse, la valeur par défaut est Puck.

Pour spécifier une voix de réponse, définissez le nom de la voix dans l'objet speechConfig lors de la configuration du modèle.

Swift


// ...

let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
  modelName: "GEMINI_LIVE_API_MODEL_NAME",
  // Configure the model to use a specific voice for its audio response.
  generationConfig: LiveGenerationConfig(
    responseModalities: [.audio],
    speech: SpeechConfig(voiceName: "VOICE_NAME")
  )
)

// ...

Kotlin


// ...

val model = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
    modelName = "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to use a specific voice for its audio response.
    generationConfig = liveGenerationConfig {
        responseModality = ResponseModality.AUDIO
        speechConfig = SpeechConfig(voice = Voice("VOICE_NAME"))
    }
)

// ...

Java


// ...

LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
    "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to use a specific voice for its audio response.
    new LiveGenerationConfig.Builder()
        .setResponseModality(ResponseModality.AUDIO)
        .setSpeechConfig(new SpeechConfig(new Voice("VOICE_NAME")))
        .build()
);

// ...

Web


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

const liveModel = getLiveGenerativeModel(ai, {
  model: "GEMINI_LIVE_API_MODEL_NAME",
  // Configure the model to use a specific voice for its audio response.
  generationConfig: {
    responseModalities: [ResponseModality.AUDIO],
    speechConfig: {
      voiceConfig: {
        prebuiltVoiceConfig: { voiceName: "VOICE_NAME" },
      },
    },
  },
});

// ...

Dart


// ...

final _liveModel = FirebaseAI.googleAI().liveGenerativeModel(
  model: 'GEMINI_LIVE_API_MODEL_NAME',
  // Configure the model to use a specific voice for its audio response.
  liveGenerationConfig: LiveGenerationConfig(
    responseModalities: [ResponseModalities.audio],
    speechConfig: SpeechConfig(voiceName: 'VOICE_NAME'),
  ),
);

// ...

Unity


// ...

var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
    modelName: "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to use a specific voice for its audio response
    liveGenerationConfig: new LiveGenerationConfig(
        responseModalities: new[] { ResponseModality.Audio },
        speechConfig: SpeechConfig.UsePrebuiltVoice("VOICE_NAME")
    )
);

// ...

Influencer la langue de la réponse

Les modèles Live API choisissent automatiquement la langue appropriée pour leurs réponses.

Si vous souhaitez que le modèle réponde dans une langue autre que l'anglais ou toujours dans une langue spécifique, vous pouvez influencer ses réponses à l'aide d'instructions système comme celles-ci :

  • Indiquez au modèle qu'une langue autre que l'anglais peut être appropriée.

    Listen to the speaker carefully. If you detect a non-English language, respond
    in the language you hear from the speaker. You must respond unmistakably in the
    speaker's language.
    
  • Indiquez au modèle de toujours répondre dans une langue spécifique.

    RESPOND IN LANGUAGE. YOU MUST RESPOND UNMISTAKABLY IN LANGUAGE.
    



Transcriptions pour l'entrée et la sortie audio

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques au fournisseur sur cette page.

Dans la réponse du modèle, vous pouvez recevoir des transcriptions de l'entrée audio et de la réponse audio du modèle. Vous définissez cette configuration dans la configuration du modèle.

  • Pour transcrire l'entrée audio, ajoutez inputAudioTranscription.

  • Pour la transcription de la réponse audio du modèle, ajoutez outputAudioTranscription.

Veuillez noter les points suivants :

  • Vous pouvez configurer le modèle pour qu'il renvoie les transcriptions de l'entrée et de la sortie (comme illustré dans l'exemple suivant), ou vous pouvez le configurer pour qu'il ne renvoie que l'une ou l'autre.

  • Les transcriptions sont diffusées en même temps que l'audio. Il est donc préférable de les collecter comme vous le faites pour les parties de texte à chaque tour.

  • La langue de transcription est déduite de l'entrée audio et de la réponse audio du modèle.

Swift


// ...

let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
  modelName: "GEMINI_LIVE_API_MODEL_NAME",
  // Configure the model to return transcriptions of the audio input and output.
  generationConfig: LiveGenerationConfig(
    responseModalities: [.audio],
    inputAudioTranscription: AudioTranscriptionConfig(),
    outputAudioTranscription: AudioTranscriptionConfig()
  )
)

var inputTranscript: String = ""
var outputTranscript: String = ""

do {
  let session = try await liveModel.connect()
  for try await response in session.responses {
    if case let .content(content) = response.payload {
      if let inputText = content.inputAudioTranscription?.text {
        // Handle transcription text of the audio input.
        inputTranscript += inputText
      }

      if let outputText = content.outputAudioTranscription?.text {
        // Handle transcription text of the audio output.
        outputTranscript += outputText
      }

      if content.isTurnComplete {
        // Log the transcripts after the current turn is complete.
        print("Input audio: \(inputTranscript)")
        print("Output audio: \(outputTranscript)")

        // Reset the transcripts for the next turn.
        inputTranscript = ""
        outputTranscript = ""
      }
    }
  }


} catch {
  // Handle error
}

// ...

Kotlin


// ...

val liveModel = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
    modelName = "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to return transcriptions of the audio input and output.
    generationConfig = liveGenerationConfig {
        responseModality = ResponseModality.AUDIO
        inputAudioTranscription = AudioTranscriptionConfig()
        outputAudioTranscription = AudioTranscriptionConfig()
   }
)

val liveSession = liveModel.connect()

fun handleTranscription(input: Transcription?, output: Transcription?) {
    input?.text?.let { text ->
        // Handle transcription text of the audio input.
        println("Input Transcription: $text")
    }
    output?.text?.let { text ->
        // Handle transcription text of the audio output.
        println("Output Transcription: $text")
    }
}

liveSession.startAudioConversation(null, ::handleTranscription)

// ...

Java


// ...

ExecutorService executor = Executors.newFixedThreadPool(1);

LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
    "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to return transcriptions of the audio input and output.
    new LiveGenerationConfig.Builder()
            .setResponseModality(ResponseModality.AUDIO)
            .setInputAudioTranscription(new AudioTranscriptionConfig())
            .setOutputAudioTranscription(new AudioTranscriptionConfig())
            .build()
    );

LiveModelFutures liveModel = LiveModelFutures.from(lm);
ListenableFuture<LiveSessionFutures> sessionFuture = liveModel.connect();

Futures.addCallback(sessionFuture, new FutureCallback<LiveSessionFutures>() {
    @Override
    public void onSuccess(LiveSessionFutures ses) {
        LiveSessionFutures session = ses;
        session.startAudioConversation((Transcription input, Transcription output) -> {
            if (input != null) {
                // Handle transcription text of the audio input.
                System.out.println("Input Transcription: " + input.getText());
            }
            if (output != null) {
                // Handle transcription text of the audio output.
                System.out.println("Output Transcription: " + output.getText());
            }
            return null;
        });
    }

    @Override
    public void onFailure(Throwable t) {
        // Handle exceptions
        t.printStackTrace();
    }
}, executor);

// ...

Web


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

const liveModel = getLiveGenerativeModel(ai, {
  model: 'GEMINI_LIVE_API_MODEL_NAME',
  // Configure the model to return transcriptions of the audio input and output.
  generationConfig: {
    responseModalities: [ResponseModality.AUDIO],
    inputAudioTranscription: {},
    outputAudioTranscription: {},
  },
});

const liveSession = await liveModel.connect();

liveSession.sendAudioRealtime({ data, mimeType: "audio/pcm" });

const messages = liveSession.receive();
for await (const message of messages) {
  switch (message.type) {
    case 'serverContent':
      if (message.inputTranscription) {
        // Handle transcription text of the audio input.
        console.log(`Input transcription: ${message.inputTranscription.text}`);
      }
      if (message.outputTranscription) {
        // Handle transcription text of the audio output.
        console.log(`Output transcription: ${message.outputTranscription.text}`);
      } else {
      	 // Handle other message types (modelTurn, turnComplete, interruption).
      }
    default:
      // Handle other message types (toolCall, toolCallCancellation).
  }
}

// ...

Dart


// ...

final _liveModel = FirebaseAI.googleAI().liveGenerativeModel(
  model: 'GEMINI_LIVE_API_MODEL_NAME',
  // Configure the model to return transcriptions of the audio input and output.
  liveGenerationConfig: LiveGenerationConfig(
    responseModalities: [ResponseModalities.audio],
    inputAudioTranscription: AudioTranscriptionConfig(),
    outputAudioTranscription: AudioTranscriptionConfig(),
  ),
);

final LiveSession _session = await _liveModel.connect();

await for (final response in _session.receive()) {
  if (response.message case LiveServerContent message) {
    if (message.inputTranscription?.text case final inputText?) {
      // Handle transcription text of the audio input.
      print('Input: $inputText');
    }

    if (message.outputTranscription?.text case final outputText?) {
      // Handle transcription text of the audio output.
      print('Output: $outputText');
    }
  }
}

// ...

Unity


// ...

var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
    modelName: "GEMINI_LIVE_API_MODEL_NAME",
    // Configure the model to return transcriptions of the audio input and output
    liveGenerationConfig: new LiveGenerationConfig(
        responseModalities: new[] { ResponseModality.Audio },
        inputAudioTranscription: new AudioTranscriptionConfig(),
        outputAudioTranscription: new AudioTranscriptionConfig()
    )
);

try
{
    var session = await liveModel.ConnectAsync();
    var stream = session.ReceiveAsync();
    await foreach (var response in stream) {
        if (response.Message is LiveSessionContent sessionContent) {
            if (!string.IsNullOrEmpty(sessionContent.InputTranscription?.Text)) {
              // handle transcription text of input audio
            }

            if (!string.IsNullOrEmpty(sessionContent.OutputTranscription?.Text)) {
              // handle transcription text of output audio
            }
        }
    }
}
catch (Exception e)
{
    // Handle error
}

// ...



Détection de l'activité vocale (VAD)

La détection de l'activité vocale (VAD, Voice Activity Detection) permet au modèle de reconnaître quand une personne parle. C'est essentiel pour créer des conversations naturelles, car cela vous permet d'interrompre le modèle à tout moment. La détection de l'activité vocale est activée par défaut.

Vous pouvez personnaliser le comportement de la DAV, y compris la gestion des interruptions. Vous pouvez également désactiver la VAD automatique pour prendre le contrôle manuel complet des tours de parole (par exemple, pour une interface push-to-talk).

Configurer la détection de l'activité vocale (VAD)

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques au fournisseur sur cette page.

L'exemple suivant montre comment personnaliser le comportement de la DAV en définissant realtimeInputConfig dans la configuration du modèle. Découvrez les paramètres disponibles pour cette configuration dans le tableau plus loin dans cette section.

Swift


// ...

let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
  modelName: "GEMINI_LIVE_API_MODEL_NAME",
  generationConfig: LiveGenerationConfig(
    responseModalities: [.audio],
    // Configure voice activity detection (VAD), interruption handling, and turn coverage.
    // IMPORTANT: Example values shown here. Make sure to update for your use case.
    realtimeInputConfig: RealtimeInputConfig(
      automaticActivityDetection: ActivityDetectionConfig(
        startSensitivity: .low,
        endSensitivity: .low,
        prefixPadding: .milliseconds(20),
        silenceDuration: .milliseconds(500)
      ),
      activityHandling: .interrupt,
      turnCoverage: .onlyActivity
    )
  )
)

Kotlin


// ...

val liveModel = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
    modelName = "GEMINI_LIVE_API_MODEL_NAME",
    generationConfig = liveGenerationConfig {
        responseModality = ResponseModality.AUDIO
        // Configure voice activity detection (VAD), interruption handling, and turn coverage.
        // IMPORTANT: Example values shown here. Make sure to update for your use case.
        realtimeInputConfig = realtimeInputConfig {
            automaticActivityDetection = ActivityDetectionConfig.builder()
                .setStartSensitivity(ActivityDetectionConfig.Sensitivity.LOW)
                .setEndSensitivity(ActivityDetectionConfig.Sensitivity.LOW)
                .setPrefixPaddingMs(20)
                .setSilenceDurationMs(500)
                .build()
            activityHandling = RealtimeInputConfig.ActivityHandling.INTERRUPT
            turnCoverage = RealtimeInputConfig.TurnCoverage.ONLY_ACTIVITY
        }
    }
)

Java


// ...

LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
        "GEMINI_LIVE_API_MODEL_NAME",
        new LiveGenerationConfig.Builder()
                .setResponseModality(ResponseModality.AUDIO)
                // Configure voice activity detection (VAD), interruption handling, and turn coverage.
                // IMPORTANT: Example values shown here. Make sure to update for your use case.
                .setRealtimeInputConfig(RealtimeInputConfig.builder()
                        .setAutomaticActivityDetection(ActivityDetectionConfig.builder()
                                .setStartSensitivity(ActivityDetectionConfig.Sensitivity.LOW)
                                .setEndSensitivity(ActivityDetectionConfig.Sensitivity.LOW)
                                .setPrefixPaddingMs(20)
                                .setSilenceDurationMs(500)
                                .build())
                        .setActivityHandling(RealtimeInputConfig.ActivityHandling.INTERRUPT)
                        .setTurnCoverage(RealtimeInputConfig.TurnCoverage.ONLY_ACTIVITY)
                        .build())
                .build()
);

Web

Not yet supported for Web apps - check back soon!

Dart


// ...

final _liveModel = FirebaseAI.googleAI().liveGenerativeModel(
  model: 'GEMINI_LIVE_API_MODEL_NAME',
  liveGenerationConfig: LiveGenerationConfig(
    responseModalities: [ResponseModalities.audio],
    // Configure voice activity detection (VAD), interruption handling, and turn coverage.
    // IMPORTANT: Example values shown here. Make sure to update for your use case.
    realtimeInputConfig: RealtimeInputConfig(
      automaticActivityDetection: ActivityDetectionConfig(
        startSensitivity: Sensitivity.low,
        endSensitivity: Sensitivity.low,
        prefixPaddingMS: 20,
        silenceDurationMS: 500,
      ),
      activityHandling: ActivityHandling.interrupt,
      turnCoverage: TurnCoverage.onlyActivity,
    ),
  ),
);

Unity


// ...

var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
    modelName: "GEMINI_LIVE_API_MODEL_NAME",
    liveGenerationConfig: new LiveGenerationConfig(
        responseModalities: new[] { ResponseModality.Audio },
        // Configure voice activity detection (VAD), interruption handling, and turn coverage.
        // IMPORTANT: Example values shown here. Make sure to update for your use case.
        realtimeInputConfig: new RealtimeInputConfig(
            automaticActivityDetection: new ActivityDetectionConfig(
                startSensitivity: ActivityDetectionConfig.Sensitivity.Low,
                endSensitivity: ActivityDetectionConfig.Sensitivity.Low,
                prefixPaddingMS: 20,
                silenceDurationMS: 500
            ),
            activityHandling: RealtimeInputConfig.ActivityHandling.Interrupt,
            turnCoverage: RealtimeInputConfig.TurnCoverage.OnlyActivity
        )
    )
);

Paramètres de configuration de la détection d'activité vocale disponibles

Paramètre Valeurs acceptées Description
Détection automatique d'activités (automaticActivityDetection)
startSensitivity
  • LOW (par défaut)
  • HIGH

Détermine la rapidité avec laquelle le serveur détecte qu'un utilisateur commence à parler :

  • LOW : moins sensible aux sons faibles. Cela permet d'éviter que le bruit ambiant ne déclenche par inadvertance une prise de parole.
  • HIGH : plus sensible. Cela permet de détecter rapidement les paroles plus calmes ou les mots prononcés à voix basse.
endSensitivity
  • LOW (par défaut)
  • HIGH

Détermine la rapidité avec laquelle le serveur détecte qu'un utilisateur arrête de parler :

  • LOW : moins sensible aux pauses de fin. Le serveur s'adapte aux hésitations naturelles ou aux mots prononcés plus doucement à la fin d'une phrase.
  • HIGH : plus sensible. Le serveur conclut rapidement le tour de parole une fois que les niveaux de voix diminuent.
prefixPadding Durée en millisecondes
(par défaut : aucune (0 ms))

Définit la quantité de contenu audio à inclure avant la détection de la parole.

Ce tampon de "rétrospective" garantit que le modèle capture l'intégralité du début de la parole, y compris la première syllabe qui commence souvent avant le déclenchement du détecteur.

  • La valeur par défaut de 0 peut entraîner la coupure du début des mots.
  • Recommandation : 20 à 50 millisecondes
silenceDuration Durée en millisecondes
(par défaut : ~800 ms)

Définit la durée pendant laquelle le serveur attend en silence avant de mettre fin à un tour de parole. Cela détermine la tolérance du système aux pauses naturelles en milieu de phrase (par exemple, pour réfléchir, respirer ou marquer la fin d'une proposition).

  • Recommandé (500 à 800 ms) : offre un bon équilibre. Le modèle reçoit un contenu audio complet et riche en contexte, tout en maintenant une latence de réponse raisonnable.
  • Trop faible (moins de 200 ms) : met fin aux tours de parole pendant les pauses naturelles, en divisant les énoncés en petits fragments qui peuvent dégrader la qualité de la transcription et de la réponse.
  • Trop élevée (supérieure à 2 000 ms) : ajoute un délai notable avant que le modèle ne commence à répondre.
Comportement d'interruption (activityHandling)
activityHandling
  • INTERRUPT (par défaut)
  • NO_INTERRUPT

Définit la manière dont le serveur gère l'activité de l'utilisateur entrante lors de la génération d'une réponse :

  • INTERRUPT : annule immédiatement la réponse actuelle du modèle lorsqu'une activité de l'utilisateur est détectée.
  • NO_INTERRUPT : continue de générer la réponse sans interruption.
Couverture du contexte de virage (turnCoverage)
turnCoverage
  • ONLY_ACTIVITY (par défaut)
  • ALL_INPUT
  • AUDIO_ACTIVITY_AND_ALL_VIDEO

Définit l'entrée diffusée en streaming qui est incluse dans le contexte du tour de conversation :

  • ONLY_ACTIVITY : exclut le silence, en ne conservant que les segments où une activité de l'utilisateur a été détectée.
  • ALL_INPUT : conserve toutes les entrées diffusées en streaming, y compris les silences audio.
  • AUDIO_ACTIVITY_AND_ALL_VIDEO : conserve toutes les images vidéo diffusées, mais uniquement les segments audio où une activité a été détectée.

Gérer les interruptions

Si le serveur détecte une entrée vocale de l'utilisateur pendant que le modèle génère une réponse et que activityHandling est défini sur INTERRUPT (valeur par défaut), tenez compte des comportements suivants :

  • La génération est annulée : le modèle interrompt immédiatement sa réponse et supprime tous les appels d'outils en attente.

  • L'historique de la session est tronqué : seul le contenu déjà transmis à votre application avant l'interruption est conservé dans la fenêtre de contexte de la session.

  • Un signal d'interruption est émis : le serveur envoie un message de réponse indiquant que la génération a été interrompue (par exemple, wasInterrupted en Swift ou interrupted en Kotlin, Java, Web, Flutter et Unity).

Désactiver la détection automatique de l'activité vocale (VAD)

Pour prendre le contrôle manuel complet des tours de conversation (par exemple, pour une interface push-to-talk), vous pouvez désactiver la détection automatique de l'activité vocale (VAD) au lieu de configurer les paramètres de sensibilité.

Lorsque la détection automatique est désactivée, le serveur ne détecte pas automatiquement la parole ni ne déclenche de réponses en fonction du silence audio. Votre application doit plutôt signaler manuellement les limites de l'activité de l'utilisateur pendant la session active.

1. Désactiver la VAD automatique dans la configuration du modèle

Cliquez sur votre fournisseur Gemini API pour afficher le contenu et le code spécifiques au fournisseur sur cette page.

Swift


// ...

let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
  modelName: "GEMINI_LIVE_API_MODEL_NAME",
  generationConfig: LiveGenerationConfig(
    responseModalities: [.audio],
    // Disable automatic voice activity detection (VAD).
    realtimeInputConfig: RealtimeInputConfig(
      automaticActivityDetection: .disabled()
    )
  )
)

Kotlin


// ...

val liveModel = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
    modelName = "GEMINI_LIVE_API_MODEL_NAME",
    generationConfig = liveGenerationConfig {
        responseModality = ResponseModality.AUDIO
        // Disable automatic voice activity detection (VAD).
        realtimeInputConfig = realtimeInputConfig {
            automaticActivityDetection = ActivityDetectionConfig.disabled()
        }
    }
)

Java


// ...

LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
        "GEMINI_LIVE_API_MODEL_NAME",
        new LiveGenerationConfig.Builder()
                .setResponseModality(ResponseModality.AUDIO)
                // Disable automatic voice activity detection (VAD).
                .setRealtimeInputConfig(RealtimeInputConfig.builder()
                        .setAutomaticActivityDetection(ActivityDetectionConfig.disabled())
                        .build())
                .build()
);

Web

Not yet supported for Web apps - check back soon!

Dart


// ...

final _liveModel = FirebaseAI.googleAI().liveGenerativeModel(
  model: 'GEMINI_LIVE_API_MODEL_NAME',
  liveGenerationConfig: LiveGenerationConfig(
    responseModalities: [ResponseModalities.audio],
    // Disable automatic voice activity detection (VAD).
    realtimeInputConfig: RealtimeInputConfig(
      automaticActivityDetection: ActivityDetectionConfig.disabled(),
    ),
  ),
);

Unity


// ...

var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
    modelName: "GEMINI_LIVE_API_MODEL_NAME",
    liveGenerationConfig: new LiveGenerationConfig(
        responseModalities: new[] { ResponseModality.Audio },
        // Disable automatic voice activity detection (VAD).
        realtimeInputConfig: new RealtimeInputConfig(
            automaticActivityDetection: ActivityDetectionConfig.Disabled()
        )
    )
);

2. Signaler manuellement les limites de l'activité de l'utilisateur

Si vous désactivez la détection de l'activité vocale, votre application doit délimiter manuellement les limites de chaque tour d'activité de l'utilisateur :

  1. Signaler le début de l'activité : appelez sendStartActivityRealtime avant d'envoyer des données audio (par exemple, lorsqu'un utilisateur appuie sur un bouton de communication vocale).

  2. Entrée utilisateur en streaming : diffusez en continu des données audio (ou vidéo) à l'aide de sendAudioRealtime.

  3. Signaler la fin de l'activité : appelez sendStopActivityRealtime lorsque l'utilisateur a fini de parler (par exemple, lorsqu'il relâche le bouton "Appuyer pour parler"). Cela signale la fin du tour de l'utilisateur et déclenche la réponse du modèle.

Swift

// If you disable automatic voice activity detection (VAD), you need to manually demarcate user activity.

// Signal the start of user activity (for example, on push-to-talk button press).
await session.sendStartActivityRealtime()

// Stream user audio data while the user speaks.
await session.sendAudioRealtime(audioData)

// Signal the end of user activity (for example, on button release) to trigger model response.
await session.sendStopActivityRealtime()

Kotlin

// If you disable automatic voice activity detection (VAD), you need to manually demarcate user activity.

// Signal the start of user activity (for example, on push-to-talk button press).
session.sendStartActivityRealtime()

// Stream user audio data while the user speaks.
session.sendAudioRealtime(audioData)

// Signal the end of user activity (for example, on button release) to trigger model response.
session.sendStopActivityRealtime()

Java

// If you disable automatic voice activity detection (VAD), you need to manually demarcate user activity.

// Signal the start of user activity (for example, on push-to-talk button press).
session.sendStartActivityRealtime();

// Stream user audio data while the user speaks.
session.sendAudioRealtime(audioData);

// Signal the end of user activity (for example, on button release) to trigger model response.
session.sendStopActivityRealtime();

Web

Not yet supported for Web apps - check back soon!

Dart

// If you disable automatic voice activity detection (VAD), you need to manually demarcate user activity.

// Signal the start of user activity (for example, on push-to-talk button press).
await session.sendStartActivityRealtime();

// Stream user audio data while the user speaks.
await session.sendAudioRealtime(audioData);

// Signal the end of user activity (for example, on button release) to trigger model response.
await session.sendStopActivityRealtime();

Unity

// If you disable automatic voice activity detection (VAD), you need to manually demarcate user activity.

// Signal the start of user activity (for example, on push-to-talk button press).
await session.SendStartActivityRealtimeAsync();

// Stream user audio data while the user speaks.
await session.SendAudioRealtimeAsync(audio: audioData);

// Signal the end of user activity (for example, on button release) to trigger model response.
await session.SendStopActivityRealtimeAsync();



Gestion de la session

Découvrez les sujets suivants liés aux sessions :