Konfigurationsoptionen für die Live API


Selbst mit der einfachen Implementierung für die Live API können Sie ansprechende und leistungsstarke Interaktionen für Ihre Nutzer erstellen. Sie können die Umgebung optional mit den folgenden Konfigurationsoptionen noch weiter anpassen:



Stimme und Sprache für Antworten

Sie können das Modell mit einer bestimmten Stimme antworten lassen und es dazu bringen, in verschiedenen Sprachen zu antworten.

Stimme für die Antwort angeben

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

Live API unterstützt 30 verschiedene synthetisierte HD-Stimmen mit jeweils unterschiedlichen Merkmalen. Wenn Sie den Abschnitt unten maximieren, können Sie sich eine Liste der Sprachoptionen für Antworten ansehen und Demos der einzelnen Stimmen anhören.

Wenn Sie keine Antwortstimme angeben, wird standardmäßig Puck verwendet.

Wenn Sie eine Antwortstimme angeben möchten, legen Sie den Namen der Stimme im Objekt speechConfig als Teil der Modellkonfiguration fest.

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

// ...

Einheit


// ...

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

// ...

Sprache für Antworten beeinflussen

Die Live API-Modelle wählen automatisch die passende Sprache für ihre Antworten aus.

Wenn Sie möchten, dass das Modell in einer anderen Sprache als Englisch oder immer in einer bestimmten Sprache antwortet, können Sie die Antworten des Modells mit Systemanweisungen wie den folgenden Beispielen beeinflussen:

  • Dem Modell verdeutlichen, dass eine andere Sprache als Englisch angemessen sein kann

    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.
    
  • Das Modell anweisen, immer in einer bestimmten Sprache zu antworten

    RESPOND IN LANGUAGE. YOU MUST RESPOND UNMISTAKABLY IN LANGUAGE.
    



Transkriptionen für Audioeingabe und -ausgabe

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

Als Teil der Antwort des Modells können Sie Transkriptionen der Audioeingabe und der Audioantwort des Modells erhalten. Sie legen diese Konfiguration als Teil der Modellkonfiguration fest.

  • Fügen Sie für die Transkription der Audioeingabe inputAudioTranscription hinzu.

  • Fügen Sie für die Transkription der Audioantwort des Modells outputAudioTranscription hinzu.

Wichtige Hinweise:

  • Sie können das Modell so konfigurieren, dass Transkriptionen sowohl der Eingabe als auch der Ausgabe zurückgegeben werden (wie im folgenden Beispiel gezeigt), oder so, dass nur eine der beiden zurückgegeben wird.

  • Die Transkripte werden zusammen mit den Audioinhalten gestreamt. Es empfiehlt sich daher, sie wie Textteile bei jeder Runde zu erfassen.

  • Die Transkriptionssprache wird aus der Audioeingabe und der Audioantwort des Modells abgeleitet.

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

// ...

Einheit


// ...

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
}

// ...



Erkennung von Sprachaktivität (Voice Activity Detection, VAD)

Mit der Spracherkennung (Voice Activity Detection, VAD) kann das Modell erkennen, wenn eine Person spricht. Das ist wichtig, um natürliche Unterhaltungen zu ermöglichen, da Sie das Modell jederzeit unterbrechen können. VAD ist standardmäßig aktiviert.

Sie können das Verhalten der VAD anpassen, einschließlich der Verarbeitung von Unterbrechungen. Alternativ können Sie die automatische VAD deaktivieren, um die vollständige manuelle Kontrolle über die Gesprächsbeiträge zu übernehmen (z. B. für eine Push-to-Talk-Oberfläche).

Spracherkennung (VAD) konfigurieren

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

Im folgenden Beispiel wird gezeigt, wie Sie das Verhalten der VAD anpassen können, indem Sie realtimeInputConfig als Teil der Modellkonfiguration festlegen. Informationen zu den verfügbaren Einstellungen für diese Konfiguration finden Sie in der Tabelle weiter unten in diesem Abschnitt.

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

Einheit


// ...

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

Verfügbare VAD-Konfigurationseinstellungen

Einstellung Unterstützte Werte Beschreibung
Automatische Aktivitätserkennung (automaticActivityDetection)
startSensitivity
  • LOW (Standard)
  • HIGH

Bestimmt, wie schnell der Server erkennt, wenn ein Nutzer beginnt zu sprechen:

  • LOW: Weniger empfindlich gegenüber leisen Geräuschen. So wird verhindert, dass Umgebungsgeräusche versehentlich einen Sprachbeitrag starten.
  • HIGH: Empfindlicher. So können leisere Sprache oder leise gesprochene Wörter schnell erkannt werden.
endSensitivity
  • LOW (Standard)
  • HIGH

Bestimmt, wie schnell der Server erkennt, wenn ein Nutzer aufhört zu sprechen:

  • LOW: Weniger empfindlich gegenüber Pausen am Ende. Der Server berücksichtigt natürliche Pausen oder leisere Wörter am Ende eines Satzes.
  • HIGH: Empfindlicher. Der Server beendet den Sprachbeitrag sofort, wenn die Lautstärke sinkt.
prefixPadding Dauer in Millisekunden
(Standard: Keine (0 ms))

Definiert die Menge an Audiodaten, die vor der Spracherkennung einbezogen werden soll.

