- Регистрация
- 23.09.18
- Сообщения
- 12.347
- Реакции
- 176
- Репутация
- 0
Автоматическое распознавание речи (STT или ASR) прошло долгий путь совершенствования и имеет довольно обширную историю. Расхожим мнением является то, что лишь огромные корпорации способны на создание более-менее работающих "общих" решений, которые будут показывать вменяемые метрики качества вне зависимости от источника данных (разные голоса, акценты, домены). Вот несколько основных причин данного заблуждения:
- Высокие требования к вычислительным мощностям;
- Большое количество данных, необходимых для обучения;
- В публикациях обычно пишут только про так называемые state-of-the-art решения, имеющие высокие показатели качества, но абсолютно непрактичные.
В данной статье мы развеем некоторые заблуждения и попробуем немного приблизить точку "сингулярности" для распознавания речи. А именно:
- Расскажем, что можно достигнуть отличного результата в рамках разумного времени, используя лишь две видеокарты NVIDIA GeForce 1080 Ti;
- На всякий случай еще раз представим датасет
You must be registered for see linksдля русского языка на 20 000 часов;
- Опишем различные подходы, позволяющие ускорить процесс тренировки STT на порядок.
В этой статье есть 3 основных блока — критика литературы и доступных инструментов, паттерны для проектирования своих решений и результаты нашей модели.
Оглавление
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
-
You must be registered for see links
-
You must be registered for see links
-
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
-
You must be registered for see links
-
You must be registered for see links
-
You must be registered for see links
-
Технологии
Для экспериментов мы выбрали PyTorch, а в качестве отправной точки для нейросети —
You must be registered for see links
.Причины выбора данного стека:
- Масштабируемость вычислительных мощностей количеством GPU;
- Простота. Python и PyTorch упрощают процесс исследования, можно сфокусироваться на самих экспериментах;
- Гибкость. Добавление новых фич не занимает много времени и усилий;
Также немаловажно, что экосистема PyTorch постепенно обрастает такими "вкусными" фичами из коробки как квантизация, деплой на мобилку, обертки и конвертеры для других языков программирования (например, C++ и JAVA).
Датасет Open STT
Ранее мы писали на Хабре об
You must be registered for see links
с более чем 20 000 часами разметки для русского языка. Этот датасет содержит бОльшую часть данных (~90%), используемых для тренировки наших моделей.Критика индустрии
Большинство научных статей, которые мы прочли, как правило, были написаны исследователями из “индустрии” (напр. Google, Baidu, и Facebook). В целом, большую часть критики статей и решений STT можно отнести к опыту исследователя в “индустрии” либо в “академии”.
Если кратко, наши основные претензии к индустрии, когда мы говорим об STT, такие:
- Создание продакшен решений на основе приватных данных, о чем в самих публикациях информации очень мало;
- Сложные фреймворки и инструменты;
- Решение несуществующих проблем;
- Обфусцированные результаты.
Давайте подробно разберём каждый из приведенных пунктов.
Создание продакшен решений на основе приватных данных, о чем в самих публикациях информации очень мало
Знаменитая статья Deep Speech 2 (2015) приводит следующую таблицу:
Процент данных, % | Часы, ч | Обычные данные WER, % | Шумные данные WER, % |
---|---|---|---|
1 | 120 | 29,23 | 50,97 |
10 | 1200 | 13,80 | 22,99 |
20 | 2400 | 11,65 | 20,41 |
50 | 6000 | 9,51 | 15,90 |
100 | 12000 | 8,46 | 13,59 |
Сравнение WER (word error rate, процент ошибок на уровне слов) для английского языка для Обычного и Шумного датасетов при увеличении размеров датасета. Архитектура сети: 9-слойная модель с 2 слоями 2D-инвариантных сверток и 7 рекуррентными слоями с 68 млн. параметров,
You must be registered for see links
.Вывод на основе нее такой: чтобы сделать модель хорошего качества, нужно много данных. Это одна из немногочисленных статей, явно на это обращающих внимание и проводящих валидацию на данных из внешних датасетов. Большинство современных STT статей обычно сильно оверфитятся на корпусе
You must be registered for see links
(LibriSpeech) все более и более экстравагантными способами.Вполне вероятно, что Google, Facebook, и Baidu имеют у себя в распоряжении датасеты на 10 000 — 100 000 часов для тренировки своих моделей. На это можно найти намеки, например, в последних публикациях Facebook, но, естественно, корпорациям невыгодно делиться тем, на каких данных натренированы их продакшен решения.
К этому прибавляется еще и относительная трудоемкость ручной разметки. На 1 час разметки может понадобиться от 2 до 10 часов труда разметчика (влияют сложность домена и наличие автоматической разметки на входе, например, результатов распознавания STT модели).
Все это приводит к текущей ситуации, когда все заявляют о невероятных результатах на идеализированном публичном датасете (LibriSpeech), но молчат о том, как эти модели ведут себя на реальных данных и на чем собственно какие продакшен-модели натренированы. Экономического стимула выпускать в open-source большие проприетарные датасеты у таких компаний, как Google, естественно нет. В конечном счете, возникает высокий барьер на вход для тех, кто хочет создать свою STT-систему. Есть, конечно, проекты типа
You must be registered for see links
, но данных там пока очень мало для всех языков кроме английского.Сложные фреймворки и инструменты
Проект | Коммитов | Разработчиков | Язык/Фреймворк | Комментарий |
---|---|---|---|---|
Wav2Letter++ | 256 | 21 | C++ | Коммиты тут скорее это релизы версий |
FairSeq | 956 | 111 | PyTorch |