CoolFace
Modelpublic

tdavron/gigaam-v3-ctc-qnn-sm8650

sourceHugging Facemitupdated 4d agoView on Hugging Face
0likes
Model Card

GigaAM v3 CTC — QNN context binary для Snapdragon 8 Gen 3 (SM8650)

Русская модель распознавания речи GigaAM v3 CTC (salute-developers/GigaAM), собранная в context binary Qualcomm QNN для NPU (Hexagon HTP v75). Используется приложением MobileASR (on-device ASR на Android) как движок NPU; на других SoC приложение работает на CPU-модели `csukuangfj/sherpa-onnx-nemo-ctc-giga-am-v3-russian-2025-12-16`.

Файлы

ФайлНазначение
giga-ctc.binQNN context binary, граф encoder (энкодер Conformer + CTC-голова, log_softmax)
tokens.txt33 буквы + <blk> (34 класса); побайтно совпадает с tokens.txt CPU-модели sherpa-onnx
export_gigaam_qnn.pyэкспорт GigaAM v3 CTC в ONNX фиксированной длины
gigaam-qnn.patchпатч sherpa-onnx v1.13.8: признаки GigaAM в QNN-ветке nemo_ctc
htp_config.jsonконфиг HTP для qnn-context-binary-generator
LICENSEлицензия MIT исходной модели GigaAM

giga-ctc.bin: 490 168 320 Б, SHA256 428b8a1994104c482838757644809205c91e80f8a68484bb649aa2d263782019. tokens.txt: SHA256 17cc514451bcceac9c280068c71502f8448f99e9fb1456b8d0761651fd0392f2.

Параметры

  • —Только SM8650 (Snapdragon 8 Gen 3, soc_id 57, HTP v75). Context binary привязан к SoC и версии QNN; на других чипах не загрузится.
  • —QAIRT / QNN 2.40.0.251030 (build id v2.40.0.251030114326_189385). Рантайм QNN на устройстве должен быть той же версии.
  • —Точность FP16 (qnn-onnx-converter --float_bitwidth 16), без квантования.
  • —Вход x: [1, 3000, 64] float32 — 64 log-mel признака, 3000 кадров (бакет 30 с, шаг 10 мс). Короткие куски дополняются нулями до 3000 кадров.
  • —Выход log_probs: [1, 750, 34] (сабсэмплинг ×4).
  • —RTF на SM8650 ≈ 0,09 (8 записей, 81 с аудио).

Требования к рантайму

Штатная QNN-ветка nemo_ctc в sherpa-onnx написана под NeMo-parakeet (librosa-признаки + per_feature-нормализация) и для GigaAM даёт неверный текст. Нужен sherpa-onnx v1.13.8 с патчем gigaam-qnn.patch (sherpa-onnx/csrc/qnn/offline-recognizer-parakeet-ctc-qnn-impl.h):

  • —GigaAM узнаётся по FeatDim() == 64;
  • —признаки как у CPU-пути GigaAM: high_freq 8000, preemph 0, окно Ханна, round_to_power_of_two=false, без нормализации;
  • —выход обрезается до реальных кадров, чтобы паддинг не попадал в CTC-декод.

Сборка: SHERPA_ONNX_ENABLE_QNN=ON, запуск с --provider=qnn и --nemo-ctc.qnn-context-binary=giga-ctc.bin (плюс пути к libQnnHtp.so, libQnnSystem.so).

Как собрано

  1. 1.python export_gigaam_qnn.py 3000 — пакет gigaam (ветка main), модель v3_ctc; ONNX FP32 с входом [1, 64, 3000].
  2. 2.qnn-onnx-converter --float_bitwidth 16 → qnn-model-lib-generator (x8664-linux-clang) → `qnn-context-binary-generator` с `htpconfig.json (SM8650, v75, vtcm_mb` 8, O3).

При batch = 1 энкодер GigaAM не строит маску внимания, поэтому кадры паддинга в неё попадают. Проверка на CPU (PyTorch): с нулевым паддингом до 3000 кадров текст практически совпадает с распознаванием без паддинга.

Лицензия

Веса — производная от GigaAM (MIT, © 2024 GigaChat Team, см. LICENSE). Context binary собран инструментами Qualcomm AI Runtime SDK; рантайм QNN распространяется Qualcomm на своих условиях и в этот репозиторий не входит.