Skip to content

Add Gemini 3.5 Transcribe as a BYOK speech-to-text provider - #7138

Merged
ComputelessComputer merged 4 commits into
mainfrom
cursor/gemini-3-5-transcribe
Aug 28, 2026
Merged

Add Gemini 3.5 Transcribe as a BYOK speech-to-text provider#7138
ComputelessComputer merged 4 commits into
mainfrom
cursor/gemini-3-5-transcribe

Conversation

@ComputelessComputer

Copy link
Copy Markdown
Collaborator

Summary

Problem: Gemini 3.5 Transcribe launched with a live streaming model and a batch model for pre-recorded audio, but Anarlog had no way to use either. Google Cloud Speech-to-Text is a different API, and host matching on googleapis.com would have treated Gemini's endpoint as Cloud Speech.

Fix: Add Google Gemini as a bring-your-own-key STT provider. Live captions use gemini-3.5-transcribe-live over the Live API. After recording, the same API key maps that live model onto gemini-3.5-transcribe for speaker labels and word timestamps. Desktop talks to Google directly; this is not routed through the Anarlog STT proxy.

Verification

  • cargo test -p owhisper-client --lib -- google_generative
  • cargo test -p owhisper-client --lib -- adapter::tests
  • cargo test -p listener-core --lib
  • cargo test -p listener2-core --lib
  • cargo test -p transcribe-proxy --lib
  • pnpm -F desktop exec vitest run src/settings/ai/stt/shared.test.ts src/settings/ai/stt/selection.test.ts src/stt/capabilities.test.ts src/stt/useRunBatch.test.ts

Not run against a real Gemini API key. Live sessions do not resume after the ~10-minute Live API cap, and batch uses inline generateContent (about 20 MB / 15 min) rather than the Files API.

Open in Web Open in Cursor 

Live captions use gemini-3.5-transcribe-live over the Live API, and
post-recording refine maps that same key and live model id onto
gemini-3.5-transcribe generateContent for speaker labels and word
timestamps. Cloud Speech host matching is narrowed so Gemini's
generativelanguage endpoint is not treated as google_cloud.

Co-authored-by: John Jeong <ComputelessComputer@users.noreply.github.com>
@netlify

netlify Bot commented Aug 28, 2026

Copy link
Copy Markdown

Deploy Preview for anarlog canceled.

Name Link
🔨 Latest commit 798b2f4
🔍 Latest deploy log https://app.netlify.com/projects/anarlog/deploys/6a913ab80c84b900081f4b13

@cla-assistant

cla-assistant Bot commented Aug 28, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@ComputelessComputer
ComputelessComputer marked this pull request as ready for review August 28, 2026 07:17

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9fcdd6d. Configure here.

Comment thread crates/owhisper-client/src/adapter/google_generative_ai/live.rs Outdated
cursoragent and others added 3 commits August 28, 2026 07:29
Nested ternaries after the new google_generative_ai branch were two spaces short, which failed fmt / fmt.

Co-authored-by: John Jeong <ComputelessComputer@users.noreply.github.com>
Ordinary inputTranscription events are committed captions, not an explicit finalize. Only set from_finalize when Gemini marks the transcript finished after audioStreamEnd.

Co-authored-by: John Jeong <ComputelessComputer@users.noreply.github.com>
Keep the Gemini adapter landed in #7137 and reapply this branch's live from_finalize mapping so only the audioStreamEnd flush is marked as a finalize.

Co-authored-by: John Jeong <ComputelessComputer@users.noreply.github.com>
@ComputelessComputer
ComputelessComputer merged commit cc28611 into main Aug 28, 2026
21 checks passed
@ComputelessComputer
ComputelessComputer deleted the cursor/gemini-3-5-transcribe branch August 28, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants