microsoft/VibeVoice · error · ValueError

Unsupported tokenizer type for {language_model_pretrained_na

Error message

Unsupported tokenizer type for {language_model_pretrained_name}. Supported types: Qwen, Llama, Gemma.

What it means

VibeVoiceProcessor.from_pretrained selects a text tokenizer class by checking for a 'qwen' substring (case-insensitive) in `language_model_pretrained_name`. Despite the error text advertising 'Supported types: Qwen, Llama, Gemma', the code only implements the Qwen branch, so any non-Qwen name raises ValueError. This is a message/implementation mismatch in the library.

Source

Thrown at vibevoice/processor/vibevoice_processor.py:105

                config = {
                    "speech_tok_compress_ratio": 3200,
                    "db_normalize": True,
                }
        
        # Extract main processor parameters
        speech_tok_compress_ratio = config.get("speech_tok_compress_ratio", 3200)
        db_normalize = config.get("db_normalize", True)
        
        # Load tokenizer - try from model path first, then fall back to Qwen        
        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 = VibeVoiceTextTokenizerFast.from_pretrained(
                language_model_pretrained_name,
                **kwargs
            )
        else:
            raise ValueError(f"Unsupported tokenizer type for {language_model_pretrained_name}. Supported types: Qwen, Llama, Gemma.")
        
        # Load audio processor
        if "audio_processor" in config:
            # Create audio processor from config
            audio_config = config["audio_processor"]
            audio_processor = VibeVoiceTokenizerProcessor(
                sampling_rate=audio_config.get("sampling_rate", 24000),
                normalize_audio=audio_config.get("normalize_audio", True),
                target_dB_FS=audio_config.get("target_dB_FS", -25),
                eps=audio_config.get("eps", 1e-6),
            )
        else:
            # Create default audio processor
            audio_processor = VibeVoiceTokenizerProcessor()
        
        # Create and return the processor
        return cls(
            tokenizer=tokenizer,

View on GitHub (pinned to 94da20d98b)

Solutions

  1. Use 'Qwen/Qwen2.5-1.5B' (default) or another Qwen repo id containing 'qwen'.
  2. For a local Qwen fine-tune, name or symlink the directory so the path contains 'qwen'.
  3. If you truly need Llama/Gemma tokenizers, subclass VibeVoiceProcessor and add the branch; do not rely on the message's claim.

Example fix

# before
processor = VibeVoiceProcessor.from_pretrained(
    ..., language_model_pretrained_name='meta-llama/Llama-3-8B')

# after
processor = VibeVoiceProcessor.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'
assert 'qwen' in name.lower(), (
    f'Only Qwen tokenizers load; {name!r} lacks "qwen" (local dirs must keep it in the path)')

Type guard

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

Try / catch

try:
    processor = VibeVoiceProcessor.from_pretrained(model_path)
except ValueError as e:
    if 'Unsupported tokenizer type' in str(e):
        raise ValueError('Set language_model_pretrained_name to a Qwen checkpoint; '
                         'Llama/Gemma are NOT actually wired up despite the message') from e
    raise

Prevention

When it happens

Trigger: Setting language_model_pretrained_name to any string without 'qwen': 'meta-llama/Llama-3-8B', 'google/gemma-7b', or a local path like './lm-checkpoint' (even if it is actually a Qwen save).

Common situations: Users believing the error message and trying Llama or Gemma, then hitting the same error; local fine-tuned Qwen checkpoints saved under a name that lost 'qwen'; company-internal mirror hostnames that rename repos.

Related errors


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