Сравнение Vosk и faster-whisper
Доклад Антона Полднева "Как меняется разработка на серверной стороне AI-технологий". Исходный трек 1: 00:12:00–00:30:20; длительность вырезки 18:20. Все временные метки субтитров отсчитываются от начала вырезки.
| Параметр | Vosk | faster-whisper |
|---|---|---|
| Модель | data/models/vosk-model-ru-0.42 | small |
| Версия | 0.3.45 | 1.2.1 |
| Загрузка модели, с | 154.72 | 1.30 |
| Распознавание, с | 324.28 | 277.57 |
| RTF | 0.295 | 0.252 |
| Пиковый RSS, МиБ | 7025 | 1523 |
RTF = время распознавания / длительность аудио. Чем меньше, тем быстрее. Замеры сделаны на CPU Ryzen 7 7730U; загрузки видео и модели выполнялись одновременно с faster-whisper, поэтому это замер данного запуска, а не строгий изолированный бенчмарк. Vosk и faster-whisper работают с одним PCM mono 16 кГц / 16-bit файлом. Постобработка текста и подсказки словаря не применяются. faster-whisper: int8, 8 CPU threads, beam=5, language=ru, temperature=0, VAD, word timestamps; Vosk: SetWords(True), без grammar.
Точность
Проверенного человеком эталона пока нет. WER/CER не измерены. Нельзя считать один распознаватель эталоном для другого. Контрольные фрагменты заданы до просмотра результатов: 00:45–01:15, 06:00–06:30 и 14:00–14:30 (90 секунд суммарно).
Доля расхождения на всём докладе: 23.2%. Это расстояние редактирования между двумя транскриптами, делённое на число слов в более длинном; оно не означает процент ошибок любого из движков.
Большая Vosk работает с исходными CARPA/RNNLM. Для предотвращения OOM выделения от 1 ГиБ размещены в mmap-файлах на SSD локальным scripts/file_heap.c. Файлы модели и арифметика не менялись. Тесты выделения, выравнивания, calloc, realloc и освобождения прошли. Замер времени Vosk включает влияние SSD; он не характеризует чистую скорость модели в RAM. Фоновая проверка видео тоже выполнялась одновременно.
Практическое сравнение
Сравниваются конкретные модели, указанные в таблице выше. Результат Vosk small сохранён отдельно в data/subtitles/vosk-small и reports/comparison-small.md; он не подменяет результат большой модели.
faster-whisper автоматически сохраняет регистр и пунктуацию. Vosk выдаёт текст в нижнем регистре без пунктуации; внешнее восстановление пунктуации не применялось.
Ниже показаны исходные тексты на одинаковых контрольных интервалах. Расхождения позволяют находить спорные места; точные ошибки распознавания определяются только сравнением с проверенным по звуку эталоном.
Вывод по контрольным текстам
Для дальнейшей редакторской подготовки faster-whisper small даёт более удобный черновик: автоматически оформляет пунктуацию и лучше сохраняет часть технических выражений. В интервале 360–390 с он содержит «двухбашенные нейросети» и «скор», тогда как большая Vosk выдаёт «с башенной и нейросети» и «скорость». На слайде 365 с явно указано score; совпадение с контекстом слайда поддерживает эту оценку, но не заменяет прослушивание.
Большая Vosk тоже сохраняет некоторые слова лучше: на интервале 840–870 с она содержит «нейросетке», а faster-whisper — «не рассетки». В том же интервале оба результата искажают профессиональную лексику: «регистратор» / «архистратор», «обрела билете» / «обзеврабилить». Оба варианта нуждаются в ручной проверке.
Расхождение большой Vosk и faster-whisper равно 23,2%; в дополнительном запуске маленькой Vosk оно было 33,8%. Это показатель согласованности текстов, а не доказанная ошибка распознавания. Точного WER/CER без проверенного по звуку эталона нет. Нельзя делать вывод обо всей точности движков по трём фрагментам.
Фрагмент 1: 45–75 с
Аудио: sample-1.mp3
vosk: тренд агент разработки немного поговорим вот вы наверняка пишете тесты я уверен да и начну хочется же чтобы продакшн код выдал хорошем состоянии богине пронизали а что если мы будем говорить не про конкретный код который в продакшене работает а про ваш агент на пайплайны вот например хочется ревьювить код тоже с помощью агентов да и вы собираете такой пайплайн агентного кодревью у вас там есть некоторая базовая модель какие-то скилы какие-то критики а что если вы захотите поменять базовую модель на какое-то более продвинутое или если вы
faster-whisper: тренды агентной разработки немного поговорим. Вот вы наверняка пишете тесты, я уверен. Хочется, чтобы в продакшенном код попадал в хорошем стейне и баги не пролезали. А что, если мы будем говорить не про конкретный код, который в продакшене работает, Это про ваши агентные пайплайны. Вот, например, хочется ревьюить код тоже с помощью агентов. Да, и вы собираете такой пайплайн агентного код -ревью. У вас там есть некоторые базовые модель, какие -то скилы, какие -то критики. А что, если вы захотите поменять базовую модель на какую -то более продвинутую? Или если вы
Фрагмент 2: 360–390 с
Аудио: sample-2.mp3
vosk: функции теряете туда это самое ну буквально бинарный файл запускайте получайте скорость третьего ранжирования все ни о чем думать не нужно красота дальше модель активно развивались повелись нейросети и в частности очень популярны в реку для всех моделях с башенной и нейросети история такая вот у вас есть допустим пользователь и документ и вы хотите оценить вероятность например с какой вероятностью этому пользователю этот документ полезен или есть пользователь и товар с какой вероятностью это полисы товар купят но опять же какой-то
faster-whisper: функцию, берёте туда это буквально бинарный файл, запускаете, получаете скор, скор берёте вранжирование, всё, ни о чём думать не нужно, красота. Дальше модели активно развивались, появились нейросети и в частности очень популярные в рекомендательных моделях двухбашенные нейросети. История такая, вот у вас есть, допустим, пользователь и документ. И вы хотите оценить вероятность, например, с какой вероятностью этому пользователю и документ полезен. Или есть пользователь и товар, с какой вероятностью это полиция, это товар купит. Опять же, какой -то
Фрагмент 3: 840–870 с
Аудио: sample-3.mp3
vosk: знаю такая важная продуктовые фича с одной стороны с другой стороны когда есть некто регистратор который понимает часто на нас дату вызвать такой то тут с такими-то аргументами тоже чем раньше он про это узнал из ответа нейросетке тем лучше поэтому вот на всех этапах этого графа важен стриминг ну и понятно надо следить за эффективностью все системы как-то умно балансировать нужно какой-то обрела билете слой чтобы смотреть на трусы и дебаты что там происходило короче да вы не фоткайте там сейчас доклад про это будет в этом же зале
faster-whisper: важная продуктовая вещь, с одной стороны, с другой стороны, когда есть некоторый архистратор, который понимает, что надо вызвать такой -то тул с такими -то аргументами, то же, чем раньше он про это узнал, из ответа не рассетки, тем лучше. Поэтому вот на всех этапах этого графа важен стриминг. Ну и понятно, надо следить за эффективностью всей этой системы, как -то умно балансировать, нужно какой -то обзеврабилить слой, чтобы смотреть на тресы и дебазжить, что там происходило. Короче, да вы не фоткайте там сейчас это будет в этом же зале.
Как получить WER/CER
Прослушать три MP3 из data/reference, внести дословный текст в data/reference/reference.json и поставить verified_by_human=true только для проверенных фрагментов. Выполнить .venv/bin/python scripts/compare.py. Полученные показатели относятся к этим 90 секундам, а не автоматически ко всему докладу.
Источники: конференция (источник: https://events.yandex.ru/events/yaprobackend), модели Vosk (источник: https://alphacephei.com/vosk/models), faster-whisper (источник: https://github.com/SYSTRAN/faster-whisper).