voice_audio_multi/docs/models/magenta_realtime_2.md
Fabio c36510c21e
Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

74 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Magenta RealTime 2
Magenta RealTime 2 generates 48 kHz stereo instrumental music from a text style
prompt or an audio example. Both Small (230M) and Base (2.4B) use the same
`gen` route in offline and streaming modes. Text describes the music; it is not
a lyric transcript.
Download one self-contained F16 or Q8_0 package from
[audio-cpp/Magenta-RealTime-2-GGUF](https://huggingface.co/audio-cpp/Magenta-RealTime-2-GGUF).
Each GGUF includes the generator, SpectroStream codec, MusicCoCa style runtime
weights, configuration, vocabulary, and v1 model spec.
```bash
audiocpp_cli --model Magenta-RealTime-2-GGUF/magenta-rt2-small-f16.gguf \
--family magenta_realtime_2 --task gen --backend cuda \
--text "disco funk" --request-option duration_sec=10 \
--out music.wav --log
```
Use `magenta-rt2-base-f16.gguf` for Base, or `--backend cpu` / `vulkan`
for another backend. Use the `-q8_0.gguf` packages for quantized transformer
matrices. Add `--mode streaming` to emit audio incrementally;
the same request produces the same final waveform in either mode. Streaming
emits up to four codec frames (160 ms) per audio event. Each request starts a
fresh piece; it does not continue the previous request.
For audio style conditioning, replace `--text` with `--audio style.wav`.
MusicCoCa embeds the recording's style rather than continuing its waveform.
| Request option | Default | Meaning |
|---|---:|---|
| `duration_sec` | `10` | Duration, rounded up to 40 ms frames; minimum 0.04 seconds. |
| `temperature` | `1.3` | Sampling temperature; `0` selects greedy decoding. |
| `top_k` | `40` | Candidate limit from 1–1024; `0` keeps all valid codes. |
| `seed` | `0` | Unsigned 32-bit generation seed. |
| `guidance_scale` | `3` | Style guidance from -1–7. |
| `note_guidance_scale` | `1` | Note guidance from -1–7. |
| `drum_guidance_scale` | `1` | Drum guidance from -1–7. |
| `use_mapper` | `true` | Map text embeddings into audio style space. Applies to text input. |
| `drums` | `-1` | Unspecified (`-1`), no drums (`0`), or drums (`1`). |
| `pianoroll_file` | unset | JSON array with one row per 25 Hz frame and 128 integer pitch states per row. |
Set these through `--request-option name=value`. Guidance is discretized to
the model's trained control tokens. Piano states are `-1` (unspecified), `0`
(off), `1` (sustain), `2` (onset), and `3` (model chooses sustain/onset).
| Session option | Default | Meaning |
|---|---|---|
| `magenta_realtime_2.weight_type` | `native` | Transformer weight storage type. Codec and MusicCoCa remain F32. |
All generation graphs and bounded attention/codec state are cached per session.
MusicCoCa has its own framework runtime and reads its tensors from the same
GGUF. Inference does not require Python, JAX, or TensorFlow Lite.
## Conversion
Download the original [Google checkpoint and resources](https://huggingface.co/google/magenta-realtime-2),
then run the converter with NumPy, safetensors, and `ai-edge-litert` installed:
```bash
python tools/models/convert_magenta_realtime_2_gguf.py \
--source Magenta-RealTime-2 --output Magenta-RealTime-2-GGUF \
--component small --type f16
python tools/models/convert_magenta_realtime_2_gguf.py \
--source Magenta-RealTime-2 --output Magenta-RealTime-2-GGUF \
--component base --type f16
```
Use `--type q8_0` instead for Q8_0. Each conversion embeds all MusicCoCa
resources in the selected generator GGUF. SpectroStream, MusicCoCa, and
sensitive normalization, bias, scale, and sink tensors remain F32.
Original model: [Google DeepMind Magenta RealTime 2](https://github.com/magenta/magenta-realtime).
Weights retain CC-BY-4.0 and the upstream usage terms.