Компания
303,09
рейтинг
24 ноября 2014 в 14:06

Разработка → Интерактивное голосовое редактирование текста с помощью новых речевых технологий от Яндекса

Сегодня наше приложение Диктовка для интерактивного написания и редактирования текста голосом появилось в AppStore и Google Play. Его главная задача — продемонстрировать часть новых возможностей комплекса речевых технологий Яндекса. Именно о том, чем интересны и уникальны наши технологии распознавания и синтеза речи, я хочу рассказать в этом посте.



Пара слов, чтобы вы понимали, о чём пойдёт речь. Яндекс уже давно предоставляет бесплатное мобильное API, которое можно использовать, например, для распознавания адресов и голосовых запросов к поиску. За этот год мы смогли довести его качество почти до того же уровня, на котором такие запросы и реплики понимают сами люди. И теперь мы делаем следующий шаг — модель для распознавания свободной речи на любую тему.

Кроме этого, наш синтез речи поддерживает эмоции в голосе. И, насколько нам известно, это пока первый коммерчески доступный синтез речи с такой возможностью.

Обо всём этом, а также о некоторых других возможностях SpeechKit: об активации голосом, автоматической расстановке пунктуационных знаков и распознавании смысловых объектов в тексте — читайте ниже.

Всеядное ASR и качество распознавания


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

За прошедший год относительная доля ошибочно распознанных слов (Word Error Rate) понизилась на 30%. Например, сегодня SpeechKit правильно распознаёт 95% адресов и географических объектов, вплотную приблизившись к человеку, который понимает 96–98% услышанных слов. Полнота распознавания новой модели для диктовки разных текстов сейчас составляет 82%. С таким уровнем можно создать полноценное решение для конечных пользователей, что мы и хотели показать на примере Диктовки.

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

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

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



Но важнее и сложнее всего было собрать достаточно правильных данных, пригодных для обучения потоковой речи. Сейчас для тренировки акустической модели используются около 500 часов вручную транскрибированной речи. Это не такая уж большая база — для сравнения, популярный научный корпус Switchboard, который часто используют в исследовательских целях, содержит примерно 300 часов живых, спонтанных разговоров. Безусловно, увеличение базы способствует росту качества обучаемой модели, но мы делаем упор на правильную подготовку данных и аккуратнее моделируем транскрипции, что позволяет с приемлемым качеством обучаться на относительно небольшой базе.

Пара слов о том, как устроен модуль распознавания (подробно мы об этом рассказывали некоторое время назад). Поток записанной речи нарезается на фреймы по 20 мс, спектр сигнала масштабируется и после ряда преобразований для каждого фрейма получаются MFCC.



Коэффициенты поступают на вход акустической модели, которая вычисляет распределение вероятностей для примерно 4000 сенонов в каждом фрейме. Сенон — это начало, середина или конец фонемы.

Акустическая модель SpeechKit построена на комбинации скрытых Марковских моделей и глубокой нейронной сети прямого распространения (feedforward DNN). Это уже проверенное решение, и в прошлой статье мы рассказывали, как отказ от гауссовых смесей в пользу DNN дал почти двукратный скачок в качестве.



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



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



Распознавание длинных связных текстов доступно в SpeechKit Cloud и SpeechKit Mobile SDK — для использования новой языковой модели в параметрах запроса нужно выбрать тему «notes».

Голосовая активация


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

В отличие от, например, решения Google — их разработчики используют для распознавания коронной фразы «Окей, Google» глубокую нейронную сеть. DNN даёт высокое качество, но система активации при этом ограничена единственной командой, и для обучения нужно огромное количество данных. Скажем, модель для распознавания всем знакомой фразы обучалась на примере более чем 40 тысяч пользовательских голосов, которые обращались к своим смартфонам с Google Now.

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



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

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

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

Синтез речи


Третий основной компонент речевой технологии — это синтез речи (text-to-speech). TTS-решение SpeechKit позволяет озвучить любой текст мужским или женским голосом, да ещё и задав нужную эмоцию. Ни у одного из известных нам голосовых движков на рынке нет такой возможности.

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

В SpeechKit мы решили использовать статистический (параметрический) синтез речи на базе скрытых Марковских моделей. Процесс, по сути, аналогичен распознаванию, только происходит в обратном направлении. Исходный текст передаётся в модуль G2P (grapheme-to-phoneme), где преобразуется в последовательность фонем.



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



