Gemini-3.5-transcribe: custom_vocabulary appears to have no effect

Supplying custom_vocabulary to gemini-3.5-transcribe does not seem to change the transcript in any way. The output for audio with unusual names is byte-identical to the same request made without the field.

Environment: gemini-3.5-transcribe (public preview) · google-genai 2.20.0 · Python 3.13.15 · POST /v1beta/interactions · smart mode, language_codes: [“en-GB”]

What I expected: “You can steer the speech model toward uncommon words, technical jargon, brand names, or proper nouns. Supply up to 1,000 terms in the custom_vocabulary array.” Supplied words (spellings) should appear in output.

What happens: With test audio containing 12 invented names, the output misidentifies all of them and is the same whether the custom_vocabulary is provided or not. E.g. “Nykvist” transcribed as “Knighthood”.

Example: 'Ilsenmoor" transcribed to “Illulisat”, “Wrenholt” to “Reinholt”.

Supplied: 'custom_vocabulary': ['Ilsenmoor', 'Ophrendel', 'Nykvist Roan', 'Nykvist', 'Palimyr', 'Sedrilax', 'Wrenholt', 'Ghastrey Vole', 'Ghastrey']}

Reproduce: GitHub - coljac/gemini-transcribe-vocab-bug: Minimal A/B-controlled reproduction: custom_vocabulary appears to have no effect on gemini-3.5-transcribe · GitHub

Hello @coljac ,

We were able to reproduce this issue. Could you please confirm if you are still getting the same issue when you omit the mode parameter in your request?

OK, I can confirm custom_vocabulary works, as you hinted, at least to some degree, in verbatim mode. smart mode is incompatible with custom_vocabulary and seems to fail silently.

Is this a fundamental limitation or a bug? Ideally both could be used together.

I also note that custom_vocabulary + timestamps returns 400 incompatible, and smart mode is documented as incompatible with timestamps, so vocabulary appears to be applied at the ASR stage?