#48887·transformers

gemma 4 can not load audio file and produce Audio features and audio tokens do not match, tokens: 31, features: 468480

Author: chaowenguoCreated Sep 17, 2026Updated Sep 17, 2026
Labelsbug

System Info

I try in kaggle T4 x 2

! python3 -m pip install -U transformers xgrammar huggingface_hub bitsandbytes
import huggingface_hub, transformers, torch, xgrammar, json
huggingface_hub.snapshot_download(repo_id='google/gemma-4-12B-it', local_dir='/tmp/kaggle')
processor = transformers.Gemma4Processor.from_pretrained('/tmp/kaggle')
model = transformers.Gemma4UnifiedForConditionalGeneration.from_pretrained('/tmp/kaggle', device_map='auto', dtype=torch.bfloat16)
inputs = processor.apply_chat_template([
    {
        'role': 'user', 
        'content': [
            {'type': 'audio', 'audio':transformers.audio_utils.load_audio('/kaggle/input/datasets/chaowenguoback/testtestwav/219116628.wav')}, 
            {'type': 'text', 'text': '请识别音频中的语音,将其转写为文本,并计算转写文本的总字数。'}
        ]
    }
], tokenize=True, return_dict=True, return_tensors='pt', add_generation_prompt=True, enable_thinking=True).to(model.device)
grammar = xgrammar.GrammarCompiler(xgrammar.TokenizerInfo.from_huggingface(processor.tokenizer, vocab_size=model.config.text_config.vocab_size)).compile_grammar(xgrammar.Grammar.concat(xgrammar.Grammar.from_ebnf('root ::= "<|channel>thought\\n" [^<]* "<channel|>"'), xgrammar.Grammar.from_json_schema(json.dumps({'type':'object', 'properties':{
    "文本": {"type": "string"},
    "总字数": {"type": "integer"}
  },
  "required": ["文本", "总字数"]}))))
outputs = model.generate(**inputs, temperature=0.1, max_new_tokens=1024, logits_processor=[xgrammar.contrib.hf.LogitsProcessor(grammar)])
processor.parse_response(processor.decode(outputs[0][inputs['input_ids'].shape[-1]:], skip_special_tokens=False), prefix=inputs['input_ids'])

Who can help?

No response

Information

  • The official example scripts
  • My own modified scripts

Tasks

  • An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
  • My own task or dataset (give details below)

Reproduction


ValueError Traceback (most recent call last) /tmp/ipykernel_58/326137259.py in <cell line: 0>() 18 }, 19 "required": ["文本", "总字数"]})))) ---> 20 outputs = model.generate(**inputs, temperature=0.1, max_new_tokens=1024, logits_processor=[xgrammar.contrib.hf.LogitsProcessor(grammar)]) 21 processor.parse_response(processor.decode(outputs[0][inputs['input_ids'].shape[-1]:], skip_special_tokens=False), prefix=inputs['input_ids'])

/usr/local/lib/python3.12/dist-packages/torch/utils/_contextlib.py in decorate_context(*args, **kwargs) 122 # pyrefly: ignore [bad-context-manager] 123 with ctx_factory(): --> 124 return func(*args, **kwargs) 125 126 return decorate_context

/usr/local/lib/python3.12/dist-packages/transformers/generation/utils.py in generate(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, negative_prompt_ids, negative_prompt_attention_mask, custom_generate, **kwargs) 2800 2801 # 9. Call generation mode -> 2802 result = decoding_method( 2803 self, 2804 input_ids,

/usr/local/lib/python3.12/dist-packages/transformers/generation/utils.py in _sample(self, input_ids, logits_processor, stopping_criteria, generation_config, synced_gpus, streamer, **model_kwargs) 3000 3001 prefill_consumed = False -> 3002 outputs = self._prefill( 3003 input_ids, 3004 generation_config,

/usr/local/lib/python3.12/dist-packages/transformers/generation/utils.py in _prefill(self, input_ids, generation_config, model_kwargs, is_first_iteration) 4107 **model_kwargs, 4108 ) -> 4109 return self(**model_inputs, return_dict=True) 4110 4111 # Chunked prefill (for very large contexts)

