VAD Edge Quantization
Детекция речевой активности

kiloVAD: 2.1k параметров для причинного VAD на краю

AUC 0.850

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 contextTotal contextAUC AVAПричинная оценка
kiloVAD full81.1k200 мс200 мс0.862да
kiloVAD pruned2.1k200 мс200 мс0.850да
MarbleNet91k630 мс630 мс0.850да
AtomicVAD0.3k630 мс630 мс0.869да
TinyVAD11.6k630 мс1181 мс0.864нет

Как это читать: AtomicVAD меньше по параметрам, но требует 630 мс контекста и нестандартной активации; TinyVAD дает неплохую AUC, но в некаузальном режиме. kiloVAD хуже лучших цифр по AUC, зато лучше соответствует реальному always-on контуру.

Оригинальная статья на arXiv