company_banner

Зачем голосовому Поиску Google нейронные сети?

http://googleresearch.blogspot.co.uk/2015/09/google-voice-search-faster-and-more.html
  • Перевод
Задумывались ли вы когда-нибудь, как работает голосовой поиск? Какая магия переводит ваши слова в поисковый запрос, причём практически в режиме реального времени? Сегодня мы расскажем, как «О’кей, Google!» стал ближе к вам на 300 миллисекунд и что именно позволяет вам разговаривать с вашим телефоном простым человеческим языком.

В основе актуальной версии голосового поиска Google лежит улучшенный алгоритм для обучения нейронных сетей, созданный специально для анализа и распознавания акустических моделей. В основу новых, Рекуррентных Нейронных Сетей (англ.: recurrent neural networks — RNN), легли Нейросетевая темпоральная классификация (англ.: Connectionist Temporal Classification — CTC) и дискриминантный анализ для последовательностей, адаптированный для обучения подобных структур. Данные RNN намного точнее, особенно в условиях посторонних шумов, а главное — они работают быстрее, чем все предыдущие модели распознавания речи.

Начать придётся с небольшого экскурса в историю. Почти 30 лет (по меркам IT-индустрии — целая вечность!) для распознавания речи использовались т.н. «модели смеси (многомерных) нормальных распределений» (англ.: Gaussian Mixture Model — GMM). Поначалу голосовой поиск Google также работал с этой технологией, пока мы не разработали новый подход к переводу звуковых волн в осмысленный набор символов, с которыми может оперировать «классический», текстовый поиск.

На тот момент (это случилось в 2012 году) перевод голосового поиска Google на технологию Глубоких Нейронных Сетей (англ.: Deep Neural Networks — DNN) осуществил настоящий прорыв в области распознавания речи. DNN лучше подходили для распознавания отдельных звуков, произносимых пользователем, чем GMM, благодаря чему точность распознавания речи значительно выросла.

Как это было раньше: работа DNN


В классической системе распознавания голоса записанный аудиосигнал делится на короткие (10 мс) фрагменты, каждый из которых затем анализируется на содержащиеся в нём частоты. Полученный в результате вектор характеристик прогоняется через акустическую модель (например, такую, как DNN), которая выдаёт набор вероятностных распределений среди всех возможных фонем. Скрытая Марковская модель (часто используемая в алгоритмах распознавания образов) помогает выявить последовательные структуры в этом наборе распределений вероятностей.

После этого данные анализа объединяются с другими данными, поступающими из альтернативных источников информации. Одним из них является Модель Произношения (англ.: Pronunciation Model), которая соединяет последовательность звуков в определённые слова предполагаемого языка. (прим.: Под «предполагаемым» языком понимается тот язык, который был выбран как «основной» в настройках голосового поиска). Другой источник — Языковая Модель: она обрабатывает полученные слова и анализирует фразу целиком, пытаясь оценить, насколько вероятна такая последовательность слов в искомом языке.

Далее вся информация попадает в систему распознавания, который согласует всю информацию, чтобы определить фразу, которую произносит пользователь. Например, если пользователь произносит слово «museum», то его фонетическая запись будет выглядеть следующим образом: /m j u z i @ m/.

Точно сказать, где закончился звук /j/ и начался /u/ может быть сложно, но на самом деле для алгоритма это не важно: главное, что все эти звуки были произнесены.



Что изменилось в голосовом поиске?


Наша улучшенная акустическая модель основана на Рекуррентных Нейронных Сетях (RNN). Их преимущество заключается в том, что они имеют циклы обратной связи в своей топологии, позволяющие им моделировать временные зависимости: когда пользователь произносит /u/ в предыдущем примере, его речевой аппарат одновременно выходит из процесса произношения предыдущих звуков /j/ и /m/. Попробуйте сказать вслух — «museum». Слово выходит моментально, на одном выдохе, и RNN могут это распознать.

RNN бывают разных типов, и для распознавания речи мы использовали специальные RNN с «длинной кратковременной памятью» (англ.: Long Short-Term Memory — LSTM). Эти ячейки памяти и сложный механизм гейтов позволяют LSTM RNN лучше других нейронных сетей запоминать информацию.

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

С Нейросетевой темпоральной классификацией (CTC) модели научились выводить своеобразные «пики», которые и отображают последовательность различных звуков в звуковой волне. Они могут выделять различные фонемы в правильной с точки зрения языка последовательности звуков.
Прим.: RNN могут распознать слово «гидроэлектростанция», но не смогут верно выделить отдельные звуки в бессмысленной с точки зрения языка последовательности «йцукенфывапролдж».

Самым сложным был вопрос «Как сделать так, чтобы распознавание происходило в реальном времени?». После множества попыток мы смогли научить потоковые однонаправленные модели обрабатывать более протяженные звуковые интервалы, чем те, что используются в «классических» моделях распознавания речи. В то время как сами вычисления происходят с меньшей частотой. При этом затраты вычислительных ресурсов на самом деле уменьшились, а скорость работы системы распознавания многократно увеличилась.

Переход от конно-сферических условий к реальной эксплуатации


