From b18fd3cbe8696588ba8c78c79802707c09708fd6 Mon Sep 17 00:00:00 2001 From: Google Team Member Date: Thu, 29 Oct 2026 14:31:35 -0700 Subject: [PATCH] feat(cli): use gemini-3.5-transcribe as default model for transcribe command - Switch the `transcribe` default model to `gemini-3.5-transcribe` and add `gemini-3.5-transcribe` to the `Model` enum (catalog group `Speech`). - For dedicated `*-transcribe` models, send only the audio block with `generation_config.transcription_config` (verbatim mode with `diarization_mode: "speaker"` and `timestamp_granularities: ["word"]` per `--no-speakers`/`--no-timestamps`), and render `md`, `text`, `json`, and `srt` from the returned `word_info` annotations. Segment text is cut from the response text by the annotations' byte indices, so the model's punctuation and spacing are kept (including languages written without spaces); speakers are numbered `Speaker 1`, `Speaker 2`, ... by first appearance (the API's raw labels, e.g. `spk:0`, are opaque); SRT cues split at sentence ends and are capped at 7 s / 84 bytes including the speaker prefix; a sentence's last word may overrun by a bounded amount rather than be stranded alone. md/text warn when the response has no word-level annotations. - `gemini-3.5-transcribe` accepts audio only: video inputs fall back to `gemini-3.8-flash` when `--model` is not set, and an explicit `--model gemini-3.5-transcribe` with a video input is a usage error; for audio-only WebM (`.webm` maps to `video/webm`), both point at `--mime-type audio/webm`. A request rejected (HTTP 400) while speaker labels or timestamps are on points at the documented 30-minute limit for those features and suggests splitting the recording, `--no-speakers --no-timestamps`, or `--model gemini-3.8-flash`. Under `--dry-run`, a `files/` input (whose type is only known after `files.get`) notes that a video would use `gemini-3.8-flash`. Each JSON result now reports the model that served it. - General multimodal models (for example `-m gemini-3.8-flash`) keep the prompt plus `response_format` JSON schema path. - `transcribe --help` shows the video fallback model and links to https://ai.google.dev/gemini-api/docs/transcribe. Fixes https://github.com/google-gemini/gemini-api-cli/issues/144 PiperOrigin-RevId: 1009969008 --- google/genai/_gaos/types/interactions/model.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/google/genai/_gaos/types/interactions/model.py b/google/genai/_gaos/types/interactions/model.py index 9f7a8a52ce..a22fce106f 100644 --- a/google/genai/_gaos/types/interactions/model.py +++ b/google/genai/_gaos/types/interactions/model.py @@ -78,6 +78,8 @@ "gemini-3.8-flash-tts", # Gemini 3.8 Flash Lite TTS - High-speed and cost-efficient, ideal for rapid dubbing, media localization, and high-throughput voice agents. Direct replacement for gemini-3.1-flash-tts-preview. "gemini-3.8-flash-lite-tts", + # Gemini 3.5 Transcribe - Low-latency speech-to-text model with utterance-based language detection, speaker diarization, word-level timestamps, and custom vocabulary biasing. + "gemini-3.5-transcribe", # Our low-latency, music generation model optimized for high-fidelity audio clips and precise rhythmic control. "lyria-3-clip-preview", # Our advanced, full-song generative model with deep compositional understanding, optimized for precise structural control and complex transitions across diverse musical styles.