microsoft/VibeVoice · error · ValueError
Unsupported mixer layer: {mixer_layer}
Error message
Unsupported mixer layer: {mixer_layer} What it means
The SEANet-style attention block (modular_vibevoice_tokenizer.py:661) supports only specific mixer layers — the branches above handle e.g. 'conv'/'attention' and 'depthwise_conv' — and any other mixer_layer string raises ValueError. The default from config is 'conv' (getattr(config, 'mixer_layer', 'conv')).
Source
Thrown at vibevoice/modular/modular_vibevoice_tokenizer.py:661
if mixer_layer == 'conv':
self.mixer = Convlayer(dim, dim, groups=kwargs.get('groups', 1),
kernel_size=kernel_size,
pad_mode=kwargs.get('pad_mode', 'reflect'),
norm=kwargs.get('norm', 'none'),
causal=kwargs.get('causal', True),
bias=kwargs.get('bias', True),
)
elif mixer_layer == 'depthwise_conv':
self.mixer = Convlayer(dim, dim, groups=dim,
kernel_size=kernel_size,
pad_mode=kwargs.get('pad_mode', 'reflect'),
norm=kwargs.get('norm', 'none'),
causal=kwargs.get('causal', True),
bias=kwargs.get('bias', True),
)
else:
raise ValueError(f"Unsupported mixer layer: {mixer_layer}")
self.ffn = FFN(
dim,
kwargs.get('ffn_expansion', 4) * dim,
bias=kwargs.get('bias', False),
)
self.drop_path = nn.Identity() if drop_path <= 0. else nn.modules.DropPath(drop_path)
if layer_scale_init_value > 0:
self.gamma = nn.Parameter(layer_scale_init_value * torch.ones((dim)), requires_grad=True)
self.ffn_gamma = nn.Parameter(layer_scale_init_value * torch.ones((dim)), requires_grad=True)
else:
self.gamma = None
self.ffn_gamma = None
def forward(self, x):
# mixer
residual = xView on GitHub (pinned to 94da20d98b)
Solutions
- Set mixer_layer to one of the implemented values ('conv' or 'depthwise_conv'; check the branch chain at that site).
- Read the config from a known-good checkpoint instead of authoring it by hand.
- If a new mixer is required, add an elif branch constructing your mixer before the raise.
- Print/validate config.mixer_layer against the supported set at config-load time.
Example fix
# before cfg["mixer_layer"] = "depthwiseconv" # typo -> ValueError # after cfg["mixer_layer"] = "depthwise_conv" # exact supported spelling
Defensive patterns
Strategy: validation
Validate before calling
SUPPORTED_MIXERS = {"conv", "depthwise_conv"}
mixer = getattr(config, "mixer_layer", "conv")
assert mixer in SUPPORTED_MIXERS, f"mixer_layer must be one of {SUPPORTED_MIXERS}, got {mixer!r}" Type guard
def is_supported_mixer(m: object) -> bool:
return m in ("conv", "depthwise_conv") Prevention
- Use exact spellings from the repo's configs
- Validate mixer_layer before building tokenizers
- Prefer checkpoint-shipped configs over hand-authored ones
When it happens
Trigger: Building the tokenizer with config.mixer_layer set to an unsupported value such as 'mlp', 'gru', 'fft', or a typo like 'depthwiseconv'.
Common situations: Editing tokenizer config JSON to try new architectures; configs ported from other audio codebases with different mixer naming; missing value falling through to a custom string.
Related errors
- Unsupported norm type: {layernorm}
- Unsupported decoder model type: {decoder_config.get('model_t
- Unsupported decoder model type: {decoder_config.get('model_t
- GroupNorm doesn't support causal evaluation.
- Multiple voice presets match the speaker name '{speaker_name
AI-assisted analysis of microsoft/VibeVoice@94da20d98b (2026-08-15).
Data as JSON: /api/errors/7b9b45c71448419e.
Report an issue: GitHub.