Голосовой ввод яндекс – Голосовой ввод яндекс установить. Включение функции голосового поиска в Яндекс.Браузере

Как это работает? Распознавание речи — Блог Яндекса

23 октября 2013, 13:19

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

В основе голосового управления лежит технология распознавания речи. В ней задействованы достижения различных областей: от компьютерной лингвистики до цифровой обработки сигналов. На конференции YaC 2013 в начале октября Яндекс представил свою технологию распознавания речи, и сегодня мы хотели бы рассказать о том, как она работает.

Акустическая модель

Если сказать голосовому поиску «Лев Толстой», смартфон услышит не имя и фамилию, не два слова, а звуковой сигнал, в котором звуки плавно перетекают друг в друга, не имея чётких границ. Задача системы распознавания речи — восстановить по этому сигналу, что было сказано. Ситуацию осложняет то, что одна и та же фраза, произнесённая разными людьми в разной обстановке, будет давать совершенно непохожие друг на друга сигналы. Правильно интерпретировать их помогает система акустического моделирования.

Когда вы произносите голосовой запрос, например, в Яндекс.Навигаторе, смартфон записывает его и отправляет на сервер Яндекса. На сервере запись разделяется на много маленьких фрагментов (фреймов) длиной 25 миллисекунд, внахлёст, с шагом 10 миллисекунд. То есть из одной секунды вашей речи получается сто фреймов.

Дальше каждый из них пропускают через акустическую модель — функцию, которая определяет, какие звуки вы произнесли. На основе этих данных система, натренированная методами машинного обучения, определяет варианты слов, которые вы видите в результатах поиска. Мобильный Браузер в ответ на запрос «Лев Толстой» найдёт сайты о великом писателе, а Навигатор и Карты предложат улицу Льва Толстого.

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

 

Фонетический алфавит Яндекса

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

Чтобы точнее смоделировать произношение фонемы, мы, во-первых, делим каждую фонему на три части: условные начало, середину и конец. Во-вторых, мы разработали свой фонетический алфавит, который учитывает позицию и контекст фонем. Брать в работу все возможные варианты контекстно-зависимых фонем было бы неблагоразумно, так как многие из них не встречаются в реальной жизни. Поэтому мы научили нашу программу рассматривать похожие звуки вместе. В результате мы получили набор из 4000 элементарных единиц — сенонов. Это и есть фонетический алфавит Яндекса, с которым работает наша технология распознавания речи.

Вероятности

В идеальном мире программа безошибочно определяет, какая фонема соответствует каждому фрагменту голосового запроса. Но даже человек иногда может не понять или не расслышать все звуки и достраивает слово исходя из контекста. И если человек опирается на собственный речевой опыт, то наша система оперирует вероятностями.

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

Программа также умеет восстанавливать слова по смыслу. Если вы находитесь в шумном месте, говорите не очень чётко или используете неоднозначные слова, она достроит ваш запрос исходя из контекста и статистики. Например, фразу «мама мыла…» программа с большей вероятностью продолжит как «мама мыла раму», а не как «мама мыла рану». Благодаря машинному обучению на множестве данных наша программа устойчива к шуму, хорошо распознаёт речь с акцентом, качество распознавания практически не зависит от пола и возраста говорящего.

Сейчас наша технология распознавания речи правильно определяет 94% слов в Навигаторе и мобильных Картах и 84% слов в мобильном Браузере. При этом на распознавание уходит около секунды. Это уже весьма достойный результат, и мы активно работаем над его улучшением. Мы верим, что через несколько лет голосовой интерфейс ввода не будет уступать классическим способам.


P.S. Кроме собственно технологии, мы представили на YaC 2013 публичное API для распознавания речи — SpeechKit. С его помощью разработчики могут добавить голосовой поиск Яндекса в свои приложения для Android и iOS. Скачать SpeechKit, а также ознакомиться с документацией, можно здесь.

 

О сервисе — Яндекс.Переводчик. Помощь

Яндекс.Переводчик — это сервис автоматического перевода слов и текстов, в том числе и на сайтах. Сервис использует разработанную в Яндексе технологию машинного перевода.

Частые вопросы

Перевод текста

Ввод текста

Синхронизация избранного

Онлайн-словарь

Список поддерживаемых языков

Транскрипция слов

Перевод текста с картинок

Перевод текста с картинки

Проблемы с распознаванием текста на картинке

Голосовой ввод

Список поддерживаемых языков

Проблемы с голосовым вводом

Перевод сайта

Перевод страниц сайта