/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _wrapped_call_impl(self, *args, **kwargs) 1774 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1775 else: -> 1776 return self._call_impl(*args, **kwargs) 1777 1778 # torchrec tests the code consistency with the following code

/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs) 1785 or _global_backward_pre_hooks or _global_backward_hooks 1786 or _global_forward_hooks or _global_forward_pre_hooks): -> 1787 return forward_call(*args, **kwargs) 1788 1789 result = None

/usr/local/lib/python3.12/dist-packages/accelerate/hooks.py in new_forward(module, *args, **kwargs) 190 output = module._old_forward(*args, **kwargs) 191 else: --> 192 output = module._old_forward(*args, **kwargs) 193 return module._hf_hook.post_forward(module, output) 194

/usr/local/lib/python3.12/dist-packages/transformers/utils/generic.py in wrapper(self, *args, **kwargs) 937 if return_dict_passed is not None: 938 return_dict = return_dict_passed --> 939 output = func(self, *args, **kwargs) 940 if not return_dict and not isinstance(output, tuple): 941 output = output.to_tuple()

/usr/local/lib/python3.12/dist-packages/transformers/models/gemma4_unified/modeling_gemma4_unified.py in forward(self, input_ids, pixel_values, pixel_values_videos, input_features, attention_mask, input_features_mask, position_ids, image_position_ids, video_position_ids, past_key_values, mm_token_type_ids, inputs_embeds, labels, use_cache, logits_to_keep, **kwargs) 1309 Passed through to the vision encoder for positional embedding computation. 1310 """ -> 1311 outputs = self.model( 1312 input_ids=input_ids, 1313 pixel_values=pixel_values,

/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _wrapped_call_impl(self, *args, **kwargs) 1774 return self._compiled_call_impl(*args, **kwargs) # type: ignore[misc] 1775 else: -> 1776 return self._call_impl(*args, **kwargs) 1777 1778 # torchrec tests the code consistency with the following code

/usr/local/lib/python3.12/dist-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs) 1785 or _global_backward_pre_hooks or _global_backward_hooks 1786 or _global_forward_hooks or _global_forward_pre_hooks): -> 1787 return forward_call(*args, **kwargs) 1788 1789 result = None

/usr/local/lib/python3.12/dist-packages/transformers/utils/generic.py in wrapper(self, *args, **kwargs) 1066 output = func(self, *args, **kwargs) 1067 else: -> 1068 output = func(self, *args, **kwargs) 1069 # Restore original config value 1070 finally:

/usr/local/lib/python3.12/dist-packages/transformers/utils/generic.py in wrapper(self, *args, **kwargs) 937 if return_dict_passed is not None: 938 return_dict = return_dict_passed --> 939 output = func(self, *args, **kwargs) 940 if not return_dict and not isinstance(output, tuple): 941 output = output.to_tuple()

/usr/local/lib/python3.12/dist-packages/transformers/models/gemma4_unified/modeling_gemma4_unified.py in forward(self, input_ids, pixel_values, pixel_values_videos, input_features, attention_mask, input_features_mask, position_ids, past_key_values, mm_token_type_ids, inputs_embeds, use_cache, image_position_ids, video_position_ids, **kwargs) 1070 n_audio_tokens = audio_mask.sum() 1071 audio_mask = audio_mask.unsqueeze(-1).expand_as(inputs_embeds).to(inputs_embeds.device) -> 1072 torch_compilable_check( 1073 inputs_embeds[audio_mask].numel() == audio_features.numel(), 1074 f"Audio features and audio tokens do not match, tokens: {n_audio_tokens}, features:"

/usr/local/lib/python3.12/dist-packages/transformers/utils/import_utils.py in torch_compilable_check(cond, msg, error_type) 1867 torch._check_tensor_all_with(error_type, cond, msg_callable) 1868 else: -> 1869 torch._check_with(error_type, cond, msg_callable) 1870 1871

/usr/local/lib/python3.12/dist-packages/torch/init.py in _check_with(error_type, cond, message) 1712 message_evaluated = str(message()) 1713 -> 1714 raise error_type(message_evaluated) 1715 1716

ValueError: Audio features and audio tokens do not match, tokens: 31, features: 468480

Expected behavior

it will generate the correct answer.

Source: huggingface/transformers