В лабораторных условиях распознавать речь достаточно легко: в полной тишине вы получаете качественную звуковую дорожку, которую потом анализируете. К сожалению, реальные условия эксплуатации голосового поиска существенно отличаются от эталонных. Кто-то говорит на заднем плане, мимо проезжают машины, где-то вдалеке гудит телевизор, в микрофон смартфона со свистом влетает порыв ветра… Все эти шумы затрудняют обработку речи нейронными сетями, так что мы научили их работать даже в таких тяжелых условиях.

В процессе обучения RNN мы подмешивали искусственные шумы, ревербацию, эхо и прочие типичные в повседневной эксплуатации «загрязнения» на обучающих сэмплах, что помогло сделать систему распознавания более устойчивым к фоновым шумам.

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

Как голосовой поиск Google стал ближе к пользователю


Модель выдавала прогноз фонем с задержкой примерно на 300 миллисекунд, так как нейронная сеть «поняла», что сможет лучше распознать фонемы, слушая сигнал чуть дольше. Вот так выглядит процесс распознавания в наглядной форме:


Нейросетевая темпоральная классификация пытается распознать фразу «How cold it is outside»

Такое поведение было логичным и отлично работало, но привело к более медленным ответам системы, чего мы совсем не хотели. Мы решили эту проблему путём длительного обучения нейронной сети выделению отдельных фонем как можно ближе к «срезу» сигнала. В результате распознавание речи происходит практически в режиме реального времени. Текущая модель на основе CTC выделяет «пики» отдельных фонем (отображены различными цветами) как только она определяет их во входящем звуковом потоке.



По оси X показаны определённые в каждый момент времени фонемы, а по оси Y — апостериорные вероятности распределения той или иной фонемы. Пунктиром отмечены те варианты, которые алгоритм решил не выделять / не распознавать как отдельные звуки.

Сейчас наш новый алгоритм используется в голосовом управлении и диктовке текста на ваших смартфонах (пока только на базе Android) и приложении Google на Android и iOS. Он не только использует меньше вычислительных ресурсов, но и точнее, работает быстрее, а ещё устойчив к шумам и помехам. Попробуйте, надеемся, вам понравится!
Google
108,00
Филин Лаки
Поделиться публикацией

Комментарии 15

    –6
    Я почему то не наблюдаю голосовой набор комментариев в том же Instagram или Twitter, а ведь как было бы удобно.
      +3
      А где в посте написано «Мы добавили голосовой ввод в чужие приложения: Instargam и Twitter»? Диктовка с кнопки «микрофон» на клавиатуре там есть и работает. Как только авторы приложений сделают версию, которая будет взаимодействовать с Google Now на таком уровне — появятся и названные вами фичи. К Google-то какие претензии?
        0
        В самом же гугле, в их сервисе — нет голосового ввода комментариев, например, в том же g+ или ещё где. А ведь как было бы удобно =))
      0
      Тут еще важный вопрос прав на возможность использования технологии. Можно обратиться к более простому примеру, вроде snapchat, которым оказалось выгоднее купить технологический патент looksery вместе с технологией, штатом и продуктом. Так вот, когда гиганты решат, что им это необходимо — начнут именно с покупок интеллектуальной собственности.
        0
        Давно хотела узнать как все это — вокруг распознавания речи — работает… Правда прочтя статью погрустнела т.к. поняла лишь с пятого на десятое. Но спасибо — буду перечитывать еще :)
          +1
          Попробуйте начать с азов: karpathy.github.io/neuralnets.
            0
            Спасибо, я знаю что такое нейронные сети, даже какие-то регуляторы на них писала :)
              0
              Тогда приношу извинения, из комментария понял иначе.
              +1
              Оч крутая статья. Давно хотел разобраться в этих RNN.
              +3
              А в этой статье ничего вообщем то и не написано: так, упомянуты лишь кое какие термины без объяснения как же это работает.
              +1
              Вот бы еще API для распознавания речи помимо Android…
                +1
                Присоединяюсь, очень бы хотелось API под Windows или Linux для оффлайн распознавания, пусть даже за вменяемые деньги.
                0
                «В процессе обучения RNN мы подмешивали искусственные шумы, ревербацию, эхо и прочие типичные в повседневной эксплуатации «загрязнения» на обучающих сэмплах, что помогло сделать систему распознавания более устойчивым к фоновым шумам. „

                И каким же образом это “что» «помогло сделать систему » обученную на шумах, которая в свою очередь будет нормально работать на чистом сигнале без шума без переобучения моделей на чистой речи?

                Ведь (пере)обучение НС моделей занимает приличное время в распознавании речи. Не ясно, что именно при использовании RNN послужило благоприятно при распознавании зашумленной речи?

                  0
                  «Попробуйте сказать вслух — «museum». Слово выходит моментально, на одном выдохе, и RNN могут это распознать. »

                  — и какой объём словаря (сколько слов использовалось для обучения и тестирования) такие модели способны таким способом распознать?
                    0
                    По доброй традиции хаба «Клиентская оптимизация» поинтересуюсь:
                    — автор, вам известно значение термина, давшего название упомянутому хабу?
                    — какое отношение этот топик имеет к предметной области, описываемой этим термином?

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое