Docs: clarify which languages `multi` mode supports for Deepgram models

Summary

The STT model tables on livekit docs list all monolingual language codes and multi in one flat list for deepgram/nova-3.

This reads as multi mode supports every listed language, but Deepgram’s multi mode actually supports only a 10-language subset. Any language outside that subset — Chinese, Korean, Arabic, Thai, etc. - silently degrades.

How I hit this

I built a Chinese/English support agent and, following the Multilingual transcription section, configured:

stt = inference.STT(model="deepgram/nova-3", language="multi")

English transcribed fine; Chinese was consistently garbled — the model forces Mandarin audio into one of the supported languages.

Root cause

Per Deepgram’s Models & Languages Overview, multi is its own entry with an explicit language set:

Multilingual (English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch): multi

Chinese is supported by Nova-3 in monolingual mode only. So “languages the model supports” and “languages multi supports” are two different sets — the LiveKit Deepgram page merges them into one list,

| Nova-3 | deepgram/nova-3 | ar, ar-AE, ar-SA, ar-QA, ar-KW, ar-SY, ar-LB, ar-PS, ar-JO, ar-EG, ar-SD, ar-TD, ar-MA, ar-DZ, ar-TN, ar-IQ, ar-IR, be, bn, bs, bg, ca, hr, cs, da, da-DK, nl, nl-BE, en, en-US, en-AU, en-GB, en-IN, en-NZ, et, fi, fr, fr-CA, de, de-CH, el, hi, hu, id, it, ja, kn, ko, ko-KR, lv, lt, mk, ms, mr, no, pl, pt, pt-BR, pt-PT, ro, ru, sr, sk, sl, es, es-419, sv, sv-SE, tl, ta, te, tr, uk, vi, zh, zh-CN, zh-Hans, zh-TW, zh-Hant, zh-HK, multi |

and the Multilingual transcription section recommends multi without mentioning the limitation:

To enable multilingual transcription on supported models, set the language to multi.

Suggestions

  1. In the Nova-3/Nova-2 rows, adopt Deepgram’s phrasing and list multi with its explicit language subset.
  2. Add one sentence to the Multilingual transcription section:
    multi supports a limited language set; for other languages, use monolingual mode.”

@Kai_Wang, Your report is correct. The Deepgram STT page contradicts itself, so the fix is simple.

The Nova-3 and Nova-2 rows merge multi into the full monolingual list, and that list includes zh (Deepgram STT). A reader then assumes multi covers every code in the row, so the table misleads. The Flux (Multilingual) row on the same page is different. It lists multi with only its real subset: en, es, fr, de, hi, ru, pt, ja, it, nl. The correct format already exists in the doc. So the fix is to copy the Flux row format onto the Nova-3 and Nova-2 rows.

Your garbled Chinese is the expected result. multi is Deepgram code-switching over that fixed subset (Deepgram code-switching). Chinese is not in the subset, so the model maps Mandarin onto one of the ten languages. This is why the audio degrades and returns no error.

For the agent, nova-3 multi cannot give Chinese plus English, because multi excludes zh. Use monolingual Chinese instead:

stt = inference.STT(model="deepgram/nova-3", language="zh")

This returns correct Chinese, but it weakens English in the same audio, because a monolingual model expects one language. For true Chinese plus English in one stream, use an STT whose code-switching set includes Chinese. Your suggested edit is correct, and the Flux row is the template.

Thanks @Muhammad_Usman_Bashir and thanks @Kai_Wang for raising this. I’ll get the docs updated.