Тембр такого голоса несколько «компьютерный», зато у него естественные и плавные интонации. При этом гладкость речи не зависит от объёма и длины читаемого текста, а голос легко настраивать. Достаточно указать в параметрах запроса один ключ, и модуль синтеза выдаст голос с соответствующей эмоциональной окраской. Разумеется, никакая система unit selection на такое не способна.

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

Не все модификации голоса построены на обучении. Например, SpeechKit позволяет также окрасить синтезированный голос параметрами «drunk» и «ill». Наши разработчики пожалели Женю, и ей не пришлось напиваться перед записью или бегать на морозе, чтобы хорошенько простудиться.

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

Статистический метод также позволяет быстро расширять систему. В модели unit selection для добавления нового голоса нужно создать отдельную речевую базу. Диктор должен записать много часов речи, при этом безупречно выдерживая одинаковую интонацию. В SpeechKit для создания нового голоса достаточно записать хотя бы два часа речи — примерно 1800 специальных, фонетически-сбалансированных предложений.

Выделение смысловых объектов


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

Сейчас в SpeechKit реализовано выделение дат и времени, ФИО, адресов. В гибридной системе сочетаются контекстно-свободные грамматики, словари ключевых слов и статистические данные поиска и разных сервисов Яндекса, а также алгоритмы машинного обучения. Например, во фразе «поехали на улицу Льва Толстого» слово «улица» помогает системе определить контекст, после чего в базе данных Яндекс.Карт находится соответствующий объект.



В Диктовке мы построили на этой технологии функцию редактирования текста голосом. Подход к выделению сущностей принципиально новый, и упор сделан на простоту конфигурации — чтобы настроить систему, не нужно владеть программированием.

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

Например, есть две фразы: «вставить „привет, друг“ в начало» и «вставить из буфера». Система определяет, что в первом случае после «вставить» (действие редактирования) идёт произвольный текст, а во втором — известный ей объект («буфер обмена»), и по-разному реагирует на эти команды. В традиционной системе это потребовало бы написания правил или грамматик вручную, а в новой технологии Яндекса анализ контекста происходит автоматически.

Автопунктуация


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

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

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

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

Начать пришлось с чистого листа — мы решили расставлять знаки препинания уже на этапе пост-обработки. Начали с одного из простейших методов, который, как ни странно, показал в итоге вполне приемлемый результат. Паузы между словами получают одну из меток: пробел, точка, запятая, вопросительный знак, восклицательный знак, двоеточие. Чтобы предсказать, какая метка соответствует конкретной паузе, используется метод условных случайных полей (CRF — conditional random fields). Для определения контекста учитываются три предшествующих и два последующих слова, и эти нехитрые правила позволяют с достаточно высокой точностью расставлять знаки. Но мы продолжаем экспериментировать и с полноценными моделями, которые смогут ещё на этапе распознавания голоса правильно интерпретировать интонации человека с точки зрения пунктуации.

Планы на будущее


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

Для развития SpeechKit очень важна обратная связь. Поставьте Яндекс.Диктовку, разговаривайте с ней почаще — чем больше данных мы получаем, тем быстрее растёт качество распознавания в доступной всем вам библиотеке. Не стесняйтесь исправлять ошибки распознавания с помощью кнопки «Корректор» — это помогает разметить данные. И обязательно пишите в форму обратной связи в приложении.
Автор: @filldens
Яндекс
рейтинг 303,09

