neucodec-decoder / README.md
ragtag-ai's picture
Add model card
1fdbac7 verified
|
Raw
History Blame Contribute Delete
4.47 kB
---
license: apache-2.0
language:
- en
tags:
- audio
- speech
- text-to-speech
- voice-cloning
- neucodec
library_name: safetensors
base_model: neuphonic/neucodec
inference: false
---
# NeuCodec Decoder (safetensors weights)
These are the [NeuCodec](https://huggingface.co/neuphonic/neucodec) decoder weights, extracted to `safetensors` for use with a pure-Rust CPU decoder (ndarray + rustfft) — no native ONNX runtime, no PyTorch at inference.
The decoder converts the discrete speech codes produced by the NeuTTS backbone back into a 24 kHz audio waveform, completing the zero-shot voice cloning pipeline.
This artifact exists to enable voice cloning in [Ragtag](https://ragtag-ai.app), a local-first desktop AI application, under strict architectural constraints: no native ONNX runtime (no `onnxruntime` / `ort`), no GPL dependencies. The companion encoder is [ragtag-ai/neucodec-encoder-rten](https://huggingface.co/ragtag-ai/neucodec-encoder-rten).
## Model details
- **Source model:** [neuphonic/neucodec](https://huggingface.co/neuphonic/neucodec) (decoder portion only)
- **Format:** `safetensors` (extracted from the original `pytorch_model.bin`)
- **Runtime:** a pure-Rust CPU decoder (ndarray + rustfft) — the implementation in [neutts-rs](https://github.com/eugenehp/neutts-rs), vendored into Ragtag
- **Precision:** fp32
- **File size:** approximately 880 MB
- **Input:** NeuCodec speech codes (50 per second of audio)
- **Output:** 24 kHz mono audio waveform
## Provenance and extraction process
Upstream distributes the decoder only as ONNX ([neuphonic/neucodec-onnx-decoder](https://huggingface.co/neuphonic/neucodec-onnx-decoder)); the pure-Rust decoder loads `safetensors`. These weights were extracted from the original PyTorch model:
1. **PyTorch source:** `pytorch_model.bin` from [neuphonic/neucodec](https://huggingface.co/neuphonic/neucodec)
2. **Extraction:** the decoder sub-graph (VocosBackbone: FSQ projection, conv embed, ResNet + RoPE transformer blocks, ISTFT head) is filtered out and written to `safetensors` (script: `convert_weights.py`, or the dependency-free `convert_weights_nopytorch.py`, in the Ragtag repo).
No weights are modified — this is a format conversion only.
## Quality verification
The pure-Rust decoder was verified against the reference implementations:
- **Decoder parity:** 0.99 correlation with the upstream Rust decoder on identical codes
- **End-to-end:** codes encoded from real audio, decoded through this path, produce an intelligible reconstruction of the speaker (ASR-confirmed)
NeuCodec is a generative (vocoder) decoder, so two valid implementations produce intelligible but not phase-identical waveforms; intelligibility, not waveform correlation, is the meaningful check.
## Usage
This is not a standalone TTS system. It is the decoder stage of Ragtag's clone pipeline, used together with:
- The encoder [ragtag-ai/neucodec-encoder-rten](https://huggingface.co/ragtag-ai/neucodec-encoder-rten)
- A NeuTTS backbone (e.g. [neuphonic/neutts-nano-q4-gguf](https://huggingface.co/neuphonic/neutts-nano-q4-gguf))
- A G2P frontend producing IPA phonemes (Ragtag uses piper-plus-g2p)
The decoder runs on CPU.
## Licence and attribution
Licensed under **Apache License 2.0**, derived from the original NeuCodec which is also Apache 2.0 licensed. Please retain attribution to the original authors:
```
NeuCodec by Neuphonic
https://huggingface.co/neuphonic/neucodec
Licensed under Apache 2.0
```
The safetensors extraction is contributed by Ragtag / Captivated Ltd, also under Apache 2.0.
## Related resources
- Original NeuCodec: [neuphonic/neucodec](https://huggingface.co/neuphonic/neucodec)
- Companion encoder: [ragtag-ai/neucodec-encoder-rten](https://huggingface.co/ragtag-ai/neucodec-encoder-rten)
- NeuTTS backbone: [neuphonic/neutts-air](https://huggingface.co/neuphonic/neutts-air)
- neutts-rs (Rust port reference): [github.com/eugenehp/neutts-rs](https://github.com/eugenehp/neutts-rs)
- Ragtag: [ragtag-ai.app](https://ragtag-ai.app)
## Citation
```bibtex
@misc{neucodec2024,
author = {Neuphonic},
title = {NeuCodec},
year = {2024},
publisher = {Hugging Face},
url = {https://huggingface.co/neuphonic/neucodec}
}
@misc{neucodec-decoder-safetensors,
author = {Mallett, Leon},
title = {NeuCodec Decoder (safetensors weights)},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/ragtag-ai/neucodec-decoder}
}
```