Fix: accept scalar audio formats in Voxtral transcription requests
Author: Sunt-ing
Pull request: yes

<!-- ci-dashboard-badge:start -->
[![CI](https://transformers-ci.lor-e.huggingface.cool/badge/pr?pr=47045)](https://transformers-ci.lor-e.huggingface.cool/d/pytest-observability-by-pr/pytest-observability-branch?var-pr=47045)
<!-- ci-dashboard-badge:end -->

# What does this PR do?

`VoxtralProcessor.apply_transcription_request()` documents `format` as either a string or a list. The array-audio path did not normalize a scalar string, so `format="wav"` was treated as three per-sample formats and a single local audio array failed before the transcription request was encoded.

This broadcasts a scalar `format` to the audio batch length, keeps the existing length check for per-sample format lists, and raises a clear optional-dependency error before encoding array audio without `soundfile`.

<details><summary>Repro and output</summary>

```python
import numpy as np
from transformers import AutoProcessor


model_id = "mistralai/Voxtral-Mini-3B-2507"
processor = AutoProcessor.from_pretrained(model_id)
audio = np.zeros(16000, dtype=np.float32)

for fmt in ["wav", ["wav"]]:
    print("CASE", fmt)
    try:
        out = processor.apply_transcription_request(
            audio=audio,
            model_id=model_id,
            format=fmt,
            sampling_rate=16000,
        )
        print("OK", sorted(out.keys()), out["input_features"].shape, out["input_ids"].shape)
    except Exception as exc:
        print("ERR", type(exc).__name__, str(exc))
```

Before this PR:

```text
CASE wav
ERR ValueError When passed as a list of audio, the length (1) must match the number of format (3)
CASE ['wav']
OK ['attention_mask', 'input_features', 'input_ids'] torch.Size([1, 128, 3000]) torch.Size([1, 380])
```

After this PR:

```text
CASE wav
OK ['attention_mask', 'input_features', 'input_ids'] torch.Size([1, 128, 3000]) torch.Size([1, 380])
CASE ['wav']
OK ['attention_mask', 'input_features', 'input_ids'] torch.Size([1, 128, 3000]) torch.Size([1, 380])
```

</details>

<details><summary>Tests</summary>

```text
RUN_SLOW=1 python -m pytest -q -s tests/models/voxtral/test_modeling_voxtral.py::VoxtralForConditionalGenerationIntegrationTest::test_transcription_request_accepts_single_format_for_array_audio

tests/models/voxtral/test_modeling_voxtral.py::VoxtralForConditionalGenerationIntegrationTest::test_transcription_request_accepts_single_format_for_array_audio PASSED

======================= 1 passed, 11 warnings in 26.85s ========================

python -m ruff check src/transformers/models/voxtral/processing_voxtral.py tests/models/voxtral/test_modeling_voxtral.py
All checks passed!

git diff --check
```

</details>

## Code Agent Policy

- [x] I confirm that this is not a pure code agent PR.

## Before submitting
- [ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
- [x] Did you read the [contributor guideline](https://huggingface.co/docs/transformers/contributing) and the
      [Pull Request](https://huggingface.co/docs/transformers/pr_checks) checks?
- [ ] Was this discussed/approved via a Github issue or the [forum](https://discuss.huggingface.co/)? Please add a link
      to it if that's the case.
- [ ] Did you make sure to update the documentation with your changes according to the [guidelines](https://github.com/huggingface/transformers/tree/main/docs)?
- [x] Did you write any new necessary [tests](https://huggingface.co/docs/transformers/testing)?

## Who can review?

cc @zucchini-nlp @Rocketknight1

Comments:
**[For maintainers]** Suggested jobs to run (before merge)

run-slow: voxtral

<!-- ci-dashboard-recap:start -->

---

### CI recap

**Dashboard:** [View test results in Grafana](https://transformers-ci.lor-e.huggingface.cool/d/pytest-observability-by-pr/pytest-observability-branch?var-pr=47045)
**Latest run:** [28673130375](https://github.com/huggingface/transformers/actions/runs/28673130375)
**Result:** `success` | Grafana metrics are not available yet.

<!-- ci-dashboard-recap:end -->

LGTM but cc @eustlb @ebezzam for audio to confirm!

The docs for this PR live [here](https://moon-ci-docs.huggingface.co/docs/transformers/pr_47045). All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.