Dieser „Look-back“-Puffer sorgt dafür, dass das Modell den gesamten Beginn der Sprache erfasst, einschließlich der ersten Silbe, die oft vor dem Auslösen des Detektors beginnt.

  • Der Standardwert von 0 kann dazu führen, dass der Anfang von Wörtern abgeschnitten wird.
  • Empfohlen: 20–50 Millisekunden
silenceDuration Dauer in Millisekunden
(Standard: ~800 ms)

Definiert, wie lange der Server bei Stille wartet, bevor er einen Sprachbeitrag beendet. Damit wird festgelegt, wie tolerant das System gegenüber natürlichen Pausen mitten im Satz ist (z. B. Nachdenken, Atmen oder Satzgrenzen).

  • Empfohlen (500–800 ms): Bietet eine gute Balance. Das Modell erhält vollständige, kontextreiche Audiodaten, während die Antwortlatenz angemessen bleibt.
  • Zu niedrig (unter 200 ms): Beendet Redebeiträge während natürlicher Pausen und teilt Äußerungen in kleine Fragmente auf, was die Qualität der Transkription und der Antwort beeinträchtigen kann.
  • Zu hoch (über 2.000 ms): Es kommt zu einer spürbaren Verzögerung, bevor das Modell mit der Antwort beginnt.
Unterbrechungsverhalten (activityHandling)
activityHandling
  • INTERRUPT (Standard)
  • NO_INTERRUPT

Definiert, wie der Server eingehende Nutzeraktivitäten verarbeitet, während er eine Antwort generiert:

  • INTERRUPT: Bricht die aktuelle Antwort des Modells sofort ab, wenn Nutzeraktivität erkannt wird.
  • NO_INTERRUPT: Die Antwort wird ohne Unterbrechung weiter generiert.
Abdeckung von Abbiegekontexten (turnCoverage)
turnCoverage
  • ONLY_ACTIVITY (Standard)
  • ALL_INPUT
  • AUDIO_ACTIVITY_AND_ALL_VIDEO

Definiert, welche gestreamten Eingaben im Kontext des Gesprächs enthalten sind:

  • ONLY_ACTIVITY: Schließt Stille aus und behält nur Segmente bei, in denen Nutzeraktivität erkannt wurde.
  • ALL_INPUT: Behält alle gestreamten Eingaben bei, einschließlich Audiopausen.
  • AUDIO_ACTIVITY_AND_ALL_VIDEO: Alle gestreamten Videoframes werden beibehalten, aber nur Audiosegmente, in denen Aktivitäten erkannt wurden.

Unterbrechungen verarbeiten

Wenn der Server eingehende Nutzersprache erkennt, während das Modell eine Antwort generiert, und activityHandling auf INTERRUPT (Standard) festgelegt ist, beachten Sie Folgendes:

  • Die Generierung wird abgebrochen: Das Modell bricht die Antwort sofort ab und verwirft alle ausstehenden Toolaufrufe.

  • Sitzungsverlauf wird gekürzt: Nur die Inhalte, die vor der Unterbrechung bereits an Ihre Anwendung übertragen wurden, bleiben im Kontextfenster der Sitzung erhalten.

  • Ein Unterbrechungssignal wird ausgegeben: Der Server sendet eine Antwortnachricht, die angibt, dass die Generierung unterbrochen wurde (z. B. wasInterrupted in Swift oder interrupted in Kotlin, Java, Web, Flutter und Unity).

Automatische Erkennung von Sprachaktivität (VAD) deaktivieren

Wenn Sie die vollständige manuelle Kontrolle über die Gesprächsrunden übernehmen möchten (z. B. für eine Push-to-Talk-Oberfläche), können Sie die automatische Spracherkennung (Voice Activity Detection, VAD) deaktivieren, anstatt Empfindlichkeitsparameter zu konfigurieren.

Wenn die automatische Erkennung deaktiviert ist, erkennt der Server Sprache nicht automatisch und löst keine Antworten basierend auf Audiostille aus. Stattdessen muss Ihre App während der aktiven Sitzung die Grenzen der Nutzeraktivität manuell signalisieren.

1. Automatische VAD in der Modellkonfiguration deaktivieren

Klicken Sie auf Ihren Gemini API-Anbieter, um anbieterspezifische Inhalte und Code auf dieser Seite aufzurufen.

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

Einheit


// ...

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. Grenzen der Nutzeraktivität manuell signalisieren

Wenn Sie die VAD deaktivieren, muss Ihre Anwendung die Grenzen der einzelnen Nutzeraktivitäten manuell festlegen:

  1. Aktivitätsstart signalisieren: Rufen Sie sendStartActivityRealtime auf, bevor Sie Audiodaten senden (z. B. wenn ein Nutzer eine Push-to-Talk-Taste drückt).

  2. Nutzereingabe streamen: Audio- oder Videodaten kontinuierlich mit sendAudioRealtime streamen.

  3. Ende der Aktivität signalisieren: Rufen Sie sendStopActivityRealtime auf, wenn der Nutzer aufhört zu sprechen (z. B. wenn er die Push-to-Talk-Taste loslässt). Dies signalisiert das Ende des Nutzerbeitrags und löst die Antwort des Modells aus.

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

Einheit

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



Sitzungsverwaltung

Hier finden Sie Informationen zu den folgenden Themen im Zusammenhang mit Sitzungen: