«Бу бу бу бу бу... Салют!». Почему умное устройство срабатывает, только если назвать по имени
И как колонка отличает голосовую команду от подкаста, который сама и воспроизводит.
Голосовое управление может быть в смартфоне или автомобиле. Интеллектуальной колонке, телевизоре. Очках или украшении. Если оно есть, устройство умеет: слышать команды и опознавать их как адресованные именно ему, обрабатывать. А мы любим рассказывать, как что-нибудь работает. Сегодня объясняем, как устроено распознавание речи в умных устройствах Сбер и в целом.
Как девайс слышит пользователя
У смартфона, колонки, телевизора есть минимум один встроенный микрофон (чаще больше). Его задача — искать в речи споттерное слово. Это имя устройства, после которого оно начинает расшифровывать речь. У интеллектуальных устройств Сбер споттерное слово — «Салют». Если колонка услышала это слово, она понимает, что говорят с ней, и начинает фиксировать голосовую команду.
Ирония в том, что по факту корпус устройства — не лучшее место для микрофона: части конструкции мешают ему ловить звук. Поэтому производители стараются точечно убрать посторонние шумы. Для этого используют:
- изолирующий звуковой канал
«Гнездо» для микрофона из материалов, которые поглощают звук. Даже голос пользователя, который попадает в устройство и отражается от стенок.
- виброизоляционные прокладки и втулки
Резина и силикон помогают смягчать механические колебания внутри устройства. Например, когда колонка «качает» на полную громкость.
У интеллектуальных колонок Сбер микрофоны можно отключить — на устройстве есть соответствующая кнопка. Когда нажимаешь на неё, они перестают получать питание. У интеллектуальных ТВ с голосовым управлением тоже есть решение для отключения микрофонов.
Можно ли отличить рэп от голосовой команды
Умному устройству нужно понимать, когда к нему обращаются, даже если оно одновременно воспроизводит музыку/подкаст (колонка) или фильм (ТВ). Оно должно не слышать само себя. Ведь динамик:
- как правило, играет громче, чем человек говорит, и заглушает речь;
- может сам озвучивать связный текст, который при этом не нужно распознавать.
Колонке необходимо услышать команду пользователя в любом шуме... включая тот, что издаёт сама. В устройствах Сбер за эту задачу отвечает блок улучшения качества звука (VQE). Внимание: он улучшает не то, как колонка играет музыку, а именно звук, который «слышит» микрофон.
VQE связан с алгоритмом подавления акустического эха (AEC). «Эхо» здесь — вообще весь звук, который после динамиков попал в микрофон. А этот алгоритм опирается на оцифрованный сигнал непосредственно из аудиотракта. Из него алгоритм может понять: какая часть звуков, которая попала в микрофон, связана с тем, что играет колонка? И смоделировать акустическое эхо, то есть:
- звуки музыки/фильма;
- голос ассистента;
- отражение этих звуков от стен;
- их передачу через корпус прямо в колонку.
Когда алгоритм смоделировал акустическое эхо, он вычитает его из сигнала, который зафиксировали микрофоны. Это похоже на попытку стереть с фотографии кота: знаешь, как выглядит кот, но на снимке его перекрывают тени. Задача — отличить кота от теней и аккуратно убрать его. На выходе получаем микрофонный сигнал без звуков (почти) самой колонки.
На этой стадии в аудиодорожке ещё есть внешние шумы: за окном едут машины, на сковороде шипит картошка. Их «вычитает» шумоподавление.
Результат — более чистая аудиодорожка, где устройство может искать своё имя.
Почему нужно говорить «Салют»
В некоторых устройствах — например, в ноутбуках — голосовой помощник включается по нажатию кнопки. Но «домашние» устройства должны слышать команды на расстоянии. Поэтому у колонок и телевизоров и есть споттерное слово, например, «Салют»:
— Салют, какая сейчас погода?
— Салют, до скольки работает ближайшая аптека?
Пока в аудио, которое попадает в микрофон, нет споттерного слова, оно остаётся для устройства бессмысленной последовательностью чисел. Условно, колонка слышит: «Бу-бу-бу-бу-бу... Салют!» и понимает, что пора распознавать команду.
Отдельная модель определяет конец команды. Она опирается на интонацию, на смысл уже расшифрованной фразы и другие признаки. Модель поняла, что команда закончилась — распознавание речи останавливается, пока пользователь снова не скажет споттерное слово.
Зачем колонке вероятности
Допустим, споттерное слово прозвучало. Микрофон его услышал. Начинает работать алгоритм распознавания речи — ASR. Он есть всюду, где есть голосовой помощник. Алгоритм может работать по-разному, поэтому рассказываем о том, который используем в устройствах Сбер.
Основу ASR составляют две модели, акустическая и языковая. Вот что происходит, когда колонка ловит голосовую команду:
- Аудиосигнал превращается в условное представление амплитуд частот вашей речи — спектрограмму.
На ней видна звуковая структура фразы вместе с паузами. В устройствах Сбер применяем конкретно лог-мел спектрограмму. «Лог» — потому что амплитуду логарифмируют, «мел» — так как частоты сжимают по шкале Мела, чтобы, условно, адаптировать под восприятие человека.
- Спектрограмма поступает в акустическую модель
Та по фрагментам спектрограммы — маленьким отрезкам времени — предсказывает вероятность, какая буква сейчас звучит. Например, звук «п» может обозначать букву «п», как в слове «пир», или букву «б», как в слове «зуб». По одному звуку модель этого не узнает — тут и нужен контекст.
- За акустической моделью следует языковая
Акустическая говорит «судя по звуку, здесь вероятны такие-то буквы». Языковая добавляет: «С точки зрения языка, после этих слов логичнее вот такое продолжение».
- Специальный алгоритм (beam search) выбирает из вариантов расшифровки тот, который больше всего устраивает обе модели
Именно так колонка понимает похоже звучащие слова в команде: контекст помогает выбрать правильный вариант.
Этот процесс звучит сложно, но по сути занимает совсем чуть-чуть времени (иначе колонкой было бы невозможно пользоваться). Следующий шаг — исполнить команду. Поехали!