Мы дообучили распознаватель на своих записях

Распознаватель в приложении — Parakeet от NVIDIA. Он хорош и без доработок, но ошибается именно на том, что мы диктуем: названия продуктов, английские слова посреди русской речи, числа. Поэтому мы доучили его на записях, которые сделали сами. Вот что получилось.

Что мы сделали

Дообучение — это когда берут готовую модель и продолжают её учить на новом материале. Мы делали это на Маке, без арендованных видеокарт. В модели около 627 миллионов параметров, один проход по примерно 80 минутам звука занимает около 12 минут.

Записи наши: несколько человек читали вслух сотни фраз, в том числе фразы-ловушки. Например, «сафари-парк», который модель любит писать как «Safari Park», и предложения, набитые числами.

Какая рецептура победила

Мы сравнили варианты на двух людях, которых модель не слышала, по 100 новых фраз у каждого. Ошибок на сто слов, меньше — лучше:

Вариант Ошибок
Parakeet в том виде, как его выпускает NVIDIA 40,1
Наша прошлая версия 22,4
Смесь с исходной моделью 0,4 25,0
Смесь с исходной моделью 0,6 22,8
Без смеси 19,5
Искажённый звук, смесь 0,6 21,7
Искажённый звук, без смеси 18,2

Победил последний вариант: на 4,2 пункта лучше прошлой версии.

Две идеи стоит объяснить. «Искажённый звук» значит, что при обучении мы добавляем к записям эхо комнаты и другую порчу, чтобы модель привыкла к настоящим помещениям. «Смесь» значит, что дообученную модель усредняют с исходной, чтобы она не забыла прежнее. Какое-то время мы брали смесь 0,6, и она оказалась вредной. Её подобрали на одном голосе и на первом наборе фраз, где мало трудных случаев. Когда мы добавили второй набор, где ловушек и чисел вдвое больше, смесь только отнимала выигрыш.

Что не помогло

Больше данных того же вида. Три версии, обученные на всё большем объёме, показали одинаковый результат в пределах шума. Новые фразы от тех же людей тоже не помогли, как и сильные искажения: они оказались хуже умеренных. Помогают новые голоса и верная рецептура.

Как мы меряем

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

Дообученная модель лежит на cdn.verbaide.com, и приложение берёт её оттуда. Сегодня: с 24 сентября приложение спрашивает, прежде чем ставить новую версию. Подробнее — про языки и модели.

Ещё из блога