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

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 ответов

119 просмотров
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 Автор вопроса

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

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

Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
А в каком формате фреймы? Сам формат сейчас придумываешь, или что-то готовое нужно распарсить?
Okhsunrog
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Карта сайта