Opciones de configuración de la API de Live


Incluso con la implementación básica de Live API, puedes crear interacciones atractivas y potentes para tus usuarios. De manera opcional, puedes personalizar aún más la experiencia con las siguientes opciones de configuración:



Voz y lenguaje de las respuestas

Puedes hacer que el modelo responda con una voz específica y influir en el modelo para que responda en diferentes idiomas.

Especifica una voz de respuesta

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Live API admite 30 voces en HD sintetizadas diferentes, cada una con características distintas. Puedes ver una lista de opciones de voces de respuesta y escuchar demostraciones de cada una expandiendo la sección que aparece a continuación.

Si no especificas una voz de respuesta, el valor predeterminado es Puck.

Para especificar una voz de respuesta, establece el nombre de la voz dentro del objeto speechConfig como parte de la configuración del modelo.

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")
    )
);

// ...

Influye en el idioma de la respuesta

Los modelos de Live API eligen automáticamente el idioma adecuado para sus respuestas.

Si quieres que el modelo responda en un idioma que no sea inglés o siempre en un idioma específico, puedes influir en las respuestas del modelo con instrucciones del sistema como estos ejemplos:

  • Refuerza al modelo que un idioma que no sea el inglés puede ser apropiado.

    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.
    
  • Indicarle al modelo que siempre responda en un idioma específico

    RESPOND IN LANGUAGE. YOU MUST RESPOND UNMISTAKABLY IN LANGUAGE.
    



Transcripciones de la entrada y salida de audio

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

Como parte de la respuesta del modelo, puedes recibir transcripciones de la entrada de audio y la respuesta de audio del modelo. Estableces este parámetro como parte de la configuración del modelo.

  • Para la transcripción de la entrada de audio, agrega inputAudioTranscription.

  • Para la transcripción de la respuesta de audio del modelo, agrega outputAudioTranscription.

Ten en cuenta lo siguiente:

  • Puedes configurar el modelo para que devuelva transcripciones de la entrada y la salida (como se muestra en el siguiente ejemplo) o para que devuelva solo una o la otra.

  • Las transcripciones se transmiten junto con el audio, por lo que es mejor recopilarlas como lo haces con las partes de texto en cada turno.

  • El idioma de la transcripción se infiere de la entrada de audio y de la respuesta de audio del modelo.

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
}

// ...



Detección de actividad de voz (VAD)

La detección de actividad de voz (VAD) permite que el modelo reconozca cuando una persona está hablando. Esto es esencial para crear conversaciones naturales, ya que te permite interrumpir el modelo en cualquier momento. La VAD está habilitada de forma predeterminada.

Puedes personalizar el comportamiento de la VAD, lo que incluye controlar las interrupciones. Como alternativa, puedes inhabilitar la VAD automática para tomar el control manual completo de los turnos de conversación (como en una interfaz de pulsar para hablar).

Configura la detección de actividad de voz (VAD)

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

En el siguiente ejemplo, se muestra cómo puedes personalizar el comportamiento de la VAD configurando realtimeInputConfig como parte de la configuración del modelo. Obtén más información sobre la configuración disponible para esta configuración en la tabla que se encuentra más adelante en esta sección.

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
        )
    )
);

Parámetros de configuración de VAD disponibles

Configuración Valores admitidos Descripción
Detección automática de actividad (automaticActivityDetection)
startSensitivity
  • LOW (predeterminada)
  • HIGH

Determina con qué facilidad el servidor detecta cuando un usuario comienza a hablar:

  • LOW: Menos sensible a los sonidos débiles. Esto ayuda a evitar que el ruido ambiental inicie un turno de voz de forma involuntaria.
  • HIGH: Más sensible. Esto ayuda a detectar rápidamente el habla más silenciosa o las palabras pronunciadas en voz baja.
endSensitivity
  • LOW (predeterminada)
  • HIGH

Determina con qué facilidad el servidor detecta cuando un usuario deja de hablar:

  • LOW: Menos sensible a las pausas finales. El servidor admite vacilaciones naturales o palabras más silenciosas al final de una oración.
  • HIGH: Más sensible. El servidor concluye el turno de voz con rapidez una vez que bajan los niveles de voz.
prefixPadding Duración en milisegundos
(predeterminada: ninguna [0 ms])

Define la cantidad de audio que se incluirá antes de que se detecte el discurso.