Ошибка в переводе сайта

Озвучивание

Список поддерживаемых языков

Изменение голоса диктора

Проблемы с озвучиванием

Перевод текста

Ввод текста

Синхронизация избранного

Онлайн-словарь

Список поддерживаемых языков

Транскрипция слов

Перевод текста с картинок

Перевод текста с картинки

Проблемы с распознав

Как начать работать cо SpeechKit | Яндекс.Облако

Если вы хотите попробовать, как сервис синтезирует или распознает речь, воспользуйтесь демо на странице сервиса.

В этом разделе вы научитесь использовать SpeechKit API. Сначала вы создадите аудиофайл из текста, а потом попробуете его распознать.

Перед началом

Чтобы воспользоваться примерами, установите cURL и получите данные вашего аккаунта для авторизации:

Аккаунт пользователя на Яндексе

Сервисный аккаунт

Федеративный аккаунт

  1. Выберите способ аутентификации:

    • Получите IAM-токен, используемый в примерах.

    • Создайте API-ключ. Передайте API-ключ в заголовке Authorization в следующем формате:

      Authorization: Api-Key <API-ключ>
      
  2. Назначьте сервисному аккаунту роль editor или выше на каталог, в котором он был создан.

    Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.

Преобразование текста в речь

С помощью синтеза речи вы сможете превратить текст в речь и сохранить ее в аудиофайл.

Сервис поддерживает следующие языки:

  • ru-RU — русский;
  • en-US — английский;
  • tr-TR — турецкий.

Передайте текст в поле text в теле запроса, используя URL-кодирование. В параметре lang укажите язык текста, а в folderId — идентификатор каталога, полученный перед началом. Ответ запишите в файл:

$ export TEXT="Hello world!"
$ export FOLDER_ID=b1gvmob95yysaplct532
$ export IAM_TOKEN=CggaATEVAgA...
$ curl -X POST \
     -H "Authorization: Bearer ${IAM_TOKEN}" \
     --data-urlencode "text=Hello World" \
     -d "lang=en-US&folderId=${FOLDER_ID}" \
     "https://tts.api.cloud.yandex.net/speech/v1/tts:synthesize" > speech.ogg

Синтезированная речь будет записана в файл

speech.ogg в директории, из которой вы выполнили эту команду.

По умолчанию аудио создается в формате OggOpus. Прослушать созданный файл можно в браузере, например в Яндекс.Браузере или Mozilla Firefox.

Подробнее про формат запроса на синтез речи.

Распознавание речи

Сервис позволяет распознавать речь тремя различными способами. В этом разделе используется распознавание коротких аудиозаписей.

Передайте двоичное содержимое аудиофайла в теле запроса. В Query-параметрах укажите язык распознавания (lang) и идентификатор каталога (folderId). В ответе сервис вернет распознанный текст:

$ curl -X POST \
     -H "Authorization: Bearer ${IAM_TOKEN}" \
     --data-binary "@speech.ogg" \
     "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?folderId=${FOLDER_ID}"

{"result":"Hello world"}
Что дальше

Компания Яндекс — Технологии — SpeechKit — речевые технологии Яндекса

Ещё недавно общение с роботами было чем-то из области фантастики. Только капитан космического корабля мог голосом, не нажимая никаких кнопок, отдать команду бортовому компьютеру проложить маршрут к нужной точке. Сегодня это может сделать любой пользователь Яндекс.Навигатора. Возможно, вам и самим случалось говорить с роботами: во многих больших компаниях на звонки клиентов сейчас отвечают виртуальные операторы, которые самостоятельно решают типовые несложные задачи.

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

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

Распознавание речи

Если сказать голосовому поиску «Лев Толстой», смартфон услышит не имя и фамилию и даже не два слова, а просто последовательность плавно сменяющих друг друга звуков. Задача системы распознавания речи — «расслышать» в этих звуках буквы (вернее, соответствующие им фонемы) и сложить их в слова. Ситуацию осложняет то, что одна и та же фраза, произнесённая разными людьми в разной обстановке, будет звучать по-разному и давать непохожие друг на друга сигналы. Правильно интерпретировать их помогают акустическая и языковая модели.

Акустическая модель
Акустическая модель умеет определять, какой набор фонем соответствует звуковому сигналу. Этому она учится на большом корпусе начитанных дикторами текстов и их транскрипций — компьютер как бы следит за чтением по подстрочнику. Со временем, прослушав и прочитав определённое количество материалов и накопив достаточную статистику совпадений, он делает вывод: звуку с такими характеристиками, как правило, соответствует такая-то фонема, другому звуку — другая, и так далее.

