Последнее время, на хайпе нейронных сетей, особую популярность приобрели end2end системы распознавания речи. И это неудивительно, ведь можно «просто» взять нейронную сеть известной архитектуры, скормить ей обучающий датасет и ждать результата. Но на практике все оказывается не так просто.
Несмотря на эксперименты с нейронными end2end сетями, в продакшене мы продолжаем использовать гибридную архитектуру, состоящую из акустической и лингвистической модели, работающих независимо. И в этой статье мы постараемся объяснить причины нашего выбора.
Кратко об архитектурах
End2end – нейронная сеть, переводящая последовательность звуков (во фреймах) в последовательность букв.
Гибрид – независимый алгоритм для распознавания фонем (бифонов, трифонов) в аудиодорожках + алгоритм языковой модели, оценивающий вероятность встречаемости распознанных слов.
Подробнее, как это работает с технической точки зрения - в нашей предыдущей статье по ссылке.
Первое, с чем вы столкнетесь при обучении end2end нейронной сети распознавания речи: вам понадобится много обучающих данных. И не просто много, а очень, очень много. Десятки тысяч часов транскрибированного аудио. Можно, конечно, попробовать использовать датасет объемом всего в пару тысяч часов, но в этом случае итоговое качество работы алгоритма окажется весьма низким. А вот классическая архитектура может нормально обучиться на нескольких сотнях часов. Лучше использовать несколько тысяч часов с качественной разметкой, но все равно это на порядок меньше, чем в end2end системах. Однако, как говорится, все, что можно решить за деньги, - это не проблемы, а затраты, поэтому идем дальше.
Если вы занимались внедрением распознавания речи, вы могли убедиться, что у каждого клиента в аудиодорожках есть свой набор уникальных терминов вроде «Вундервафель». Как правило это названия брендов и акций, которые произносят в диалогах сотрудники и покупатели. В большинстве случаев коробочное решение распознать эти термины не может, так как это уникальные слова.
В классической архитектуре с акустической и лингвистической моделью можно просто добавить эти слова в словарь. В end2end архитектуре так не получится. Будет необходимо скормить алгоритму пару сотен дополнительно размеченных часов, а это и дорого, и ресурсозатратно. Но тут стоит выделить и преимущество end2end архитектуры: алгоритм обобщает представление о структуре языка и может распознавать даже те слова, которых не было в обучающей выборке, как бы «додумывая», что это может быть.
Аналогично дела обстоят с отраслевой лингвистикой. Если ваш клиент из отрасли медицина или транспорт, то как правило, обычная универсальная модель распознавания речи ему не подойдет. И если для end2end модели снова нужно размечать сотни часов аудиозаписей, то классическую архитектуру можно просто дообучить на тексте из 100-150 тысяч слов, что существенно проще.
И наконец, для гибридной модели доступна опция распараллеливания по ядрам. Ведь далеко не всегда есть возможность использовать компьютер с GPU, в то время как серверы с CPU стоят везде. Как нам показалось, на практике распараллелить на потоки классическое решение проще, хотя в теории такое возможно и для end2end моделей.
Однако end2end модели имеют свои преимущества. Во-первых, если вам нужна максимально универсальная в словарном плане модель, есть смысл попробовать end2end. Последние end2end архитектуры дают State of the Art результат.
![Рис. 1 Результаты алгоритмов на корпусе LibreSpeech Рис. 1 Результаты алгоритмов на корпусе LibreSpeech](https://habrastorage.org/getpro/habr/upload_files/ed5/933/935/ed593393545b7fd8bd9dbf430e451ab3.png)
Вторым преимуществом end2end является то, что классическая модель уже достигла максимума своего потенциала. End2end только набирает обороты и, возможно, за этой технологией - будущее систем распознавания речи.
Также стоит отметить, что при необходимости распознавать не на сервере, а на телефоне, лучше выбрать end2end, так как там можно придумать легковесную архитектуру.
Итого
Преимущества классической гибридной архитектуры:
Нужна маленькая обучающая выборка (достаточно несколько сотен часов транскрибированного аудио).
Можно добавлять слова в словарь и руками задавать вероятность распознавания.
Можно легко переобучать языковую модель. Для этого достаточно текстов, содержащих несколько сотен тысяч слов.
Недостатки классической гибридной архитектуры:
Не модно.
Для общей языковой модели уже проигрывает end2end архитектурам.
Неспособна распознать слова, которых нет в словаре.
Невозможно использовать на конечном устройстве (телефоне).
Для тех, кому интересна сама технология распознавания, приглашаем прочитать нашу предыдущую статью “как устроено распознавание речи”.
Бонус для дочитавших: наш телеграм бот @AmVeraSpeechBot. В боте вы можете проверить качество работы нашего решения (Amvera Speech) по распознаванию речи на основе классической гибридной архитектуры. Просто отправьте в бот короткую аудиодорожку или голосовое сообщение – и получите текстовую расшифровку.
И второй бонус. Сейчас мы проводим бета-тестирование нашего облака для хостинга IT-приложений и приглашаем всех желающих присоединиться к тестированию. Это абсолютно бесплатно: с нас - облачные ресурсы, с вас - обратная связь. Подробности по ссылке.
А в следующей статье мы расскажем, как делали бота по распознаванию голосовых сообщений.
Комментарии (3)
AigizK
06.10.2022 10:51+2Тот же Wav2Vec2.0 обученный на англ, можно дообучить на других языках. При этом достаточно 10+ часов. И времени не много требует, на том же Colabe можно сделать.
kirillkosolapov
06.10.2022 11:01+2Да, но для этого нужно иметь качественно размеченные 10+ часов (а чтобы хорошо работало - сильно больше). Классическую архитектуру можно адаптировать под клиента имея только тексты. Но скорее всего архитектуры подобные Wav2Vec2.0 скоро окончательно победят гибриды.
volchenkodmitriy
Я помню готовился к сдаче экзамена по Английскому еще давно в начале 2000х, используя механизм обучения программы распознавания речи: читал в микрофон предложения с экрана на английском и программа указывала что распознала, а что нет. В результате я научился говорить правильно и сдал экзамен хорошо, а научилась ли чему-то программа до сих пор не знаю)