[pipelines] text-to-audio pipeline standardization
Author: gante
Pull request: yes
Labels: name: Audio

# What does this PR do?

⚠️ TODO before merging: after settling on the design, update pipeline usage in model docs accordingly.

This PR standardizes `text-to-audio` such that the following lines work with most* text-to-audio models:

```py
from transformers import pipeline

synthesiser = pipeline("text-to-audio", "facebook/musicgen-large")
music = synthesiser("A low-fi song with a strong bassline")
synthesiser.save_audio(music, "test.wav")
```

On most* models where voice control is possible, it is possible to control it through the `voice` pipeline argument. The valid values for `voice` are model-dependent, and this argument is documented accordingly

```py
from transformers import pipeline

tts_pipeline = pipeline("text-to-audio", "sesame/csm-1b")
audio = tts_pipeline("I just got bamboozled by my cat.", voice="1")
tts_pipeline.save_audio(audio, "test.wav")
```

## Core changes

Prior to this PR, recent models with `text-to-audio` capabilities had no pipeline support (e.g. CSM, Dia, Qwen2.5 Omni). There was also not a standardized way to control the voice, if the model generates speech.

With this PR, `TextToAudioPipeline`:
- Uses a `processor` whenever possible, automatically (as opposed to needing a flag to control it);
- Takes a `voice` argument, which a few models can use out of the box. Whether a model can take `voice` in the pipeline is specified by properties of the model (if future models have the same properties, they will also have `voice` support);
- Standardizes outputs: ALL models using the pipeline will return `{"audio": <np.array with shape (audio_channels, sequence_length)>, "sampling_rate": <int>}`.  Different models return different array formats, and as a result we can see different saving scripts in the model cards -- the pipeline standardizes it;
- Adds a function to save the audio, for convenience. This way, users don't need to learn about `soundfile` or alternatives. Uses the processor's `save_audio` whenever it is available.

## Model support

Models with out-of-the-box pipeline support:
  - TTS Models with `voice` support:
    - CSM
    - Qwen2.5 Omni
    - Bark
  - TTS Models w/o `voice` support:
    - Dia  -- voice is set in the prompt; needs chat templates? (we can hardcode it in the pipeline, though 🤔 )
    - FastSpeech2Conformer (model has no voice control)
    - SeamlessM4T and variants (model has no voice control)
    - Vits (model has no voice control)
  - TTA Models:
    - Musicgen and variants

Models that have special requirements:
- SpeechT5 (requires `speaker_embeddings` argument; we could hide the complexity and accept `voice: int`, but the voice dataset most commonly used to pull the embeddings from isn't compatible with `datasets==4.0.0` 💔 )


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

run-slow: auto, bark, csm, dia, fastspeech2_conformer, qwen2_5_omni, speecht5

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