Акустическая модель работает не с самим звуком, а с его характеристиками — то есть признаками, выраженными в цифрах. Когда вы произносите голосовой запрос, например в Яндекс.Навигаторе, смартфон записывает его и отправляет на сервер Яндекса. Там запись разделяется на много маленьких фрагментов — фреймов. На каждую секунду речи приходится сто фреймов. Они длятся по 25 миллисекунд и идут внахлёст, как черепица, чтобы информация на стыках не терялась. Каждый фрейм подвергается ряду преобразований, в результате которых получается около 40 коэффициентов, описывающих его частотные характеристики. На основании этих данных акустическая модель может предположить, частью какой фонемы является фрейм.

Фонемой называется элементарная единица речи — в русском языке их около 40 (около — потому что лингвисты разных школ пользуются разными системами классификации и единого мнения насчёт числа фонем у них нет). На самом деле звуки, которые мы произносим, гораздо разнообразнее, ведь звучание фонемы зависит от того, в какой части слова — в начале, середине или конце — она находится и что у неё за соседи. Например, [а] между двумя гласными в сочетании «на аудиозаписи» отличается от [а] между согласными в слове «бак». Поэтому для хорошего распознавания фонема — слишком грубая единица.

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

Языковая модель
В идеальном мире программа безошибочно определяет, какая фонема соответствует каждому фрагменту голосового запроса. Но даже человек иногда может не понять или не расслышать все звуки и достраивает слово исходя из контекста. Для этого люди опираются на собственный речевой опыт: если ваш собеседник жалуется на заложенный нос, вы поймёте, что у него «насморк», а не «дасморк». Примерно так же работает система распознавания, только вместо речевого опыта она использует языковую модель.

Как и акустическая модель, языковая тоже обучается на большом корпусе текстов. Но в процессе учёбы она обращает внимание не на соответствие звуков и фонем, а на то в какие последовательности — то есть слова и фразы — обычно складываются фонемы.

Языковая модель работает уже не с признаками звука, а с цепочкой фонем — вернее с цепочкой вероятных фонем. Дело в том, что акустическая модель, обработав частотные признаки фрейма, выдаёт не одну конкретную фонему, а несколько — и у каждой из них свой коэффициент вероятности. Несколько упрощая, допустим, что в случае «насморка» акустическая модель выдаст две примерно равно вероятных фонемы в начале слова — [н] и [д]. Теперь в дело вступает языковая модель. Во время обучения «дасморки» встречались ей нечасто, а вот «насморков» — сколько угодно. Поэтому система сделает вывод, что в начале слова, вероятнее всего, была фонема [н].

Примерно так же, исходя из контекста, языковая модель определяет последовательности слов. Например, выбирая между «мама мыла раму» и «мама мыло рама», она предпочтёт первое словосочетание, потому что оно знакомо ей по тренировочному корпусу текстов.

Понимание естественного языка

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

Конечно, сами по себе слова для компьютера ничего не значат. Так же и мы, глядя в текст, написанный на неизвестном нам языке, не можем представить, о чём идёт речь, если только нам не встречаются какие-нибудь знакомые слова. Примерно такая же задача — по знакомым словам и формулировкам понять говорящего — стоит и перед компьютером.

Представьте приложение, которое выполняет функции личного помощника: добавляет встречи в ежедневник, помогает купить билеты в театр, записывает за пользователем умные мысли — всё в таком духе. Этому приложению нужен голосовой интерфейс, чтобы пользователь мог сказать ему: «Устал я что-то, домой пора — вызови такси», а потом просто назвать нужный адрес и не вводить никакие данные вручную.

Чтобы понять, чего хочет пользователь, и активировать нужную функцию, роботу нужно заметить в распознанной речи ключевые слова. В нашем случае — «вызови такси». Этим словам его научил разработчик: они занесены в программу в числе других формулировок вызова такси: «закажи такси», «вызови машину», […] «хочу поехать домой». Естественно, всех вариантов разработчик учесть не может. Поэтому, собрав тестовую версию приложения, он предлагает попользоваться ею друзьям и коллегам — так выясняется, как ещё люди могут заказывать такси.

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

Синтез речи

Чтобы работать с голосовым интерфейсом компьютера было удобно, он должен уметь не только слышать, но и говорить. Конечно, если сервис не предполагает сложной коммуникации с пользователем, его реплики можно просто заранее записать и проигрывать в нужный момент. Но что если компьютеру придётся использовать в своём вопросе информацию, которую он только что получил от человека? Скажем, для подтверждения даты и адреса доставки? Чтобы он мог с таким справиться, его нужно научить произносить произвольный текст.

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

