/ Модель

Характеристики

Лицензия
MIT
Базовая модель
snac_24khz
Библиотека
loom-py-rt
Опубликована
11 сен 2026

snac-24khz-loom

Генерация аудиоТекст → аудио3 профессии

SNAC 24 kHz — декодер, восстанавливающий аудиоволну из выровненных токенов нейронного аудиокодека SNAC.

27скачиваний за 30 дней0лайковвеса обновлены11 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

SNAC 24 kHz — декодер многомасштабного нейронного аудиокодека, разработанный авторами проекта SNAC и экспортированный loom-ai-org в формат GGUF для loom.cpp. Он преобразует выровненные кодовые токены SNAC в аудиоволну с частотой 24 кГц; это только декодирующая часть кодека, без кодирования аудио в токены. Модель не является языковой и не имеет языкового словаря.

Декодер принимает по одной строке на каждый самый редкий временной кадр: 7 идентификаторов кодовых книг, сгруппированных по уровням. Частота таких кадров — около 11,72 в секунду, каждый кадр восстанавливает 2048 аудиосэмплов. Веса не изменены относительно hubertsiuzdak/snac_24khz; репозиторий содержит их экспорт в GGUF и предназначен для запуска через loom-py-rt. Лицензия — MIT.

Декодирование использует случайный шум, передаваемый драйвером; при фиксированном seed результаты повторяемы. Для корректного восстановления входные коды должны быть выровнены, а токены, выдаваемые авторегрессионной моделью с другим порядком или задержками потоков, необходимо предварительно переставить. На низком битрейте могут быть слышны модуляция фонового шума и шипение, характерные для исходного декодера.

Сценарии применения

  • декодирование токенов SNAC в аудиосигнал 24 кГц
  • восстановление речи или звука из токенов генеративной аудиомодели
  • воспроизведение кодированных аудиопоследовательностей в loom.cpp
  • интеграция декодера SNAC в локальный аудиопайплайн

Ограничения

Модель выполняет только декодирование: она не кодирует аудио в токены, не выравнивает задержанные потоки и требует коды в ожидаемом порядке. На низком битрейте возможны модуляция фонового шума и шипение; декодирование стохастическое, но повторяемо при фиксированном seed.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

SNAC 24 kHz (decoder)

Multi-Scale Neural Audio Codec at 24 kHz, decode half, exported for loom.cpp. Family 11: codec tokens in, a waveform out -- and the first with its codebooks at different frame rates.

This is a loom.cpp export: a single self-describing GGUF that carries its own graph topologies, tokenizer (if any) and driver script, produced by loom-exporter.

Original model

Exported from hubertsiuzdak/snac_24khz. Weights are unmodified; this repo packages the same parameters into loom.cpp's GGUF format.

License

mit, inherited from the base model above.

Language(s)

(none tagged upstream)

a codec, not a language model: it carries no vocabulary and no language. The upstream repo declares license: mit on its own card, and the package (github.com/hubertsiuzdak/snac) is MIT too.

Usage

Run it with loom-py -- loom-py-rt on PyPI:

pip install -U "loom-py-rt[hub]"
import loom

model = loom.Model.from_pretrained("loom-ai-org/snac-24khz-loom")

# The geometry a caller needs, declared by the file rather than looked up in a paper:
n_codebooks = model.hparam("codec.n_codebooks")       # code streams per frame
codebook_size = model.hparam("codec.codebook_size")   # valid id range per stream
frame_rate = model.hparam("codec.frame_rate", "f32")  # codes per second
print(n_codebooks, codebook_size, frame_rate, model.contract["sample_rate"])

# Codes are FRAME-MAJOR: all `n_codebooks` codes for frame 0, then frame 1, and so on. This file
# is the DECODE half -- real codes come from the matching encoder, or an AR model that emits them.
frames = round(frame_rate)                            # one second of audio
codes = [[0] * n_codebooks for _ in range(frames)]
audio = model.codes2speech.infer(codes)
print(len(audio), "samples at", audio.sample_rate, "Hz =", round(audio.duration, 3), "s")
audio.save("out.wav")

# A flat list works too, and is what a driver that emitted the codes hands over. One that is not a
# whole number of frames is refused rather than reinterpreted at a different width.
audio = model.codes2speech.infer([0] * (frames * n_codebooks))

The layer underneath

The call above is the high-level door: one per task, named for the modality pair it maps between, with the windowing, sampling and assembly this model needs already applied. Under it, model.infer(...) passes your arguments straight to the driver this GGUF embeds -- which is where you go for a knob the door does not name.

model.driver_source prints that driver, including a header comment documenting every argument it accepts for this model, and is the authority on it. See loom-py for the API and loom.cpp for what the engine does between the two.

Known limitations

This is the DECODE half only. encode is audio-in/codes-out -- a different contract with a different modality pair -- and no model that decodes through this codec ever calls it, so exporting it would be weight in the file for a door nothing opens. To go the other way, use the upstream checkpoint.

A row is one COARSEST frame, and it is 7 ids wide. SNAC's three codebooks run at different rates -- vq_strides [4, 2, 1], so codebook 0 emits one code where codebook 2 emits four -- and the flat frame-major layout this file takes is one row per coarsest frame at 11.72 frames per second, decoding to 2048 samples each. The 7 columns are level-major: column 0 is codebook 0, columns 1-2 are codebook 1's two sub-frames in order, columns 3-6 are codebook 2's four. An AR model that emits SNAC tokens 7 at a time (Orpheus and its relatives) may interleave them depth-first instead; rearranging them is the caller's job, as the delay pattern is.

The decode is stochastic, like the model it comes from, and it is seeded. SNAC's decoder adds randn * linear(x) at four points. A graph cannot draw that itself, so the driver draws it and passes it in -- seeded from seed= and defaulting to a fixed value, so two runs of the same codes agree unless you ask them not to:

a = model.codes2speech.infer(codes)              # the same waveform every time
b = model.codes2speech.infer(codes, seed=99)     # a different draw

Dropping the noise instead gives the mean of that distribution, which is 2.4% away in relative RMS and measurably duller up high; this file does not do that.

Its noise floor is reconstructed, not reproduced. At 0.98 kbps a steady background hiss in the source comes back slightly modulated -- audible as a slow wave under quiet passages. That is the upstream model's own behaviour at this bitrate, present in the reference decoder too, and not something the export introduces.

It does not undo a delay pattern. An AR model that emits these codes typically offsets stream k by k steps; realigning them is a property of that model, not of the codec, so feed it aligned codes.

Files

  • snac-24khz.gguf -- the model, exported with loom-exporter.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · loom-py-rt

Нельзя запустить

GGUF-веса поддерживаются только для текстовых LLM (llama.cpp).

Ревизия весов
fa8c0de

0 моделей