Skip to content

gemini-3.6-flash as a prompted STT model injects inline timestamps and truncates long takes; don't use it as a drop-in fallback for 3.8-flash

TL;DR.

Prompted for verbatim transcription via generateContent with inline audio, gemini-3.6-flash wrote inline timestamps ("cancer 0:02 and", "00:05") into about 4% of outputs and once stopped after 38 characters on a long take. gemini-3.8-flash did neither under the same prompt. Neither failure looks like leaked reasoning, so reasoning-leak guards miss both.

Context: verbatim STT via litellm.completion(gemini/...) with a system prompt asking for an exact transcript (fillers kept, no commentary) and ogg/opus audio inline. After Google aliased gemini-3.7-flash to gemini-3.8-flash (see the deprecations page), gemini-3.6-flash was the only other GA Flash left to try as a same-vendor fallback.

Measured on a 78-clip set (AMI meetings, Earnings-21 calls, TTS fixtures, real phone recordings), two runs of 3.6 plus a same-day 3.8 control:

  • Inline timestamps: 3 of 78 outputs per run (6 different clips across the two runs), e.g. "As I mentioned, this is a wide variety 0:02 of potential tumors" or "Let 0:01 me tell you". 3.8: 0 of 78 in every run.
  • Truncation: one ~60 s fixture came back as "Here is my take on versioning. I moved" (38 chars, finish reported as normal); the other run transcribed it in full.
  • Filler recall 62-72% vs 3.8's 82-87%; vWER 6.9-7.7% vs 5.5-5.8%; term recall 88.5% vs 93.6%.
  • Invented speech on silence probes: about the same as 3.8 (4-5 of 11).

Why it matters: a guard that only catches the model's own reasoning ("The user wants the audio transcribed...", "Audio:" headers) lets both failures through, so timestamps end up downstream as the speaker's words.

What we did: dropped the same-vendor middle fallback and went straight from 3.8-flash to Deepgram nova-2 (filler_words=true). If you must use 3.6, add a post-check that rejects /\b\d{1,2}:\d{2}\b/ tokens that aren't in the audio's likely content, and compare output length against audio duration to catch early stops.

No signals yet