phoonnx-magpie-tts / README.md
Jarbas's picture
Add ONNX export of NVIDIA Magpie-TTS Multilingual 357M
d72759e verified
|
Raw
History Blame Contribute Delete
3.82 kB
---
license: other
license_name: nvidia-open-model-license
license_link: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license
language: [ar, de, en, es, fr, hi, it, ja, ko, pt, vi, zh]
library_name: phoonnx
pipeline_tag: text-to-speech
tags: [onnx, tts, magpie, nvidia, multilingual, phoonnx]
base_model: nvidia/magpie_tts_multilingual_357m
---
# phoonnx-magpie-tts
ONNX export of [nvidia/magpie_tts_multilingual_357m](https://huggingface.co/nvidia/magpie_tts_multilingual_357m)
(MagpieTTS Multilingual, v2607) for use with [phoonnx](https://github.com/TigreGotico/phoonnx).
The original model is a transformer encoder-decoder that predicts discrete audio codec
tokens autoregressively. It uses 8 codebooks, a frame stacking factor of 2, and a local
transformer that refines each stacked frame. A frozen
[NanoCodec](https://huggingface.co/nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps)
decodes the tokens into a 22.05 kHz waveform.
Weights and architecture are NVIDIA's. This repository only changes the file format.
## License and attribution
The model is released under the
[NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license).
That license applies to every file here. Developed by NVIDIA. See the
[original model card](https://huggingface.co/nvidia/magpie_tts_multilingual_357m) for the
full model card, dataset list, and limitations.
## Contents
| File | Purpose |
|---|---|
| `text_encoder.onnx` | 6-layer causal text encoder. Text token ids to encoder states. |
| `cross_kv.onnx` | Per-layer cross-attention K/V, computed once from the encoder states. |
| `decoder_step.onnx` | 12-layer causal decoder with external KV cache. Returns codebook logits, decoder states, the updated cache, and per-layer cross-attention probabilities. |
| `local_step.onnx` | One step of the 2-layer local transformer that refines the 16 stacked codebook tokens. |
| `audio_embed.onnx` | Stacked codebook tokens to one decoder input embedding. |
| `lt_embed.onnx` | One codebook token to the next local-transformer input. |
| `codec_decoder.onnx` | NanoCodec decoder. Codes to waveform. |
| `assets/context_embeddings.npy` | Baked speaker context embeddings, shape (5, 217, 768). |
| `assets/tokenizer.json` | Aggregated tokenizer vocabulary and per-language offsets. |
| `assets/tokenizer/` | IPA dictionaries and heteronym lists shipped inside the original checkpoint. |
| `config.json` | Graph inventory and IO contract. |
All graphs are opset 18 and use external data files (`*.onnx.data`). Download the whole
repository, not single files.
## Two decode modes
NeMo ships `use_kv_cache_for_inference: false`. In that mode the newest attention prior is
re-applied over the whole history, so the decoder states must be recomputed every step. A
KV-cached decoder does not produce the same tokens.
`decoder_step.onnx` supports both:
- **exact** - pass the full sequence with an empty cache every step. Matches the NeMo
default.
- **cached** - pass one frame plus the cache. Matches NeMo with
`use_kv_cache_for_inference: true`. Roughly 2.5x faster.
Both reach 100% greedy token agreement with the matching NeMo reference across all 8
codebooks.
## Usage
```python
from phoonnx.model_manager import TTSModelManager
manager = TTSModelManager()
voice = manager.get_voice(magpie/Leo/en)
wav = voice.synthesize(Hello from Magpie running on ONNX.)
```
## Related
- [phoonnx](https://github.com/TigreGotico/phoonnx) - the ONNX TTS runtime that consumes this repository
- [nvidia/magpie_tts_multilingual_357m](https://huggingface.co/nvidia/magpie_tts_multilingual_357m) - the source checkpoint
- [nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps](https://huggingface.co/nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps) - the codec