VibeVoice-ASR-BitNet: распознавание речи на CPU с 1.58 ГБ
VibeVoice-ASR-BitNet интересна как инженерный отчет о том, как довести LLM-подобное распознавание речи до реального времени на обычном CPU. Авторы не просто квантуют всю модель одним способом, а разделяют узкие места: акустический VAE-токенизатор получает полный INT8-путь, а языковой декодер - ternary BitNet-веса. Главный результат - модель весом около 1.58 ГБ, которая выходит на RTF ниже 1 уже с 3 потоками CPU.
Метод. В обычной CPU-квантизации легко упереться либо в память активаций, либо в чтение весов. Здесь VAE-токенизатор переводится в I8_S: веса, активации, буферы и границы операторов остаются INT8, плюс используются fused-операторы и SIMD. Декодер заменяется на Qwen2.5-1.5B с I2_S ternary-весами; это уменьшает поток чтения весов, а progressive QAT с постепенным смешиванием квантизованного пути нужен, потому что прямой QAT в статье не сходился.
Результаты. Размер системы падает с 4.62 ГБ FP16 до 1.58 ГБ: VAE 1.31->0.65 ГБ, декодер 3.32->0.92 ГБ. На 20-секундном аудио RTF равен 1.98 на 1 потоке, 1.08 на 2 потоках, 0.77 на 3 потоках, 0.63 на 4 потоках и 0.42 на 8 потоках. По точности сжатие стоит умеренно: например, Libri-clean WER 2.41 против 2.17 у VibeVoice-ASR-7B, AMI-sdm 25.87 против 24.18, VoxPopuli 5.18 против 4.92.
Ограничения. Это offline batch-вывод, а потоковый режим с chunked VAE encoding и incremental LM decoding оставлен на будущее. Подход проверен только на архитектуре VibeVoice-ASR, поэтому перенос на Whisper-подобные или Qwen-Audio-подобные системы не доказан. Также сравнение с Whisper.cpp делается на одном 20-секундном клипе, а не на полном наборе задержек и железа.
Фишка из статьи. Самый показательный блок - не WER, а таблица RTF: после 3 потоков модель впервые проходит границу реального времени, а дальнейшее ускорение уже дает запас для менее стабильных CPU.
| Длина аудио | 1 поток | 2 потока | 3 потока | 4 потока | 8 потоков |
|---|---|---|---|---|---|
| 5 с | 2.11 | 1.22 | 0.89 | 0.76 | 0.54 |
| 10 с | 2.05 | 1.13 | 0.82 | 0.69 | 0.47 |
| 20 с | 1.98 | 1.08 | 0.77 | 0.63 | 0.42 |
| 40 с | 1.96 | 1.05 | 0.76 | 0.61 | 0.41 |
Как это читать: RTF меньше 1 означает быстрее реального времени. Поэтому 3 потока - практический порог для локального распознавания, а 1-2 потока показывают, что модель все еще тяжела для совсем малых CPU-бюджетов.