CoolFace
Modelpublic

cstr/snac-24khz-GGUF

sourceHugging Facemitupdated 2mo agoView on Hugging Face
2likes959downloads
Model Card

SNAC 24 kHz Codec — GGUF (ggml-quantised)

GGUF / ggml conversion of `hubertsiuzdak/snac_24khz` — the 24 kHz Multi-Scale Neural Audio Codec used by Orpheus-TTS — for use with [CrispStrobe/CrispASR](https://github.com/CrispStrobe/CrispASR).

SNAC is a small (~25 MB) Residual Vector Quantisation codec by Hubert Siuzdak. Pair it with the `cstr/orpheus-3b-0.1-ft-GGUF` talker (or any other GGUF orpheus checkpoint) — the talker emits codec tokens but doesn't render audio without this codec.

Files

FileTypeSizeNotes
snac-24khz.ggufF3225 MBFull-precision codec — model is small enough that quantisation is not worth the quality risk

The codec runs in C++ inside libcrispasr once --codec-model snac-24khz.gguf is passed; no Python required at inference time.

Quick start

bash
huggingface-cli download cstr/orpheus-3b-0.1-ft-GGUF orpheus-3b-0.1-ft-q8_0.gguf --local-dir .
huggingface-cli download cstr/snac-24khz-GGUF       snac-24khz.gguf            --local-dir .

./build/bin/crispasr --backend orpheus \
    -m orpheus-3b-0.1-ft-q8_0.gguf \
    --codec-model snac-24khz.gguf \
    --voice tara --temperature 0.6 \
    --tts "Hello, my name is Tara." \
    --tts-output hello.wav

Or pass -m auto and CrispASR's auto-download fetches both files from HF.

Architecture

ComponentDetails
Sample rate24 kHz mono
Codebooks3 (RVQ — 1, 2, 4 entries per super-frame)
Codebook size4096 (12 bits each)
Frame rate12 ms (288 samples / hop 512)
Super-frame7 codec tokens cover 4 codec frames = 32 ms ≈ 768 PCM samples (deinterleave 1+2+4)
DecoderSnake activations + transposed convolutions, full-precision F32

The codec maps 7 talker emissions to 1 super-frame; 4 super-frames give a 32 × 32 ms = 128 ms audio chunk (8192 samples at 24 kHz). The streaming protocol from orpheus_snac.py emits the middle 2048 samples of each 4-super-frame sliding window.

Conversion

bash
python models/convert-snac-to-gguf.py \
    --input hubertsiuzdak/snac_24khz \
    --output snac-24khz.gguf

No quantisation — the model is small enough (~25 MB) that the disk savings would be marginal and the quality risk on the codec output isn't worth it. The Q80 path collapses cosine similarity on `audioout` below the ASR-roundtrip threshold in our diff harness.

Used by

  • `cstr/orpheus-3b-0.1-ft-GGUF` — canonical English Orpheus 3B-FT.
  • (queued) cstr/orpheus-kartoffel-de-GGUF — German Kartoffel_Orpheus finetunes.
  • (queued) cstr/orpheus-3b-de-q8_0-GGUF — lex-au Orpheus-3B-DE Q8 mirror.

All three reuse this exact codec — only the talker GGUF changes.

Attribution

License

MIT, inherited from the base codec.

Provenance and EU AI Act Art. 53 note

  • Upstream model: hubertsiuzdak/snac_24khz — published by hubertsiuzdak.
  • Upstream licence: mit. This repository redistributes under the same terms; it grants no rights the upstream licence does not.
  • What was done here: format conversion and/or quantisation only (GGUF/GGML). No training, no fine-tuning, no merging, no distillation, no change to architecture, vocabulary or capability. Only the numeric representation of the upstream weights differs.
  • Training data: documented — where it is documented at all — by the upstream provider; see the upstream model card. No training data was used, added or selected by this repository.
  • Provider status: under Regulation (EU) 2024/1689 the upstream authors remain the provider of this model. Converting the serialisation format does not make this repository the provider of a new general-purpose AI model, and no such claim is made. Questions about training content, copyright policy or model capability belong upstream.