# Phonon-2 в ONNX: три варианта локального распознавания речи на CPU

Источник: https://modelium.tech/zhurnal/phonon-2-onnx-cpu-exact4x2-int8/

1 октября появилась сторонняя ONNX-конверсия англоязычной ASR-модели Phonon-2: полный FP32-граф, вариант exact4x2 с точным представлением пятиуровневых весов и более компактный, но приближённый INT8. Это новый формат уже описанной модели, а не новая базовая модель. Веса опубликованы по CC BY 4.0; заявленные автором WER и расход памяти не проверялись Modelium. Выбор варианта зависит от точности, доступного ONNX Runtime и требований к памяти при исполнении.

Phonon-2 в ONNX: что изменилось для локального ASR на CPU

1 октября 2026 года в Hugging Face создан репозиторий `tiyuvta/Phonon-2-ONNX`; к 05:03 UTC загружены три варианта энкодера, декодер, препроцессор и словарь. Это **сторонняя конверсия** модели Fermion Research Phonon-2, выпущенной ранее, а не новая модель или официальный релиз Fermion. Задача — распознавание английской речи локально, без обращения к облачному API. [s1](#src-s1) [s2](#src-s2) [s3](#src-s3)

## Что выбирать

- **FP32**: исходный ONNX-энкодер состоит из `encoder-model.onnx` и обязательного внешнего файла `encoder-model.onnx.data`; один маленький `.onnx` без `.data` не является полным пакетом. Вместе они занимают около 2,44 ГБ на диске. В отдельном файле находятся FP32-декодер и ONNX-препроцессор. [s2](#src-s2)

- **exact4x2**: `encoder-model.exact4x2.onnx` занимает 662 190 977 байт. Автор раскладывает пятиуровневые веса на две тернарные плоскости в 4-битных операциях `MatMulNBits` и заявляет совпадение выходных токенов с собственным FP32-эталоном на 82 фрагментах. Нужна сборка ONNX Runtime с contrib ops; совместимость конкретной версии и платформы лучше проверить на своих аудиофайлах. [s1](#src-s1) [s2](#src-s2)

- **INT8**: `encoder-model.int8.onnx` занимает 614 486 780 байт; квантование с потерями. На том же наборе автор сообщает совпадение токенов с FP32 на 72 из 82 фрагментов. Это вариант для проверки компромисса качества и потребления памяти, не обещание равной точности на другой речи. [s1](#src-s1) [s2](#src-s2)

Декодеры `decoder_joint-model.int8.onnx` и `.exact4x2.onnx` присутствуют под отдельными именами для выбора через `onnx-asr`, однако их содержимое и LFS-хэш совпадают с FP32-декодером: речь о вариантах энкодера, а не о трёх независимо сжатых полных моделях. Размер загрузки и RAM во время исполнения — разные показатели. [s1](#src-s1) [s2](#src-s2)

## Что на самом деле измерено

Автор карточки приводит WER 4,26% для FP32 и exact4x2, 4,35% для INT8 и измеренный расход RAM после загрузки/на пике 2,2/3,0 ГБ, 1,1/1,6 ГБ и 0,9/1,3 ГБ соответственно. Это **авторские результаты на своей конфигурации**, а не минимальные системные требования или тест Modelium. Проверка совпадения токенов охватывает 82 коротких фрагмента (73 из LibriSpeech dev-clean и девять разговорных, до 35 секунд). WER посчитан отдельно по 1150 словам с верхним регистром и без пунктуации. [s1](#src-s1)

Не сравнивайте напрямую 4,26% этой небольшой ONNX-проверки с 1,72% LS clean из карточки исходной Phonon-2: там приведён иной, полный набор и другая процедура оценки Open ASR Leaderboard. Разница не доказывает ни деградацию модели, ни равенство всех реализаций на произвольной записи. Автор сам отмечает расхождение двух CPU-режимов Fermion на 11 из 82 фрагментов. [s1](#src-s1) [s4](#src-s4)

## Как подойти к запуску

Закреплённая карточка показывает вызов `onnx_asr.load_model("nemo-conformer-tdt", "path/to/Phonon-2-ONNX", quantization="int8")`; вместо `int8` можно выбрать `exact4x2` либо не указывать квантование для FP32. Публичный код `onnx-asr` действительно содержит тип `nemo-conformer-tdt` и разрешает имена файлов с выбранным суффиксом. Файлы надо сохранить вместе, включая `config.json`, `vocab.txt` и нужный энкодер; для FP32 не забывайте внешние данные `.onnx.data`. [s1](#src-s1) [s2](#src-s2) [s5](#src-s5)

Карточка публикует также низкоуровневые входы и выходы графов для интеграции без Python. Это **контракт для собственной реализации декодирования**, а не готовый проверенный нами Rust-пакет. Для практической оценки сравните на собственных английских записях хотя бы FP32 и INT8, включая шум и длинные фрагменты: автор рекомендует делить аудио длиннее примерно 35 секунд по паузам. [s1](#src-s1)

## Права и пределы

У ONNX-конверсии метка **CC BY 4.0**; NOTICE объясняет происхождение от Fermion Research Phonon-2 и NVIDIA Parakeet TDT 0.6B v3. Исходные веса также помечены CC BY 4.0, а код Fermion — Apache 2.0; это отдельные условия, не тождественные «весь стек с открытым исходным кодом». CC BY 4.0 допускает коммерческое использование при соблюдении атрибуции и иных условий лицензии; условия данных и продукта проверяйте отдельно. [s1](#src-s1) [s3](#src-s3) [s4](#src-s4)

**Итог:** для CPU-пилота это отдельный путь к уже известной Phonon-2 через ONNX Runtime. Если важна точная передача весов относительно FP32-экспорта, сначала проверьте exact4x2 и поддержку contrib ops; если приоритет — меньший рабочий объём памяти, сравните INT8 с FP32 на вашем наборе речи. Ни скорость, ни точность в вашей среде этими цифрами не гарантированы. [s1](#src-s1)

## Источники

1. [Phonon-2 ONNX: закреплённая карточка конверсии](https://huggingface.co/tiyuvta/Phonon-2-ONNX/blob/df0802202a996b5c0574acd805968940f62a6a04/README.md) — получено 2026-10-01
2. [Hugging Face API: полный список файлов и размер pinned-ревизии](https://huggingface.co/api/models/tiyuvta/Phonon-2-ONNX/tree/df0802202a996b5c0574acd805968940f62a6a04?recursive=true&limit=100) — получено 2026-10-01
3. [NOTICE конверсии: происхождение и лицензии](https://huggingface.co/tiyuvta/Phonon-2-ONNX/blob/df0802202a996b5c0574acd805968940f62a6a04/NOTICE) — получено 2026-10-01
4. [Исходная модель Fermion Research Phonon-2 и методика результатов](https://huggingface.co/FermionResearch/Phonon-2/blob/9c7fef3584499a88fe8d394427f45851bbb8b446/README.md) — получено 2026-10-01
5. [onnx-asr: поддержка nemo-conformer-tdt и имён файлов](https://github.com/istupakov/onnx-asr/blob/675f0e68c24d846ee1775743e92d9b4ed452380e/src/onnx_asr/models/nemo.py) — получено 2026-10-01