Чтобы понять, как читать слово и где поставить в нём ударение, робот сначала обращается к классическим, составленным вручную словарям, которые встроены в систему. Если нужного слова в словаре нет, компьютер строит транскрипцию самостоятельно — опираясь на правила, заимствованные из академических справочников. Наконец, если обычных правил оказывается недостаточно — а такое случается, ведь любой живой язык постоянно меняется, — он использует статистические правила. Последние формулируются примерно таким же способом, как и правила акустической и языковой моделей: если слово встречалось в корпусе тренировочных текстов, система запомнит, на какой слог в нём обычно делали ударение дикторы.

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

Другими словами, для синтеза каждых 25 миллисекунд речи используется множество данных. Информация о ближайшем окружении обеспечивает плавный переход от фрейма к фрейму и от слога к слогу, а данные о фразе и предложении в целом нужны для создания правильной интонации синтезированной речи.

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

Откуда она знает, как правильно произнести фонему или придать верную интонацию вопросительному предложению? Как и две другие модели, о которых мы уже говорили, она учится на текстах и звуковых файлах. Например, в неё можно загрузить аудиокнигу и соответствующий ей текст. Чем больше данных, на которых учится модель, тем лучше её произношение и интонирование.

Голоса
Наконец, о самом голосе. Узнаваемыми наши голоса, в первую очередь, делает тембр, который зависит от особенностей строения органов речевого аппарата у каждого человека. Тембр вашего голоса можно смоделировать, то есть описать его характеристики — для этого достаточно начитать в студии небольшой корпус текстов. После этого данные о вашем тембре можно использовать при синтезе речи на любом языке, даже таком, которого вы не знаете. Когда роботу нужно что-то сказать вам, он использует генератор звуковых волн — вокодер. В него загружаются информация о частотных характеристиках фразы, полученная от акустической модели, а также данные о тембре, который придаёт голосу узнаваемую окраску. Подробнее о возможностях и способах применения Yandex SpeechKit вы можете прочитать на специальном сайте. Если вы разработчик и хотите протестировать облачную или мобильную версию SpeechKit, поищите информацию на странице технологии.

Правила тарификации для SpeechKit | Яндекс.Облако

Чтобы расчитать стоимость использования сервиса, воспользуйтесь нашим калькулятором или ознакомьтесь с тарифами в этом разделе.

Из чего складывается стоимость использования SpeechKit

Использование синтеза речи

Стоимость использования SpeechKit API для синтеза речи рассчитывается исходя из используемого голоса и суммарного количества символов, которые были отправлены для генерации речи из текста за календарный месяц (Отчетный период).

Количество символов в запросе определяется с учетом пробелов и служебных символов. Стоимость пустого запроса равна стоимости одного символа.

Использование распознавания речи

Стоимость использования зависит от длительности распознанного аудио. Стоимость рассчитывается за календарный месяц (Отчетный период).

Распознавание коротких аудио

Эти правила действуют при использовании распознавания коротких аудио с помощью запроса или в потоковом режиме.

Единица тарификации — отрезок одноканального аудио длительностью 15 секунд. Отрезки меньшей длительности округляются в большую сторону (1 секунда превращается в 15 секунд).

Примеры:

  • 1 аудиофрагмент 37 секунд тарифицируется как 45 секунд.

    Объяснение: аудио разбивается на 2 отрезка по 15 секунд и один отрезок 7 секунд. Длительность последнего отрезка будет округлена до 15 секунд. Итого, 3 отрезка по 15 секунд.

  • 2 аудиофрагмента по 5 и 8 секунд тарифицируются как 30 секунд.

    Объяснение: длительность каждого аудио будет округлена до 15 секунд. Итого, 2 отрезка по 15 секунд.

Распознавание длинных аудио

Эти правила действуют при использовании распознавания длинных аудио.

Единица тарификации — 1 секунда двухканального аудио. Отрезки меньшей длительности округляются в большую сторону. Количество каналов округляется до четного числа.

Минимум начисляется 15 секунд за каждые два канала. Аудио меньшей длительности тарифицируется, как 15 секунд.

Примеры с округлением длительности аудио:

ДлительностьКоличество каналовНачислено секунд
1 секунда115
1 секунда215
1 секунда330
15.5 секунд216
15.5 секунд432

Цены

Синтез речи

Распознавание речи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *