Привет. Ищу полезную инфу, подсказки или критику. Есть проект по

ASR. На данных заказчика обкатали несколько SOTA ASR моделек, лучше всего себя показал Whisper Large V2.

Из того, что понравилось — работает на слегка шумноватом домене телефонных переговоров, отлично подхватывает даже доменноспецифическую лексику и сокращения, неплохо расставляет пунктуацию, точки, кейс.

Однако всё же есть примеры неидеальной работы на тех же фамилиях и именах сотрудников компании, внутренних названиях и наименованиях, все же некоторых специфических терминах.

Текущие условия:
⁃ Имена и фамилии сотрудников можно запросить
⁃ Можно также запросить некоторый набор терминов и внутренних топонимов/названий, которыми они оперируют в диалогах
⁃ Самими же диалогами компания делится неохотно из-за всяких заморочек на прайваси. В лучшем случае ожидаю, что дадут не более 100 часов, а то и поменьше
⁃ У нас убермало компьюта, в распоряжении буквально пара 2080 ti и одна 3090 ti

Чего бы хотелось в идеале:
⁃ Сохранить текущий перформанс Whisper Large V2, но улучшить его работу на вышеуказанных словах
⁃ В ближайшем будущем переехать на более легковесное решение, которое бы работало быстро (<1 xRT) и хорошо скейлилось на серверных CPU типа XEON

Сейчас смотрим в сторону прикрутки чего-то к декодированию:
⁃ LM-fusion подходы
⁃ Seq2Seq исправление в духе spell-correction поверх K-гипотез от Whisper
⁃ Файнтюнинг Whisper от Medium до того самого Large V2 (если заказчик насыпет данных всё-таки)
⁃ Потенциально (но пока не хотелось бы) переход на другие архитектуры

От перехода отталкивает то, что предобучать что-то самим у нас буквально нет компьюта, а большинство доступных предобученных ASR не кейс-сенсетив, не умеют в пунктуацию и нормализацию. На сколько нам нужна пунктуация мы пока выясняем, но вау-эффект от хорошо оформленных транскрипций у бизнеса уже был и назад этот фарш не провернуть…

Возможно, это не такая уж проблема, и на самом деле можно было бы делать пайплайн с нормализацией отдельно, но пока мы не можем оценить насколько это направление сложнее. Короче бизнес сложно будет убедить идти туда, когда Whisper Large V2 работает «почти идеально».

Собственно, вопросы:
1. Пробовали ли вы как-то комбинировать E2E-ASR (в идеале с Whisper) с отдельной LM, можете поделиться статьями, кодом, идеями, инсайтами, мб какими-то личными наработками?
2. Как бы вы решали задачу улучшения существующей ASR-системы, когда параллельных данных очень мало и/или нет совсем (но есть голден-сеты и отдельно тексты)?
3. Что бы вы в целом посоветовали при обучении/файнтюниге Whisper под свой домен, какой был опыт и результаты у вас?
4. Какие другие архитектуры вы могли бы порекомендовать в условиях данной задачи?

У команды толком нет опыта с ASR, мы просто ML-инженеры/оркестры, поэтому сейчас только погружаемся в задачу. Также мы пока только пытаемся заформализовать требования/оценки и направления работы, поэтому какие-то ограничения возможно удастся снять в диалоге с бизнесом, если они будут блокировать реализацию проекта.

В общем, если более опытные ребята натолкнут на полезные мысли, буду очень признателен. Заранее спасибо!

9 ответов

60 просмотров
Oleg-Pavlovich Автор вопроса

Спасибо за ответ! Идея дообучать модель поменьше для тестов нравится. Если будем файнтюнить, пойдем по такому пути скорее всего. Насчёт того, что в Whisper уже есть LM, я понимаю, просто хотелось уточнить имеет ли при этом смысл накрутить другую LM и/или иной алгоритм для рескоринга гипотез. Просто кажется, если впрягаться в декодирование, то можно что-то выжать даже имея тупо список терминов. А вот для файнтюнинга он будет бесполезен.

2. Whisper это state-of-the-art (ну или рядом) система. Чтобы её доучить, надо будет много данных и много компьюта. файнтьюниться спокойно и на малых данных. и не надо даже много компьютеров. поэтому я бы предложил сперва собрать датасет на данных клиента и на них дообучить поменьше модели

Oleg-Pavlovich Автор вопроса
Aigiz K
2. Whisper это state-of-the-art (ну или рядом) сис...

Если сговоримся с заказчиком, конечно будем пробовать. А можно какие-то цифры для оценки, если не секрет? На скольких часах файнтюнились, что получилось добиться по метрикам?

Oleg Pavlovich
Если сговоримся с заказчиком, конечно будем пробов...

вообще чем больше данных, тем качество будет лучше. я с 250 часами small и медиум обучил. для самой маленькой результат был плохой, подозреваю что из за малого количества данных. но язык у меня башкирский, язык проще для asr. wer где то 14%

Oleg-Pavlovich Автор вопроса

Круто, спасибо! А башкирский был в претрейне у него? Полагаю что нет, но если да, интересно ещё какой был WER до файнтюна?

Oleg Pavlovich
Круто, спасибо! А башкирский был в претрейне у нег...

его не было совсем. но там есть родственные языки типа турецкий, казахский

Oleg-Pavlovich Автор вопроса
Aigiz K
его не было совсем. но там есть родственные языки ...

понял, спасибо большое ещё раз за ответы! полезно

у немо тоже есть модель с пунктуацией и капитализацией https://huggingface.co/nvidia/stt_ru_fastconformer_hybrid_large_pc

Oleg-Pavlovich Автор вопроса

Похожие вопросы

Обсуждают сегодня

Так а кто может спарсить всех участников чата? Идишники
Magic
18
да пофиг на капчу зашел в чат и молчишь при этом ты нонейм? пошел вон
Magic
17
Гайз, а как отправлять с вейпора пуши на андроид? ) Меня вот осенило )))
Serg
7
Все еще ржу с mov ax, 0xA000 ; graphic segment ?? mov gs, ax
Berkus Decker
4
Как думаете, будут макбуки на WWDC?
Dmytro
6
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
Включил эту опцию. Осталось два варнинга из всех (все одинаковые - a term is constructed, but never used) lager:warning("~p is not a map (~s:~s:~s)", [Body, Class, Sub, Type]...
Δημήτηρ
3
Нужно магазин с тильды на опен кат перенести Есть кто умеет? В лс
Magic
6
Карта сайта