Сейчас для всех желающих доступны два наших сервиса для распознавания речи:
- Бот в телеграме для коротких и не очень длинных аудио (мы не стали обходить ограничения телеграма, основная задача бота — распознавать голосовые сообщения);
- Сервис audio-v-text.silero.ai для более длинных аудио, в котором можно скачать отчет в виде эксельки.
Сервис написан нашими собственными силами, работает на нашем собственном движке распознавания речи, без проксирования во внешние сервисы и с минимально возможным количеством зависимостей. В случае нарушения связности возможен оперативный перевод хостинга в другие регионы.
Мы провели и продолжаем работу над ошибками и внесли ряд улучшений для пользователей, о которых мы бы хотели рассказать.
Улучшения для пользователей
- Если бот уже давно выдает текст со знаками препинания и заглавными буквами, то в сервис audio-v-text.silero.ai на сайте мы это только-только завезли;
- Точно так же в бота мы добавили обработку двух популярных форматов:
.m4a
и.aac
, которые в веб-сервисе мы обрабатывали с самого начала; - Достаточно давно мы пофиксили более серьезную проблему с отсылкой писем в случае проблем и падений;
- Поддержка зоопарка форматов даже с наличием нормальных библиотек, которые пытаются все это решить за вас, все равно приводит к разного рода неприятным краевым случаям. Поэтому под капотом мы поменяли библиотеки на более простые, удачные и универсальные и упростили логику обработки файлов. Проблем для пользователей стало меньше, как и проблем по поддержке для нас.
С какими проблемами пришлось столкнуться за кулисами
- Пользователи Apple часто присылали аудио с расширением, которое не соответствует содержимому, а в содержимом
audio/m4a
; - Пользователи в целом указывают домен аудио неохотно (1/3 запросов);
- Вообще борьба с файлами, где используемый кодек, расширение и mime-тип в телеграме не соответствуют друг другу — это основная причина страданий. Основная фишка тут состоит в том, что во избежание паразитной нагрузки и лишнего трафика, нужно по сути 3 раза фильтровать файлы, каждый раз сужая воронку, иногда креативно подходя к проверкам файлов;
- Наши письма с отчетами попадают во вкладку "Промоакции"/"Promotions" в фильтрах гугла, и пользователи думают, что письмо не пришло. Это якобы лечится "большей персонализацией" письма ("Привет, %{Username}!"), но пока руки до этого не дошли;
- Ряд проблем с обработкой "особенных" сообщений телеграма, таких как альбомы с музыкой или сообщений, куда аудио как бы "встроены";
- Работа над стабильностью и зависаниями самого бота и его очередей (для ускорения разработки мы выбрали высокоуровневые очереди, что имело свою цену в виде более сложной отладки);
- В процессе разработки нового функционала и фич, мы отловили некоторое количество багов и проблем в своем бекенде и различных АПИ (и на самом деле этим и прекрасны эти боты);
- Пришлось поднастроить ряд правил мониторинга серверов, чтобы удалось совсем "забыть" про бота;
Обратная связь пользователей
В целом мы получили несколько десятков положительных отзывов от пользователей виде личных сообщений в телеграме и почте. Также когда что-то ломается затягивается выкатываение новых фич (последние разы мы уже сами ломали сервисы, а не оно само ломалось), пользователи помогают тем, что сразу пишут в телеграм или на почту.
Также мы слышали энное количество разных запросов на новые фичи (в основном люди конечно жаловались на неработающие форматы или на ошибки), но больше всего люди упоминали возможность выключить метки времени в распознанном тексте. Это в принципе означает необходимость "кастомизации" бота под каждого пользователя. И хотя такая возможность нами была заложена в рамках заведения капчи, мы решили пока оставить бота максимально простым, не требующим настроек.
Приватность пользователей
Нам несколько раз задавали такой вопрос. Мы не храним имена, фамилии, персональные данные пользователей сервиса — хотя бы по той простой причине, что мы к ним просто не имеем доступа и они нам не нужны. Телеграм отдает весьма ограниченные данные (и мы храним только ID групп и пользователей).
Мы не собираем эти данные для перепродажи их инвесторам и третьим лицам. Мы вообще не считаем бот коммерческим продуктом.
С другой стороны, чтобы распознавать аудио в группе, бот должен иметь к ним доступ. Мы фильтруем все сообщения в группах на предмет наличия нужных нам форматов аудио, и только их скачиваем и потом распознаем.
Немного статистики
Тут сразу нужно опредилиться с понятиями. Поскольку аудио могут быть сколь угодно длинными или короткими — одним запросом мы считаем непрерывный поток речи внутри аудио. Обычно до 7 — 15 секунд. Также мы не сразу стали вести статистику по сессиям и группам в телеграме, плюс был пробел в статистике на несколько дней.
Из графиков могу сделать три вывода:
- У бота и сервиса случился небольшой хабра-эффект в начале, потом понятно остались только долгосрочные пользователи;
- Популярность бота и сервиса примерно одинакова, если измерять таким методом;
- Виден плавный тренд роста популярности по группам.
В заключение
Хотим добавить, что мы не паникуем, продолжаем работу и остаемся людьми, чего и вам желаем.
Комментарии (15)
andreykour
03.03.2022 14:38только онлайн?
nurtdinovadf Автор
03.03.2022 14:44Можете уточнить свой вопрос?
andreykour
03.03.2022 14:45+1офлайн решений не предполагаете? на уровне библиотек
snakers4
03.03.2022 14:48+7На уровне библиотек у нас есть проекты:
В первом как раз недавно сделали
pip
пакет
AigizK
03.03.2022 17:27+1Не сравнивал с моделями на базе facebook/wav2vec2-xls-r например https://huggingface.co/jonatasgrosman/wav2vec2-xls-r-1b-russian ?
Test WER на Common Voice = 9.820 без LM
Судя по картинкам они показывают результат выше, чем у тебя:
Для башкирского я смог получить 4.4 с LM. А для тайского вроде, вообще 0.95 получили. Очень дружелюбная моделька, единственное занимает много памяти.
snakers4
03.03.2022 19:09+1Нет, не сравнивал.
Эти решения в любом случае не являются поддерживаемыми и продуктовыми. Даже если получится это как-то крутить с вменяемой скоростью (вероятно только на GPU), то кост поддержки и репликации таких решений не вписывается в разумные рамки (статьи пишут про 16, 32 или более видеокарт по типу A100 / V100).
Обычно такие тесты делают на базе модели, для репликации которой нужно огромное количество ресурсов, которая потом оверфитится на нескольких маленьких датасетах, чтобы показать хорошие метрики. И никто не делает OOD тесты.
На практике лучше вложить ресурсы в сбор и разметку данных. И в свете последних событий опираться на гигантские модели кажется не очень интересным.
AigizK
04.03.2022 07:59+1Запускаю на CPU. Скорость распознавания x2. Но моя модель натренирована на базе маленькой модели. Занимает 1.12Gb
snakers4
04.03.2022 08:20+1Наши маленькие продовые модели для CPU… имеют скорость от x30 до x50.
Понятно, что в реальной жизни на это много чего накладывается, но тем не менее.
priwelec
04.03.2022 20:51Стало интересно опробовать сервис на музыкальной композиции, песне, то есть.
Распознало от всего текста весьма выборочно, процентов 15-20, правильно — только отдельные слова.
snakers4
Для сервиса распознавания коротких аудио это не проблема, но для длинных файлов скорость распознавания на 1 воркере примерно в 5x от риалтайма на 1 поток кажется чуть низкой (в идеале без капитализации на сихронном АПИ в 1 поток у нас 10x), но мы рано или поздно решим за кулисами и этот вопрос именно для длинных файлов.
Понятно, что нагрузкой легко управлять меняя число воркеров.
AigizK
Можешь посмотреть, как HuggingFace решил эту проблему у себя. Качество в итоге чуть-чуть падает. Но зато можно не париться по поводу времени обработки https://huggingface.co/blog/asr-chunking