kiloVAD: 2.1k параметров для причинного VAD на краю
kiloVAD нацелен на всегда включенные устройства, где детектор речевой активности должен быть маленьким, причинным и совместимым с обычными embedded-операциями. Авторы сознательно избегают learnable filterbanks, recurrent layers и некаузального сглаживания, оставляя стандартные Mel-признаки и CNN-слои. Главный вклад - не максимальная AUC любой ценой, а полезный компромисс между задержкой, переносимостью и числом параметров.
Метод. Модель использует 200 мс входного контекста, frame-level causal inference и настраиваемые spectral/context параметры. Сжатие делается через per-layer structured pruning: разные слои получают разные коэффициенты pruning, а качество восстанавливается self-distillation от непорезанной модели. Для дальнейшего сжатия авторы вводят angle-aware self-distilling QAT, который лучше стандартного STE-QAT в INT4-режиме.
Результаты. Полная kiloVAD имеет 81.1k параметров и дает 0.862 AUC на AVA-Speech при 200 мс контекста. Pruned-вариант оставляет 2.1k параметров, 44k MACs на inference и получает 0.850 AUC, то есть почти не уступает полной версии. При этом он сохраняет TFLM-compatible операции и причинную оценку; для сравнения MarbleNet имеет 91k параметров и такой же AUC 0.850, но не проходит низколатентное требование авторов.
Ограничения. Сравнение с предыдущими работами не полностью прямое: часть моделей использует другой фронтенд, некаузальное окно или сырой звук вместо Mel. У aggressive pruning есть нестабильность: 2 из 10 seed в 2.1k-конфигурации collapsed. Кроме того, статья оценивает frame-level AUC/F1, но не дает энергопрофиля на реальном микроконтроллере.
Фишка из статьи. Интересна таблица требований, потому что она показывает, почему меньшая модель не всегда лучше для edge-deploy: важны не только параметры, но и поддерживаемые операции, causal eval и реальная задержка.
| Модель | Параметры | Input context | Total context | AUC AVA | Причинная оценка |
|---|---|---|---|---|---|
| kiloVAD full | 81.1k | 200 мс | 200 мс | 0.862 | да |
| kiloVAD pruned | 2.1k | 200 мс | 200 мс | 0.850 | да |
| MarbleNet | 91k | 630 мс | 630 мс | 0.850 | да |
| AtomicVAD | 0.3k | 630 мс | 630 мс | 0.869 | да |
| TinyVAD | 11.6k | 630 мс | 1181 мс | 0.864 | нет |
Как это читать: AtomicVAD меньше по параметрам, но требует 630 мс контекста и нестандартной активации; TinyVAD дает неплохую AUC, но в некаузальном режиме. kiloVAD хуже лучших цифр по AUC, зато лучше соответствует реальному always-on контуру.