microsoft/VibeVoice · error · ValueError

Unsupported tokenizer type for {language_model_pretrained_na

Error message

Unsupported tokenizer type for {language_model_pretrained_name}

What it means

VibeVoiceASRProcessor.from_pretrained builds its text tokenizer from `language_model_pretrained_name`. The only supported family is Qwen (detected by a case-insensitive 'qwen' substring in the repo name); any other name — Llama, Gemma, a local fine-tune directory without 'qwen' in the path — raises this ValueError before the audio processor is built.

Source

Thrown at vibevoice/processor/vibevoice_asr_processor.py:147

                logger.warning(f"Could not load preprocessor_config.json: {e}")
                logger.warning("Using default configuration")
        
        # Extract parameters
        speech_tok_compress_ratio = config.get("speech_tok_compress_ratio", 3200)
        target_sample_rate = config.get("target_sample_rate", 24000)
        normalize_audio = config.get("normalize_audio", True)
        
        # Load tokenizer
        language_model_pretrained_name = config.get("language_model_pretrained_name", None) or kwargs.pop("language_model_pretrained_name", "Qwen/Qwen2.5-1.5B")
        logger.info(f"Loading tokenizer from {language_model_pretrained_name}")
        
        if 'qwen' in language_model_pretrained_name.lower():
            tokenizer = VibeVoiceASRTextTokenizerFast.from_pretrained(
                language_model_pretrained_name,
                **kwargs
            )
        else:
            raise ValueError(f"Unsupported tokenizer type for {language_model_pretrained_name}")
        
        # Load audio processor
        audio_processor = VibeVoiceTokenizerProcessor(
            sampling_rate=target_sample_rate,
            normalize_audio=normalize_audio,
            target_dB_FS=config.get("target_dB_FS", -25),
            eps=config.get("eps", 1e-6),
        )
        
        return cls(
            tokenizer=tokenizer,
            audio_processor=audio_processor,
            speech_tok_compress_ratio=speech_tok_compress_ratio,
            target_sample_rate=target_sample_rate,
            normalize_audio=normalize_audio,
        )
    
    def save_pretrained(self, save_directory: Union[str, os.PathLike], **kwargs):

View on GitHub (pinned to 94da20d98b)

Solutions

  1. Use a Qwen-family checkpoint id such as 'Qwen/Qwen2.5-1.5B' (the default) for language_model_pretrained_name.
  2. If using a local fine-tune, ensure the directory/path string still contains 'qwen' (case-insensitive), or rename it accordingly.
  3. For other model families, subclass the processor and add a tokenizer branch instead of relying on this loader.

Example fix

# before
processor = VibeVoiceASRProcessor.from_pretrained('/checkpoints/my-asr-lm')  # no 'qwen' in path

# after
processor = VibeVoiceASRProcessor.from_pretrained(
    ..., language_model_pretrained_name='Qwen/Qwen2.5-1.5B'
)
Defensive patterns

Strategy: validation

Validate before calling

name = config.get('language_model_pretrained_name') or 'Qwen/Qwen2.5-1.5B'
if 'qwen' not in name.lower():
    raise ValueError(f'ASR processor requires a Qwen tokenizer, got {name!r}')
processor = VibeVoiceASRProcessor.from_pretrained(..., language_model_pretrained_name=name)

Type guard

def is_qwen_tokenizer_name(name: str) -> bool:
    return isinstance(name, str) and 'qwen' in name.lower()

Try / catch

try:
    processor = VibeVoiceASRProcessor.from_pretrained(model_path)
except ValueError as e:
    if 'Unsupported tokenizer type' in str(e):
        processor = VibeVoiceASRProcessor.from_pretrained(
            model_path, language_model_pretrained_name='Qwen/Qwen2.5-1.5B')
    else:
        raise

Prevention

When it happens

Trigger: Passing a config or kwarg language_model_pretrained_name that does not contain 'qwen', e.g. 'meta-llama/Llama-3.1-8B', 'google/gemma-2-2b', or a local path like '/models/my-finetune' even when the underlying model is Qwen-based.

Common situations: Pointing at a locally saved copy of Qwen whose directory name dropped the 'qwen' token; attempting to swap the LM backbone to Llama/Gemma (the error message's sibling in vibevoice_processor.py even claims Llama/Gemma are supported — they are not wired up here); typos in the repo id.

Related errors


AI-assisted analysis of microsoft/VibeVoice@94da20d98b (2026-08-15). Data as JSON: /api/errors/104059ac09b94ced. Report an issue: GitHub.