Este búfer de "búsqueda hacia atrás" garantiza que el modelo capture el inicio completo de la voz, incluida la primera sílaba, que suele comenzar antes de que se active el detector.

  • El valor predeterminado de 0 puede hacer que se recorte el principio de las palabras.
  • Recomendado: Entre 20 y 50 milisegundos
silenceDuration Duración en milisegundos
(predeterminada: ~800 ms)

Define cuánto tiempo espera el servidor en silencio antes de finalizar un turno de voz. Esto determina qué tan tolerante es el sistema con las pausas naturales a mitad de la oración (como pensar, respirar o los límites de las cláusulas).

  • Recomendado (de 500 a 800 ms): Proporciona un buen equilibrio: el modelo recibe audio completo y rico en contexto, mientras que la latencia de respuesta se mantiene razonable.
  • Demasiado bajo (menos de 200 ms): Finaliza los turnos de habla durante las pausas naturales, lo que divide las expresiones en fragmentos pequeños que pueden degradar la calidad de la transcripción y la respuesta.
  • Demasiado alto (más de 2,000 ms): Agrega un retraso notable antes de que el modelo comience a responder.
Comportamiento de interrupción (activityHandling)
activityHandling
  • INTERRUPT (predeterminada)
  • NO_INTERRUPT

Define cómo el servidor controla la actividad entrante del usuario mientras genera una respuesta:

  • INTERRUPT: Cancela de inmediato la respuesta actual del modelo cuando se detecta actividad del usuario.
  • NO_INTERRUPT: Continúa generando la respuesta sin interrupciones.
Cobertura de contexto de giro (turnCoverage)
turnCoverage
  • ONLY_ACTIVITY (predeterminada)
  • ALL_INPUT
  • AUDIO_ACTIVITY_AND_ALL_VIDEO

Define qué entrada transmitida se incluye en el contexto del turno de conversación:

  • ONLY_ACTIVITY: Excluye el silencio y conserva solo los segmentos en los que se detectó actividad del usuario.
  • ALL_INPUT: Conserva toda la entrada transmitida, incluido el silencio del audio.
  • AUDIO_ACTIVITY_AND_ALL_VIDEO: Conserva todos los fotogramas de video transmitidos, pero solo los segmentos de audio en los que se detectó actividad.

Cómo controlar las interrupciones

Si el servidor detecta voz del usuario entrante mientras el modelo genera una respuesta y activityHandling se establece en INTERRUPT (el valor predeterminado), ten en cuenta los siguientes comportamientos:

  • Se cancela la generación: El modelo detiene de inmediato su respuesta y descarta las llamadas a funciones pendientes.

  • El historial de la sesión se trunca: Solo el contenido que ya se transmitió a tu app antes de la interrupción se conserva en la ventana de contexto de la sesión.

  • Se emite una señal de interrupción: El servidor envía un mensaje de respuesta que indica que se interrumpió la generación (como wasInterrupted en Swift o interrupted en Kotlin, Java, Web, Flutter y Unity).

Inhabilitar la detección automática de actividad de voz (VAD)

Para tomar el control manual completo de los turnos de conversación (como en una interfaz de pulsar para hablar), puedes inhabilitar la detección automática de actividad de voz (VAD) en lugar de configurar los parámetros de sensibilidad.

Cuando se inhabilita la detección automática, el servidor no detectará automáticamente el habla ni activará respuestas basadas en el silencio del audio. En su lugar, tu app debe indicar manualmente los límites de la actividad del usuario durante la sesión activa.

1. Inhabilitar la VAD automática en la configuración del modelo

Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página.

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. Indica manualmente los límites de la actividad del usuario

Si inhabilitas la VAD, tu app debe delimitar de forma manual los límites de cada turno de actividad del usuario:

  1. Inicio de la actividad de señal: Llama a sendStartActivityRealtime antes de enviar datos de audio (por ejemplo, cuando un usuario presiona un botón de pulsar para hablar).

  2. Transmite la entrada del usuario: Transmite datos de audio (o video) de forma continua con sendAudioRealtime.

  3. Indica el final de la actividad: Llama a sendStopActivityRealtime cuando el usuario termine de hablar (por ejemplo, cuando suelte el botón de pulsar para hablar). Esto indica el final del turno del usuario y activa la respuesta del modelo.

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();



Administración de las sesiones

Obtén más información sobre los siguientes temas relacionados con las sesiones: