Сегодня голосовые помощники набирают всё большую популярность. В основе этого бума лежит бум нейронных сетей последнего десятилетия. Одна из ключевых технологий, необходимая для создания голосового ассистента — распознавание речи. В эпоху донейронных сетей это были сложнейшие комплексы, которые разрабатывались большими коллективами программистов в течение многих лет. И при этом их качество оставляло желать лучшего. Да, для некоторых специальных приложений, таких как анализ телефонных разговоров, это было не очень критично, т.к. человек, который после этого работал с текстом, всегда мог сам послушать спорный фрагмент. В то же время для ассистента такой формат неприемлем. Вряд ли вас устроит, если каждый второй раз ассистент будет вам включать не ту песню или заводить будильник на другое время.
Нейронные сети позволили избавиться от больших коллективов. Сегодня 3-4 data science специалиста могут в течение года разработать систему распознавания речи, которая на голову превосходит всё то, что было до этого. Свойство нейронных сетей в том, что, будучи относительно стандартными внутри, они позволяют решать совершенно разные задачи. Например, нейронную сеть, которую обучали распознавать рукописный текст, можно также обучить распознавать речь, только вместо картинки на вход сети будет подаваться спектрограмма звука.
Всё, что остаётся сделать — это собрать относительно большой объём записанной речи и расшифровать его. Но это уже низкоквалифицированный и дешёвый труд, который легко масштабировать, в отличие от труда программистов. При этом качество такой системы будет близко к качеству распознавания речи у человека – это примерно 5% слов, распознанных с ошибками. Часто мы эти ошибки не замечаем у себя, мы компенсируем их контекстом. Но у умной колонки нет контекста, она не слушает вас постоянно.
Аналогичная ситуация и в области синтеза речи. Сегодня речь ассистентов гладкая, приятная на слух. Они корректно ставят ударения и могут произнести практически любые слова, например названия новых музыкальных групп. Но ещё недавно это было не так. Искусственная речь звучала «металлически», и постоянно встречались ошибки в интонации и ударении. Обучить модель синтеза ещё проще.
Она похожа на модель распознавания, только запущена в обратную сторону. На входе — текст, на выходе — спектрограмма, которая легко преобразуется в звук.
При этом в задаче синтеза речи собирать данные ещё проще. В сети доступны тысячи часов расшифрованной речи: аудиокниги, интервью, расшифровки радиопередач и т.д. В конечном итоге нужно лишь обучить конкретному голосу. Для этого нужно от 20 минут до 1 часа студийной аудиозаписи. Ну а самые последние версии таких сетей позволяют обучить голос буквально из нескольких предложений. Но это уже другая тема, дип фэйки. Ну и третий компонент голосовых помощников — собственно сам интеллект. Тут тоже активно используются нейронные сети, причём несколько сразу. Первая нейронная сеть, которая стоит на входе, определяет тематику запроса: включить ли музыку, рассказать погоду и т. д. После этого уже специализированная программа (которую часто называют навык) начинает обрабатывать запрос. Нейронная сеть тут нужна потому, что существует практически бесконечное количество способов сформулировать запрос и предусмотреть их все довольно сложно.
Дальнейшая обработка запроса в навыке уже очень сильно отличается, в зависимости от задачи. Есть простые навыки, в духе "сколько времени", а бывают и очень сложные. Многие навыки работают без нейронных сетей. Например, можно сделать так, что если в начале фразы есть слова "что такое", то навык сходит в обычный интернет-поиск, введёт в него запрос и, если найдёт википедию — ответит, рассказав вслух снипет (небольшое текстовое описание в выдаче поиска).
Но обычно у всех ассистентов есть особый навык — болталка. Это некоторый искусственный интеллект, призванный отвечать на вопросы "за жизнь", которые не попадают в навыки. Сегодня эти части выдают достаточно простые ответы, хоть и временами забавные. Но уже скоро ситуация должна измениться. На сцену выходят так называемые сверхбольшие языковые модели.
Одним из самых нашумевших представителей таких моделей является модель GPT-3. Это специальная нейронная сеть, у которой очень простая задача: для данного предложения она должна угадать пропущенное слово. Такой класс задач существует очень давно, а данные модели называются языковыми. Например, они подсказывают вам следующее слово, когда вы пользуетесь клавиатурой на телефоне. Но в наши дни произошел качественный скачок: эти модели стали по-настоящему большими. В тысячи раз больше, чем модели для распознавания или синтез речи, например. Для обучения таких моделей требуются недели или месяцы работы специализированных суперкомпьютеров, которые мало кому доступны. Но результат потрясает воображение.
К сожалению, пока такие модели слишком дороги и медлительны в эксплуатации, опять же в силу своих размеров. Плюс продолжаются работы над тем, чтобы научить их работать в формате диалога. Но прогресс не стоит на месте, и уже скоро, я уверен, мы увидим, как голосовые ассистенты поддерживают диалог на общие темы на уровне обычного человека.