Комментарии (103)

  • +13
    Аплодирую стоя! Всегда интересно узнать, с какими проблемами сталкивались, как решали, как менялись подходы в процессе.
  • +1
    Планируется ли поддержка Голосовой активации в SpeechKit Cloud в каком-либо виде?
    • 0
      Уточните, что именно вы понимаете под этим?
      • +2
        Модуль, который бы реализовывал подобный функционал — слушать эфир на наличие команды на клиенте без постоянного взаимодействия с сервером. Не только в mobile sdk, но и, например, в виде подключаемой библиотеки. Сейчас в Cloud API есть потоковое распознавание, но это не совсем то.
    • 0
      Голосовая активация — это модуль, который постоянно «слушает эфир» и реагирует на ключевую фразу. То есть, для нее нужно а) постоянно отсылать звук и б) реализовать VAD и keyword spotting. И если второй момент — не проблема для веб-сервиса (более того, keyword spotting планируется реализовать в облаке), то с первым будут явные проблемы.
      • +1
        Про первый момент как раз написано в статье
        Во-первых, распознавание команды должно происходить на самом устройстве, без обращения к серверу.


        Вот именно этот функционал и хотелось бы иметь в виде отдельного модуля. Ведь распознавание применимо не только в вебе.
        • 0
          Если вы имеете ввиду полноценное встроенное распознавание речи на устройстве — то это весьма сложная задача, учитывая размеры моделей и ресурсы, требуемые для распознавания в реальном времени. Но мы над этим работаем.

          Мы сейчас говорим о мобильных устройствах, или о десктопе?
    • +2
      «Короче, яндекс»
  • 0
    А появится ли в Yandex.store?
    • 0
      Да, там Диктовка уже есть.
      • 0
        Извиняюсь, что-то не получается найти со своего смартфона сейчас.
  • +10
    А Вы не думали сделать нечто подобное но в виде веб сервиса, что бы работало и на обычных компьютерах, а не только на мобильных устройствах?

    Например, новый сервис яндекса, как дополнение к почте — Голосовой блокнот — открыл его, надиктовал, сохранил записочку, на мой взгляд, было бы удобно.
    • 0
      Во-во, для ПК это даже более актуально!
    • +2
      Вы имеете ввиду что-то типа этого? webasr.yandex.net (! это прототип)
      • 0
        Festival Text-to-Speech Online Demo — Technical и голоса в секции «HMM-based method»

        Третий основной компонент речевой технологии — это синтез речи (text-to-speech). TTS-решение SpeechKit позволяет озвучить любой текст мужским или женским голосом, да ещё и задав нужную эмоцию. Ни у одного из известных нам голосовых движков на рынке нет такой возможности.

        В SpeechKit мы решили использовать статистический (параметрический) синтез речи на базе скрытых Марковских моделей. Процесс, по сути, аналогичен распознаванию, только происходит в обратном направлении.


        Ну да, конечно) Это технологии 2010-11 года. Маркетинг, такой маркетинг!

        Вы бы не дезинформировали людей о том что синтез речи на базе скрытых Марковских моделей есть только у вас. Есть публикации про HMM и голосовые модели для open source TTS festival
        • 0
          Речь не о синтезе на базе СММ (технология действительно стандартная), а о придании синтезу эмоционального звучания.
  • +1
    organisation, adress? парле ву франсе?
    • +5
    • +5
      Минусятору поясняю, что в работе с языковыми технологиями хотелось бы видеть грамотность, по английски правильно будет organization, address
      image
      • +2
        Organisation — норма в британском английском. Про address вы правы, спасибо.
      • +1
        fixed
  • +1
    Отличные новости!
    К сожалению только, модель голосовой активации приходится заказывать у вас… В том же Sensory TrulyHandsfree разработчик настраивает модель самостоятельно. Так что пока это сильно тормозит процесс внедрения Яндекс распознавания в проект… Не планируете что-то с этим делать?? А то вот например мне уже больше недели не отвечаете на запрос модели ))

    Также есть вопросы по самой активации. В Яндекс Диктовке она пока показывает средние результаты — может легко активироваться на посторонние слова и фразы… Все же нужен инструмент для более тщательной настройки… Sensory в этом вопросе сделали довольно удобный вариант, как мне кажется.

    Относительно API — ребята, сделайте пожалуйста хотя бы для того же Android "низкоуровневое" API (я не имею в виду C), где звуковой поток бы забирала не ваша собственная абстракция, а код приложения. Чтобы можно было «безшовно» отдавать поток сперва в активацию, а потом — сразу в модуль распозанвания. Иначе время на освобождение аудио рекордера плюс время на установку соединения с сервером распознавания не позволяет строить распознавания в стиле «Окей гугл», когда пользователь может слитно, без паузы произнести и активацию, и саму команду…
    • +2
      А то вот например мне уже больше недели не отвечаете на запрос модели ))
      Очень жаль, что заставили вас так долго ждать — скоро мы наконец-то пришлём вам модель. К сожалению, пока это единственный способ получить модель для голосовой активации. Сейчас мы работаем над сервисом для автоматического построения модели — следите за новостями) В нём кроме непосредственно создания модели будет оценка количества ложных срабатываний, которая поможет подобрать оптимальный набор команд.
      Sensory в этом вопросе сделали довольно удобный вариант, как мне кажется.
      Спасибо, посмотрим.
      Относительно API...
      Да, это отличная идея. Мы планируем в скором времени добавить согласованности в работу компонентов SpeechKit'a, чтобы не приходилось синхронизировать управление аудио ресурсами вручную, была возможность сделать «бесшовный» переход, о котором вы писали.
      • +1
        Это отлично! Но если вы готовы реализовать полноценную связь между всеми компонентами системы, то неплохо было бы также реализовать и что-то наподобие технологии bridge из nuance vocon. Думаю вы понимаете, о чем это, но я все же поясню.

        Это механизм, «отсекающий» речь синтезатора из звукового потока с тем, чтобы пользователь мог использовать голосовую активацию и в момент, когда говорит синтезатор. Другими словами, система слушает микрофон устройства и в процессе воспроизведения текста синтезатором и выделяет из потока то, что произносит пользователь. Что думаете?
        • 0
          ИМХО, тут надо б отсекать всё, что идёт через динамик, а не только синтезированный текст…
          • 0
            Нет, отсечь все что идет через динамик технически невозможно хотя бы потому, что у стороннего приложения на том же андроиде нет данных о том, что сейчас идет через динамик. А если это синтезатор самой системы, производящей распознавание и синтез — то такая возможность есть, так как система знает, что она сейчас произносит.
            • 0
              а подавление эха в телефоном модуле не встроено на аппаратном уровне звуковой подсистемы?
        • 0
          Это интересная задача, мы о ней думали. На качество звука, получившегося после отсечения, будет влиять много непредсказуемых параметров — реверберация, помехи и задержки микрофона и динамика, и это будет ухудшать качество распознавания. Может быть, мы ей займёмся когда-нибудь, но не в ближайшее время.
          • 0
            примерно сюда же — шумоподавление. Пробовал в метро подиктовать — ничего не слышит. (
          • 0
            Ок, понятно… В этом плане nuance vocon довольно неплохо решил эту задачу. Там правда нужно проделать много возни с настройкой (то о чем вы говорите) под конкретный аппарат и тп. Но там это позволяет sdk…
  • +1
    Да, и еще хотел задать вопрос насчет функции «выделения смысловых объектов». В вашем «слайдовом» примере вы показали поиск сущностей типа «command» или «organization», что не совсем соответствует действительности? Ведь сейчас сервис не поддерживает поиск такого типа сущностей? Я к тому, а не планируете ли вы дать пользователям возможность самостоятельно создавать свои сущности?
    Хотя исходя из описанной вами схемы работы данного сервиса, вы продолжите наращивать базу сущностей своими методами?
    Я недавно описывал систему SpeechMarkup, где логика как раз строится на описании паттернов вручную, что открывает возможность кастомизации сущностей. Не думаете о подобном? Спасибо.
    • +3
      Да, одним из следующих шагов развития публичной версии технологии «выделения смысловых объектов» будет предоставление возможности пользователям создавать свои наборы сущностей, например, различные команды и объекты. Внутренняя версия уже поддерживает эту функциональность.
      • +1
        Денис, а не могли бы вы также ответить и на предыдущий мой вопрос относительно API? Спасибо.
  • +1
    Это супер. спасибо!
  • +5
    Но как же дорого то! У меня было приложение-говорун с 500к установок без рекламы и пиара На Вашем апи можно сделать просто дико круто, лямов на 100, но ведь без штанов же останешься при цене 5$ за 1000 запросов! Нет ли каких то более мягких условий, для тех же фри приложений, логотип там разместить Ваш например, вот это все?
    • +2
      Если речь о мобильном приложение, то SpeechKit Mobile SDK распространяется по модели freemium: 10 000 голосовых запров в сутки бесплатно. По нашей оценке такого объема вполне достаточно для большинства мобильных приложений.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Вот и я о том же. Получается смысла использовать этот апи нет( Вы покрыли только кейс надиктовал хрень, закрыл. А любое маломальски интересное приложение выжрет лимит уже на 100к установок и дальше чистые убытки которые не покроет ни банер ни инапы. Доходы в мобилках бесконечно далеки от 5$ с 1000 реквестов
        • 0
          По нашей оценке это нижняя граница цен на подобные сервисы. Вместе с этим мы готовы рассматривать различные схемы оплаты: 1) оплата за запросы 2) оплата за установки. Кроме этого, наверняка не 100% ежедневных пользователей обычно используют голосовую функциональность того или иного приложения.
  • 0
    В американском аппсторе пока нет. На модерации?
    • +1
      Сегодня должно появиться
  • +1
    Написано, что сделано, чтобы экономить аккумулятор при непрерывном ожидании ключевой фразы, но не написано, каких реальных показателей вы добились. Например, если телефон заряжается в среднем раз в день (то есть, интенсивное использование), на сколько сокращается время работы от одной зарядки при постоянно включенном модуле распознавания? А как у Гугла, лучше или хуже с этим?
    • 0
      Голосовая активация активна только если запущено приложение «Диктовка». Так что, беспокоиться не стоит :)
      • 0
        хм… то есть, оно в фоновом режиме не работает???
        • 0
          Яндекс.Диктовка — это приложение, прежде всего демонстрирующее возможности SpeechKit Mobile SDK. Поэтому цель постоянно «слушать эфир», как в Google Now, не ставилась. Кстати, по умолчанию, мой Nexus тоже не реагирует на «Ok, Google» в фоне.

          Впрочем, под андроид можно создать приложение с использованием Mobile SDK, которое бы слушало микрофон постоянно.
          • 0
            Ну я же не прошу по умолчанию. Пусть выключатель будет. И включатель. Голосовой ввод, требующий непосредственно перед работой тычков пальцами — штука не очень удобная, мягко говоря.
    • +1
      Я бы как раз хотел увидеть замеры ложных и правильных срабатываний в различных условиях — в тишине, на улице и тд. Примерно такого же вида как у Sensory
      • +1
        В ближайшем будущем мы планируем рассказать про каждую технологию в отдельности. В том числе, и про Голосовую активацию, мы сделаем отдельную статью, в которой поделимся замерами показателей качества.
  • +3
    Это очень круто. Прямо новости из будущего.
  • +2
    Уже кто-нибудь приделывает это к IDE, чтобы можно было не выпуская из рук чашки с кофе писать код кодить? :)
    • 0
      Кстати под этим соусом можно возродить интерес к native-like языкам программирования вроде Бейсика и Паскаля.
      • +3
        Наконец-то фразы вроде «иди ты» при чтении отладочных логов будут восприниматься системой, а не просто уходить в стены? :)

        А при помощи создания макрокоманд и тренировки гортани можно будет и на языках, требующих ->{} записи голосировать быстро.
        • +2
          и тренировки гортани
          Предлагаете специальные звуки для служебных символов? Вот весело будет регулярки писать :)
          • +5
            Проще насвистеть в 800 бод.
    • +2
      • 0
        От всей нашей комнаты и еще немножко от соседней спасибо за ссылку с Autoplay.
  • +4
    Поставьте Яндекс.Диктовку, разговаривайте с ней почаще…

    Если когда-нибудь появится версия для настольных компьютеров, обязательно поставлю.
  • +1
    Честно говоря распознает совсем не ахти :(
    Дома в полной тишине решил продиктовать — ерунда получается… Стишок «В лесу родилась ёлочка» — 100% попадание, но свободный текст — просто жесть
    Для примера начитал первый абзац поста:
    Сегодня наше предложение диктовка для интерактивного написание редактирование текста голосом кайласа 2 google play и лугано сдачи предместья его часть новых возможностей комплекса речевых технологий яндекса и мне о том, чем интересные уникальные нашей технологии распознавания речи хочу высказать им. Пусть
    • +1
      Ради интереса попробовал повторить ваш опыт. Знаки препинания почти все отсутствуют. Предложения слились. В 5-10 словах не корректные окончания. В остальном всё отлично. Отличный результат :) Правда я схитрил, и постарался говорить внятно и с дикторской интонацией.
      • +1
        Ради интереса попробовал повторить ваши лоты знаки препинания почти все отсутствуют предложения слились в 50 словах некорректно окончания в остальном все отлично отлично результат, правда, я схитрил и постарался говорить внятно из дикторские интонации В
        или вот =)
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Из доки:
        Формат аудиоданных запроса

        Поддерживаются следующие форматы:
        audio/x-speex
        audio/x-pcm;bit=16;rate=8000
        audio/x-pcm;bit=16;rate=16000
        audio/x-alaw;bit=13;rate=8000
        audio/x-wav
        audio/x-mpeg-3
        Прочие форматы преобразуются в PCM на стороне сервера.
        Примечание. x-speex означает «Speex in OGG», убедитесь, что в потоке присутствуют корректные заголовок OGG и структура кадров. Также проверьте, что для кодирования используется широкополосный сигнал (16kHz).
        Совет. Для наилучшего качества распознавания используйте формат audio/x-pcm;bit=16;rate=16000.
        Примечание. Под audio/x-mpeg-3 здесь имеется в виду MPEG-1 Audio Layer 3 (MP3).
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Если WiFi, то audio/x-pcm;bit=16;rate=16000, иначе audio/x-speex
    • 0
      Это наш первый шаг в сторону распознавания (диктовки) свободных текстов. Для каких то тематик (например, теже стихи) мы уже показываем очень хорошее качество, для диктовки свободных текстов (надиктовать статью) качество хуже.
      Вообще, это очень сложная и поэтому интересная задача — языковое моделирование для диктовки свободного текста или даже для распознавания спонтанной речи. Очевидно, что языковая модель обучается на определенных текстах и сейчас наша модель не покрывает все возможные тематики одинаково хорошо.
      А возможно ли создать одну универсальную языковую модель, покрывающую одинаково хорошо все тематики нашей жизни? Скорее нет. Для высокого качества распознавания, нам очень важно знать заранее тематику, на которую будет диктоваться текст и под эту тематику обучать языковую модель. Как быть в случае когда тематика заранее неизвестна?
      Мы сейчас ищем ответы на эти вопросы и экспериментируем с подходами к решению задачи распознавания спонтанной речи.
  • 0
    Сделайте, плиз, личную голосовую СУБД — как вот я описывал тут: geektimes.ru/post/90721/

    Для начала — просто чтоб похожие по структуре фразы могли укладываться заводимую по факту табличку сущностей из этих фраз. То есть, делаешь несколько заметок одного типа — и чтоб можно было увидеть, что вот, несколько заметок похожи друг на друга, вот наблюдаемый шаблон, а вот — перечень отличавшихся объектов в нём. И чтоб можно было сгруппировать их, отделив от общего списка, и новые фразы с таким шаблоном ссыпались бы в ту же группу.
  • 0
    Какие features вы используете для акустического моделирования — i-vectors или какие-то другие?
    • 0
      Обычные MFCC. i-vectors — это немного про другое, они не могут быть низкоуровневыми признаками речи, такими как MFCC или PLP.
  • +3
    Каким образом вы соединяете вывод WFST с RNN? Я так полагаю, что через n-best lattice? Вы делаете публикации по результатам ваших исследований?
    • +1
      Да, N-best еще раз рескорится RNN-LM.
  • +10
    — Слушай, Яндекс. Пять миллиардов.
    — 705032704

    Ох уж этот Int32
    • 0
      спасибо, fixed
  • +2
    Планируется ли библиотека с голосовой активацией для ПК? Почему все производители решений для распознавания речи (Google, Nuance, Yandex и др.) так ориентированы на мобильный рынок, рынок домашних ПК тоже не маленький и там востребованность такой технологии как мне кажется еще больше. А рынок встраиваемых систем, почему то все ограничиваются только платформой Android и iOS а как же Windows и Linux? Грустно и обидно :(
    • 0
      Nuance sdk есть и под linux и под windows. То же и у sensory.
    • +3
      Дело в том, что рынок мобильных устройств очень быстро растет и по объемам продаж уже обгоняет десктопы и ноутбуки. На мобильных устройствах востребованность речевых технологий сильно выше по сравнению с десктопами/ноутбуками по ряду причин, например:
      1) Неудобства ввода текста с помощью экранной клавиатуры;
      2) Ограниченные размеры экрана — мелкие элементы графического интерфейса приложений (иногда нужно целиться), различная функциональность приложения спрятана на разных экранах интерфейса (как правило, на первом экране всё уместить не получается);
      3) Использование в ситуациях когда заняты руки: на ходу, за рулем, на велосипеде и т.п.

      Но мы уже начали делать шаги в сторону немобильных устройств, с помощью SpeechKit Cloud речевые технологии Яндекса уже сейчас можно встраивать в любые устройства/сервисы с доступом в интернет.
      • 0
        Сколько у друзей не спрашивал, никто не использует голосовой ввод и тем более управление, слишком криво они работают на мобильном и что еще существеннее, использование распознавания в зашумленных местах сильно ограничено. При поездке в метро гораздо проще набрать смс руками, чем пытаться кричать в микрофон телефона, ну а про наличие мобильного интернета в некоторых городах страны я вообще молчу, а раз нет быстрого интернета, то как использовать Ваше распознавание?
        А вот дома и на работе, в тихой обстановке я легко использую свою программу MSpeech для надиктовки текста в ICQ, в браузере и т.д.
        • +2
          Сложно тут поспорить, конечно, в тихой обстановке распознаванию речи сильно проще. Но вместе с этим, по нашим данным это не мешает миллионам людей каждый день в очень шумной обстановке использовать голосовой ввод и голосовое управление, например, в Яндекс.Навигаторе.

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

          Вот небольшой прототип web диктовки, можете попробовать подиктовать на ПК: webasr.yandex.net/
          • 0
            >>Вот небольшой прототип web диктовки

            Очень сырой прототив, в FF35 ничего толком не распознает :(
            • 0
              А можете привести пример: что Вы диктовали и что в итоге распозналось. Спасибо.
              • 0
                Раз два три четыре пять вышел зайчик погулять.

                А распозналось только 1 2 3 4 5

                Хотя сейчас еще раз попробовал, вроде распознал все, но задержка ооооочень большая, я уже успел сказать еще 10 слов после ПОГУЛЯТЬ, а он все что то думает, точки бегут и бегут.
  • 0
    Хотел написать, что работает так себе, а тут уже написали. Хочу добавить, что у меня лучше всех работает распознование в swype.
  • 0
    Есть ли у вас в планах модуль для asterisk'а?
    • +1
      Экспериментируем сейчас с asterisk; да, возможно, выпустим свой модуль для упрощения интеграции
  • 0
    А когда будет модуль TTS для андроида?
      • +1
        это же не то, я не могу его как ещё один TTS-движок инсталлировать в систему из маркета, чтобы андроид им свой интерфейс озвучивал. Гугловый могу, svox могу, acapela tts могу, а этот — нет.
        • +2
          Извините, не понял сразу, что вы имели ввиду. Мы в ближайшем будущем не планировали создание такого модуля, но идея очень хорошая и мы возьмем её в работу. Спасибо.
  • 0
    А сколько занимает модерация проекта и составление файлов для VAD?
    Я отправил запрос — ни привета, ни ответа.
    Может стоит автоматизировать?
    • 0
      Обычно, 1-2 дня.
      Уже автоматизируем и скоро дадим инструмент для самостоятельного создания моделей для Голосовой активации (Voice Activation).
      • 0
        1-2 дня? Мне вот уже больше недели не отвечает техсап…
        • 0
          Извините, пожалуйста, за столь долгое ожидание — процесс не был оптимально налажен. Модель Вам отправили сегодня.
          • 0
            Да, Денис, спасибо. Уже интегрировали, но качество гораздо ниже чем у решения на том же pocketsphinx… Верных срабатываний очень мало.
            Будет ли у вас инструмент для какой-то тонкой настройки??
          • 0
            Всё то же самое. Ответа до сих пор нет.
            Как пробовать сервис-то, если у вас так «процесс отлажен»?
            • 0
              Инструмента для тонкой настройки мы на данный момент не планировали, делаем сейчас инструмент для самостоятельного создания моделей для голосовой активации.

              Как пробовать сервис-то, если у вас так «процесс отлажен»?

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

    Но у меня один юзерский вопрос — зачем вашему приложению (Яндекс.Диктовка) доступ к фото и видео файлам пользователя?
    В чем ваша логика при задании разрешений?
    • 0
      После запуска Диктовка распаковывает модель для голосовой активации на SD-карту в каталог приложения. В версиях Android до 4.4 для этого необходима особая привелегия — для записи на SD. В новых версиях для доступа к этому каталогу привилегия не нужна, и в следующем обновлении мы уберём её.
  • 0
    странно, что в диктовке не распознаются и в последствии не воспроизводятся правильные ударения ударения. по идее их ведь должно быть достаточно просто считать с человеческой речи?
  • +1
    Скрытые марковские модели, глубокая нейронная сеть, рекуррентная нейронная сеть и всё в 1 месте!

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

    можно ли как то дообучить модель под конкретного человека?
    Попробовал webasr.yandex.net/ пока получается примерно так:
  • 0
    Время шло, а использование SDK на Tegra2-based процессорах так и продолжало крашить приложение…

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

Самое читаемое Разработка