RVC-Boss/GPT-SoVITS · error · ValueError

{language} is not supported. Supported: zh, yue, ja, en, ko,

Error message

{language} is not supported. Supported: zh, yue, ja, en, ko, auto

What it means

ValueError at the bottom of the language-dispatch chain in FunASR-based transcription: funasr_asr.py hard-codes model configs for zh, ja, en, ko, yue and auto; any other language string falls through to the else and is rejected. It is a whitelist guard so callers get an explicit message instead of an obscure model-download failure.

Source

Thrown at tools/asr/funasr_asr.py:106

            local_dir="tools/asr/models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch",
        )
        snapshot_download(
            "iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
            local_dir="tools/asr/models/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
        )
        model_revision = "v2.0.4"
        vad_model_revision = punc_model_revision = "v2.0.4"
    elif language == "yue":
        path_asr = "tools/asr/models/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online"
        snapshot_download(
            "iic/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online",
            local_dir="tools/asr/models/speech_UniASR_asr_2pass-cantonese-CHS-16k-common-vocab1468-tensorflow1-online",
        )
        path_vad = path_punc = None
        vad_model_revision = punc_model_revision = ""
        model_revision = "master"
    else:
        raise ValueError(f"{language} is not supported. Supported: zh, yue, ja, en, ko, auto")

    if language in funasr_models:
        return funasr_models[language]
    else:
        model = AutoModel(
            model=path_asr,
            model_revision=model_revision,
            vad_model=path_vad,
            vad_model_revision=vad_model_revision,
            punc_model=path_punc,
            punc_model_revision=punc_model_revision,
        )
        print(f"FunASR 模型加载完成: {language.upper()}")

        funasr_models[language] = model
        return model

View on GitHub (pinned to d523079fc0)

Solutions

  1. Use one of the exact supported codes: zh, yue, ja, en, ko, or auto.
  2. Normalize caller input: lowercase and map locale tags (en-US→en, zh-Hans→zh, yue/yue-Hant→yue) before calling.
  3. For unsupported languages, switch to a different ASR backend (faster_whisper supports more languages) instead of funasr.
  4. If extending the tool is acceptable, add a branch with the corresponding ModelScope model id.

Example fix

# before
asr(files, language="en-US")  # ValueError: en-US is not supported. Supported: zh, yue, ja, en, ko, auto

# after
lang_map = {"en-us": "en", "zh-hans": "zh", "zh-hant": "zh", "yue": "yue"}
language = lang_map.get(language.lower().replace("_", "-"), language.lower())
asr(files, language=language)
Defensive patterns

Strategy: validation

Validate before calling

SUPPORTED = {"zh", "yue", "ja", "en", "ko", "auto"}
language = (language or "auto").lower()
language = {"en-us": "en", "zh-cn": "zh", "zh-hans": "zh", "zh-hant": "zh"}.get(language, language)
if language not in SUPPORTED:
    raise ValueError(f"unsupported ASR language {language!r}; use faster_whisper for others")

Type guard

def is_funasr_language(lang: str) -> bool:
    return (lang or "").lower() in {"zh", "yue", "ja", "en", "ko", "auto"}

Prevention

When it happens

Trigger: Calling the funasr ASR entry (asr() from tools/asr/funasr_asr.py) with language not in {zh, yue, ja, en, ko, auto} — e.g. 'zh-Hans', 'ZH', 'en-US', 'fr', 'cantones' typos.

Common situations: Passing BCP-47 locale codes instead of the short codes; uppercase from an auto-generated config; unsupported language genuinely requested; UI dropdown value not matching backend codes.

Related errors


AI-assisted analysis of RVC-Boss/GPT-SoVITS@d523079fc0 (2026-08-15). Data as JSON: /api/errors/78c74fd2199c8f5c. Report an issue: GitHub.