NeuCodec 🎧
HuggingFace 🤗: Model, Distilled Model
Created by Neuphonic - building faster, smaller, on-device voice AI
A lightweight neural codec that encodes audio at just 0.8 kbps - perfect for researchers and builders who need something that just works for training high quality text-to-speech models.
Key Features
🔊 Low bit-rate compression - a speech codec that compresses and reconstructs audio with near-inaudible reconstruction loss
🎼 Upsamples from 16kHz → 24kHz
🌍 Ready for real-world use - train your own SpeechLMs without needing to build your own codec
🏢 Commercial use permitted - use it in your own tools or products
📊 Released with large pre-encoded datasets - we’ve compressed Emilia-YODAS from 1.7TB to 41GB using NeuCodec, significantly reducing the compute requirements needed for training
Model Details
NeuCodec is a Finite Scalar Quantisation (FSQ) based 0.8kbps audio codec for speech tokenization. It takes advantage of the following features:
- It uses both audio (BigCodec) and semantic (Wav2Vec2-BERT) encoders.
- We make use of Finite Scalar Quantisation (FSQ) resulting in a single vector for the quantised output, which makes it ideal for downstream modeling with Speech Language Models.
- At 50 tokens/sec and 16 bits per token, the overall bit-rate is 0.8kbps.
- The codec takes in 16kHz input and outputs 24kHz using an upsampling decoder.
Our work largely based on extending the work of X-Codec2.0.
- Developed by: Neuphonic
- Model type: Neural Audio Codec
- License: apache-2.0
- Repository: https://github.com/neuphonic/neucodec
- Paper: arXiv
- Pre-encoded Datasets:
Get Started
Use the code below to get started with the model.
To install from pypi in a dedicated environment:
Using conda + pip:
conda create -n neucodec python>3.9
conda activate neucodec
pip install neucodec
Using uv:
uv venv neucodec --python 3.10
source neucodec/bin/activate # On Windows: neucodec\Scripts\activate
uv pip install neucodec
If you would like to use the onnx decoder, also install onnxruntime:
pip install onnxruntime
Then, to use the regular codec in python:
import librosa
import torch
import torchaudio
from torchaudio import transforms as T
from neucodec import NeuCodec
model = NeuCodec.from_pretrained("neuphonic/neucodec")
model.eval().cuda()
y, sr = torchaudio.load(librosa.ex("libri1"))
if sr != 16_000:
y = T.Resample(sr, 16_000)(y)[None, ...] # (B, 1, T_16)
with torch.no_grad():
fsq_codes = model.encode_code(y)
# fsq_codes = model.encode_code(librosa.ex("libri1")) # or directly pass your filepath!
print(f"Codes shape: {fsq_codes.shape}")
recon = model.decode_code(fsq_codes).cpu() # (B, 1, T_24)
torchaudio.save("reconstructed.wav", recon[0, :, :], 24_000)
Training Details
The model was trained using the following data:
- Emilia-YODAS
- MLS
- LibriTTS
- Fleurs
- CommonVoice
- HUI
- Additional proprietary set
All publically available data was covered by either the CC-BY-4.0 or CC0 license.
Citation
To cite this project, use the following bibtex entry:
@article{julian2025fsq,
title={Finite Scalar Quantization Enables Redundant and Transmission-Robust Neural Audio Compression at Low Bit-rates},
author={Julian, Harry and Beeson, Rachel and Konathala, Lohith and Ulin, Johanna and Gao, Jiameng},
journal={arXiv preprint arXiv:2509.09550},
year={2025},
url={https://arxiv.org/abs/2509.09550}
}
Metadata
Release files for neucodec 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| neucodec-0.0.6.tar.gz | 23.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neucodec-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 51.6 kB
Release files / neucodec-0.0.6.tar.gz
| Download URL | neucodec-0.0.6.tar.gz |
|---|---|
| Size | 23.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a19f107bf224a1c858967ccaace38fe1efbc328ca78c8f792b8dfca9cd993e6
|
|
BLAKE2b-256 checksum How to use checksums |
8d4250ce58b959a59e08e91d773efd29342b2ee50d199208c8871769b11ac51e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1018-azure
|
Release files / neucodec-0.0.6-py3-none-any.whl
| Download URL | neucodec-0.0.6-py3-none-any.whl |
|---|---|
| Size | 28.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e0231a631ac649b73769d8fb3c10b229054e42914c6da512c3f186dfb2cf57f
|
|
BLAKE2b-256 checksum How to use checksums |
6d9449abf361e89a90839f7861a1206632c15427a8a97a6344d95d46d0a5aa60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.10.20 Linux/6.17.0-1018-azure
|