Skip to content

feat(cli): use gemini-3.5-transcribe as default model for transcribe command - #3248

Merged
copybara-service[bot] merged 1 commit into
mainfrom
copybara/1009314715
Oct 29, 2026
Merged

copybara-service[bot] merged 1 commit into
mainfrom
copybara/1009314715

Conversation

@copybara-service

@copybara-service copybara-service Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

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/<id> 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 google-gemini/gemini-api-cli#144

FUTURE_COPYBARA_INTEGRATE_REVIEW=#3209 from googleapis:release-please--branches--main 39c95f2

@copybara-service
copybara-service Bot force-pushed the copybara/1009314715 branch 7 times, most recently from 1af8be5 to 8d0b018 Compare October 29, 2026 21:25
…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/<id>` 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 google-gemini/gemini-api-cli#144

PiperOrigin-RevId: 1009969008
@copybara-service
copybara-service Bot merged commit b18fd3c into main Oct 29, 2026
13 checks passed
@copybara-service
copybara-service Bot deleted the copybara/1009314715 branch October 29, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Transcribe command should use gemini-3.5-transcribe as default model.

1 participant