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

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

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

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

Программа преобразования речи в текст

Перейдём к непосредственному описанию программ, способных помочь в переводе речи в текст.

Программа «Laitis»

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

Для своей работы программа требует обязательного наличия на ПК скоростного интернета (в работе программы используются сетевые сервисы распознавания голоса от «Google» и «Yandex»). Возможности программы позволяют, также, управлять с помощью голосовых команд и вашим браузером, для чего необходима установка на веб-навигатор специального расширения от «Laitis» (Chrome, Mozilla, Opera).

«Dragon Professional» — расшифровка аудиозаписей в текст

На момент написания данного материала цифровой англоязычный продукт « Dragon Professional Individual » является одним из мировых лидеров по качеству распознаваемых текстов. Программа понимает семь языков (с русским пока работает лишь мобильное приложение «Dragon Anywhere» на и ), обладает высоким качеством распознавания голоса, умеет выполнять ряд голосовых команд. При этом данный продукт имеет исключительно платный характер (цена за основную программу составляет 300 долларов США, а за «домашнюю» версия продукта «Dragon Home » покупателю придётся выложить 75 американских долларов).

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

«RealSpeaker» — сверхточный распознаватель речи

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


«RealSpeaker» считывает не только аудио, но и визуальную составляющую процесса речи

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

«Voco» — программа быстро переведёт голос в текстовый документ

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

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


Среди плюсов «Voco» — высокая обучаемость программы

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

Заключение

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

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

Таблица 2

Сравнительная характеристика продуктов «ABBYY FlexiCapture» и «CORRECT. Автоматизация ввода и обработки документов»

Программа

Возможности

Системные требования

ABBYY FlexiCapture

Автоматизирует извлечение информации из бумажных документов и сохраняет данные в информационной системе предприятия

ОС: Windows XP SP2, Vista SP2, 7, Server 2003 SP2, Server 2008 SP2 или R2 + Desktop Expirience. Требования к компьютеру: ПК с процессором семейств Intel Core2/2 Quad/Pentium/Celeron/Xeon/Core i5/Core i7, AMD K6/Turion/Athlon/Duron/Sempron, тактовая частота 2 ГГц или выше;

Требования к установленному программному обеспечению:

Net Framework 2.0 или выше, если используются скрипты.Net.

Дополнительные требования: интернет-соединение для активации серийного номера, USB-порт для аппаратного ключа защиты.

Информация о цене доступна при заказе. Возможен заказ пробной версии.

CORRECT. Автоматизация ввода и обработки документов

Решение для автоматизированной обработки первичной бухгалтерской документации на базе ABBYY FlexiCapture с использованием аутсорсинга.

ОС: Windows XP SP2, Vista SP2, 7, Server 2003 SP2, Server 2008 SP2 или R2 + Desktop Expirience. Требования к компьютеру:

ПК с процессором семейств Intel Core2/2 Quad/Pentium/Celeron/Xeon/Core i5/Core i7, AMD K6/Turion/Athlon/Duron/Sempron, тактовая частота 2 ГГц или выше;

ОП:512 Мб на каждое ядро процессора, но не менее 1 Гб; место на диске: 1 Гб, из них 700 Мб для установки; сканер с поддержкой TWAIN, WIA или ISIS; интернет-соединение для активации серийного номера, USB-порт для аппаратного ключа защиты; видеоплата и монитор с разрешением не менее 1024Ч768; клавиатура, мышь или другое указательное устройство.

Информация о цене доступна при заказе.

Таблица 3

Сравнительная характеристика программ для голосового ввода

Доступно на:

Особенности программы

Яндекс. Диктовка

iPhone и iPad и для Android

  • - Голосовая активация. Чтобы начать запись, достаточно произнести «Яндекс, записывай».
  • - Распознавание речи. Вы говорите, а приложение превращает вашу речь в текст.
  • - Голосовое управление. Отредактировать текст можно с помощью команд -- например, «Удали последнее слово», «Начни с новой строки», «Добавь весёлый смайлик». Яндекс. Диктовка не только распознаёт слова, но и понимает их смысл, поэтому список команд не ограничен.
  • - Расстановка знаков пунктуации. Приложение ориентируется на паузы в речи и само расставляет знаки препинания.
  • - Синтез речи

Windows 7 и 8.Началась разработка Android-приложения

«Скачай бесплатно RealSpeaker, и ты сможешь вводить текст любой длины с помощью голоса в любой текстовый редактор (блокнот, MS Word, Skype, VKontakte, Facebook и т.д.) на любом из одиннадцати языков», -- указано на сайте проекта. При этом системные требования RealSpeaker заявлены вполне демократичные: компьютер с фронтальной камерой и микрофоном, наличие доступа в интернет, ОС Windows 7 или 8.

Горыныч 5.0 Dict Light

Совместимость с операционными системами Microsoft Windows Me/2000/XP.

Очень простой и удобный интерфейс.

Быстрая и легкая настройка микрофона.

Возможность добавлять в словарь собственные слова.

Тренировка слов непосредственно в процессе диктовки.

Интегрируется во множество различных приложений, в первую очередь - в Microsoft Word

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

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

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

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

Обновлено: Понедельник, Июль 31, 2017

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

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

Ну, вот и я отдал дань традиции, слегка пофантазировал. Но, говоря от души, эта статья писалась трудно, а началось все с подарка в виде смартфона с ОС «Андроид 4». Эта модель HUAWEI U8815 имеет небольшой сенсорный экран в четыре дюйма и экранную клавиатуру. Набирать на ней несколько непривычно, но оказалось это и не особенно нужно. (image01)

1. Распознание голоса в смартфоне на ОС «Андроид»

Осваивая новую игрушку, я заметил графическое изображение микрофона в строке поиска Google и на клавиатуре в «Заметках». Ранее мне было не интересно, что этот символ обозначает. Разговоры я вел в Skype , а письма набирал на клавиатуре. Так поступает большинство пользователей Интернета. Но как потом мне объяснили, в поисковик Google был добавлен голосовой поиск на русском языке и появились программы, позволяющие диктовать короткие сообщения при использовании браузера «Chrome» .

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


2. Краткая история программ распознания голоса.

Для меня не было открытием, что современные достижения в области управления голосом позволяют отдавать команды бытовой технике, автомобилю, роботу. Командный режим был представлен в прошлых версиях Windows, OS/2 и Mac OS. Мне встречались программы-говорилки, но что с них пользы? Возможно, это моя особенность, что говорить мне проще, чем печатать на клавиатуре, а на сотовом телефоне я вообще не могу ничего набрать. Приходится записывать контакты на ноутбуке с нормальной клавиатурой и передавать по USB кабелю. Но чтобы просто говорить в микрофон и компьютер сам набирал текст без ошибок – это для меня было мечтой. Атмосферу безнадежности поддерживали дискуссии на форумах. В них везде была такая печальная мысль:

«Однако на деле до настоящего времени программ для реального распознавания речи (да еще и на русском языке) практически не существует, и созданы они будут, очевидно, не скоро. Более того, даже обратная распознаванию задача - синтез речи, что, казалось бы, значительно проще распознавания, до конца так и не решена». (КомпьютерПресс №12, 2004г.)

«Нормальных программ распознавания речи (не только русской) по сию пору нет, поскольку задача изрядно трудна для компьютера. А хуже всего то, что механизм распознавания слов человеком так и не осознан, поэтому не от чего отталкиваться при создании программ-распознавалок». (Еще одно обсуждение на форуме).

При этом обзоры англоязычных программ ввода текста голосом указывали на явные успехи. Например, IBM ViaVoice 98 Executive Edition имела базовый словарь в 64000 слов и возможность добавления такого же количества своих слов. Процент распознания слов без тренировки программы был около 80% и при последующей работе с конкретным пользователем доходил до 95%.

Из программ распознания русского языка стоит отметить «Горыныч» – дополнение к англоязычной Dragon Dictate 2.5. Про поиски, а потом «битву с пятью Горынычами» я расскажу во второй части обзора. Первым я нашел «английского Дракона».

3. Программа распознания слитной речи «Dragon Naturally Speaking»

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

Полное название первого моего дракона звучало так: . Программа на английском и все в ней понятно даже без руководства. Первым шагом необходимо создать профиль конкретного пользователя для определения особенностей звучания слов в его исполнении. Что я и сделал – важен возраст говорящего, страна, особенности произношения. Мой выбор таков: возраст 22–54 года, английский UK, произношение стандартное. Далее идет несколько окон, в которых вы настраиваете свой микрофон. (image04)

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

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

Отказавшись от адаптации программой моего произношения, я перешел в основное окно и запустил встроенный текстовой редактор. Говорил отдельные слова из каких-то текстов, что нашел на компьютере. Те слова, что произнес правильно, программа напечатала, те, что плохо сказал, заменила чем-то «английским». Произнеся команду «стереть строку» по-английски четко – программа ее выполнила. Значит, команды я читаю правильно, и программа распознает их без предварительной тренировки.

Но мне было важно, как этот «дракон» пишет по-русски. Как вы поняли из предыдущего описания, при тренировке программы можно выбрать только английский текст, русского там попросту нет. Понятно, что и натренировать распознание русской речи не получится. На следующем фото можно увидеть, какую фразу набрала прога при произнесении русского слова «Привет». (image06)

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

Но есть и полезный опыт. Моя знакомая попросила посмотреть состояние ее ноутбука. Как-то медленно он стал работать. Это не удивительно – системный раздел имел только 5% свободного места. Удаляя ненужные программы я увидел, что официальная версия занимала более 2,3 Гб. Эта цифра нам пригодится позже. (image. 07)



Распознание русской речи, как оказалось, было задачей нетривиальной. В Минске мне удалось найти у знакомого «Горыныча». Диск он долго искал в своих старых завалах и, по его словам, это официальное издание. Установилась прога мгновенно, и я узнал, что в ее словаре есть 5000 русских слов плюс 100 команд и 600 английских слов плюс 31 команда.

Вначале нужно настроить микрофон, что я сделал. Потом открыл словарь и добавил слово «проверка» ибо его не оказалось в словаре программы. Старался говорить четко, монотонно. Наконец, открыл программу «Горыныч Про 3,0», включил режим диктовки и получил вот такой список «близких по звучанию слов». (image. 09)

Полученный результат меня озадачил, ведь он явно отличался в худшую сторону от работы андроид-смартфона, и я решил попробовать другие программы из «интернет-магазина Google Chrome» . А разбираться со «змеями-горынычами» отложил на потом. Мне показалось это откладывание действием в исконно русском духе

5. Возможности компании Google по работе с голосом

Для работы с голосом на обычном компьютере с OS Windows вам понадобится установить браузер Google Chrome . Если вы в нем работаете в Интернете, то внизу справа можно нажать на ссылку магазина программного обеспечения. Там совершенно бесплатно я нашел две программы и два расширения для голосового ввода текста. Программы называются «Голосовой блокнот» и «Войснот – голос в текст» . После установки их можно найти на закладке «Приложения» вашего браузера «Хром» . (image. 10)

Расширения называются «Google Voice Search Hotword (Beta) 0.1.0.5» и «Голосовой ввод текста — Speechpad.ru 5.4» . После установки их можно будет выключить или удалить на вкладке «Расширения» . (image. 11)

VoiceNote . На вкладке приложения в браузере «Хром» дважды щелкните иконку программы. Откроется диалоговое окно как на картинке ниже. Нажав на значке микрофона, вы говорите в микрофон короткие фразы. Программа передает ваши слова на сервер по распознанию речи и набирает текст в окне. Все слова и фразы, показанные на иллюстрации, были набраны с первого раза. Очевидно, что этот способ работает только при активном подключении к Интернету. (image. 12)

Голосовой блокнот . Если запустить программу на вкладке приложений, то откроется новая вкладка Интернет страницы Speechpad.ru . Там есть подробная инструкция, как пользоваться этой службой и компактная форма. Последняя показана на иллюстрации ниже. (image. 13)

Голосовой ввод текста позволяет заполнять текстовые поля Интернет страниц голосом. Для примера я вышел на свою страницу «Google+» . В поле ввода нового сообщения щелкнул правой кнопкой мыши и выбрал пункт «SpeechPad» . Окрашенное в розовый цвет окно ввода говорит, что можно диктовать ваш текст. (image. 14)

Google Voice Search позволяет производить поиск голосом. При установке и активации этого расширения в строке поиска появляется символ микрофона. Когда вы его нажмете, появится символ в большом красном круге. Просто скажите поисковую фразу и она появится в результатах поиска. (image. 15)

Важное замечание: для работы микрофона с расширениями «Хром» вам нужно разрешить доступ к микрофону в настройках браузера. По умолчанию в целях безопасности он запрещен. Пройдите в Настройки→Личные данные→Настройки контента . (Для доступа ко всем настройкам в конце списка щелкните Показать дополнительные настройки) . Откроется диалоговое окно Настройки содержания страницы . Выберите вниз по списку пункт Мультимедиа→микрофон .

6. Итоги работы с программами распознания русской речи

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

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

Программы российских разработчиков «Горыныч» , «Диктограф» и «Комбат» я подробно рассмотрю во второй части данного обзора. Эта статья писалась очень медленно по той причине, что сам поиск оригинальных дисков сейчас затруднен. На данный момент у меня уже есть все версии российских «распознавалок» голоса в текст кроме «Комбат 2.52». Ни у кого из моих знакомых или коллег нет этой программы, а я сам имею только несколько хвалебных отзывов на форумах. Правда нашелся такой странный вариант – скачать «Комбат» через SMS, но мне он не нравится. (image16)


Короткий видео ролик покажет вам, как идет распознание речи в смартфоне с ОС Андроид. Особенность голосового набора — это необходимость подключения к серверам Гугла. Таким образом у вас должен работать Интернет

Пожалуй, самая удобная программа для расшифровки текста для Windows и Mac OS, которая совмещает в себе аудиоплеер и текстовый редактор. Принцип работы очень прост – загружаете в программу аудиофайл, прослушиваете его при помощи горячих клавиш на клавиатуре (их можно назначать самому) и параллельно набираете текст. Скорость воспроизведения и громкость аудио также регулируются при помощи клавиатуры. Таким образом, ваши руки постоянно находятся на клавиатуре и отпадает необходимость использовать мышку или переключаться между разными программами. Нужно учитывать, что встроенный редактор текста не распознает ошибки и не имеет многих других привычных функций, например, переключение дефиса в тире. Однако можно пользоваться другими редакторами текста параллельно с Express Scribe, используя горячие клавиши для управления воспроизведением аудио. Программа условно бесплатная, полная стоимость: 17-50 долларов.


02. Transcriber-pro



Русскоязычная программа для Windows, которая позволяет прослушивать не только аудио, но и просматривать видеофайлы. Встроенный текстовый редактор имеет возможность проставлять временные метки и имена собеседников. Полученный текст можно импортировать в «интерактивные стенограммы», а также корректировать в рамках группового проекта. Приложение доступно только при годовой подписке, стоимость – 689 рублей в год.


03. RSplayer V1.4



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

04. Voco

Профессиональное Windows-приложение для преобразования речи в текст. Поддерживает голосовой набор в любом тестовом браузере, имеет большую коллекцию тематических словарей и не требует подключения к интернету для распознавания речи. Расширенные версии «Voco.Professional» и «Voco.Enterprise» могут работать с готовыми аудиофайлами. Единственный недостаток – высокая стоимость приложения.


05. Dragon Dictation



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


06. RealSpeaker



Уникальное приложение, которое способно не только распознавать аудиофайлы, но и живую речь, наговариваемую на камеру. За счет специального видеорасширения «RealSpeaker» считывает движение губ, тем самым улучшая процесс распознавания речи до 20-30% по сравнению с другими подобными алгоритмами. На данный момент приложение поддерживает 11 языков: русский, английский (американский и британский диалекты), французский, немецкий, китайский, корейский и японский, турецкий, испанский, итальянский и украинский. Программа распространяется условно бесплатно, стоимость зависит от времени подписки, бессрочная версия стоит около 2 тыс. руб.

) на реальном Hello World примере управления домашней техникой.
Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность , которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit .
К статье я также прилагаю все исходники программы и саму сборку под Android .

С чего вдруг?

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

Зачем нам что-то еще кроме Яндекса и Google?

В качестве того самого «практического применения» я выбрал тему голосового управления умным домом .
Почему именно такой пример? Потому что на нем можно увидеть те несколько преимуществ полностью локального распознавания речи перед распознаванием с использованием облачных решений. А именно:
  • Скорость - мы не зависим от серверов и поэтому не зависим от их доступности, пропускной способности и т.п. факторов
  • Точность - наш движок работает только с тем словарем, который интересует наше приложение, повышая тем самым качество распознавания
  • Стоимость - нам не придется платить за каждый запрос к серверу
  • Голосовая активация - как дополнительный бонус к первым пунктам - мы можем постоянно «слушать эфир», не тратя при этом свой трафик и не нагружая сервера

Примечание

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

Так Android же умеет распознавать речь без интернета!
Да-да… Только на JellyBean. И только с полуметра, не более. И это распознавание - это та же диктовка, только с использованием гораздо меньшей модели. Так что управлять ею и настраивать ее мы тоже не можем. И что она вернет нам в следующий раз - неизвестно. Хотя для СМС-ок в самый раз!

Что будем делать?

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

Вариантов практического применения масса

Утром, не открывая глаз, хлопнули ладонью по экрану смартфона на тумбочке и командуем «Доброе утро!» - запускается скрипт, включается и жужжит кофеварка, раздается приятная музыка, раздвигаются шторы.
Повесим по дешевому (тысячи по 2, не более) смартфону в каждой комнате на стенке. Заходим домой после работы и командуем в пустоту «Умный дом! Свет, телевизор!» - что происходит дальше, думаю, говорить не надо.

Транскрипции



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

Транскрипции описываются с помощью специального синтаксиса. Например:
умный uu m n ay j дом d oo m

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

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

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

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

Одно стоит упомянуть обязательно. Для активационной фразы нужно не только указать транскрипцию, но и подобрать подходящее значение порога чувствительности . Слишком маленькое значение приведет к множеству ложных срабатываний (это когда вы не говорили активационную фразу, а система ее распознает). А слишком высокое - к невосприимчивости. Поэтому данная настройка имеет особую важность. Примерный диапазон значений - от 1e-1 до 1e-40 в зависимости от активационной фразы .

Активация по датчику приближения

Эта задача специфична именно для нашего проекта и напрямую к распознаванию не имеет отношения. Код можно увидеть прямо в главной активности .
Она реализует SensorEventListener и в момент приближения (значение сенсора меньше максимального) включает таймер, проверяя после некоторой задержки, перекрыт ли до сих пор датчик. Это сделано для исключения ложных срабатываний.
Когда датчик снова не перекрыт, мы останавливаем распознавание, получая результат (см описание далее).

Запускаем распознование

Pocketsphinx предоставляет удобный API для конфигурирования и запуска процесса распознавания. Это классы SppechRecognizer и SpeechRecognizerSetup .
Вот как выглядит конфигурация и запуск распознавания:

PhonMapper phonMapper = new PhonMapper(getAssets().open("dict/ru/hotwords")); Grammar grammar = new Grammar(names, phonMapper); grammar.addWords(hotword); DataFiles dataFiles = new DataFiles(getPackageName(), "ru"); File hmmDir = new File(dataFiles.getHmm()); File dict = new File(dataFiles.getDict()); File jsgf = new File(dataFiles.getJsgf()); copyAssets(hmmDir); saveFile(jsgf, grammar.getJsgf()); saveFile(dict, grammar.getDict()); mRecognizer = SpeechRecognizerSetup.defaultSetup() .setAcousticModel(hmmDir) .setDictionary(dict) .setBoolean("-remove_noise", false) .setKeywordThreshold(1e-7f) .getRecognizer(); mRecognizer.addKeyphraseSearch(KWS_SEARCH, hotword); mRecognizer.addGrammarSearch(COMMAND_SEARCH, jsgf);

Здесь мы сперва копируем все необходимые файлы на диск (Pocketpshinx требует наличия на диске аккустической модели, грамматики и словаря с транскрипциями). Затем конфигурируется сам движок распознавания. Указываются пути к файлам модели и словаря, а также некоторые параметры (порог чувствительности для активационной фразы). Далее конфигурируется путь к файлу с грамматикой, а также активационная фраза.

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

MRecognizer.startListening(KWS_SEARCH);
А вот так - распозанвание речи по заданной грамматике:

MRecognizer.startListening(COMMAND_SEARCH, 3000);
Второй аргумент (необязательный) - количество миллисекунд, после которого распознавание будет автоматически завершаться, если никто ничего не говорит.
Как видите, можно использовать только один движок для решения обеих задач.

Как получить результат распознавания

Чтобы получить результат распознавания, нужно также указать слушателя событий, имплементирующего интерфейс RecognitionListener .
У него есть несколько методов, которые вызываются pocketsphinx-ом при наступлении одного из событий:
  • onBeginningOfSpeech - движок услышал какой-то звук, может быть это речь (а может быть и нет)
  • onEndOfSpeech - звук закончился
  • onPartialResult - есть промежуточные результаты распознавания. Для активационной фразы это значит, что она сработала. Аргумент Hypothesis
  • onResult - конечный результат распознавания. Этот метод будет вызыван после вызова метода stop у SpeechRecognizer . Аргумент Hypothesis содержит данные о распознавании (строка и score)

Реализуя тем или иным способом методы onPartialResult и onResult, можно изменять логику распознавания и получать окончательный результат. Вот как это сделано в случае с нашим приложением:

@Override public void onEndOfSpeech() { Log.d(TAG, "onEndOfSpeech"); if (mRecognizer.getSearchName().equals(COMMAND_SEARCH)) { mRecognizer.stop(); } } @Override public void onPartialResult(Hypothesis hypothesis) { if (hypothesis == null) return; String text = hypothesis.getHypstr(); if (KWS_SEARCH.equals(mRecognizer.getSearchName())) { startRecognition(); } else { Log.d(TAG, text); } } @Override public void onResult(Hypothesis hypothesis) { mMicView.setBackgroundResource(R.drawable.background_big_mic); mHandler.removeCallbacks(mStopRecognitionCallback); String text = hypothesis != null ? hypothesis.getHypstr() : null; Log.d(TAG, "onResult " + text); if (COMMAND_SEARCH.equals(mRecognizer.getSearchName())) { if (text != null) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); process(text); } mRecognizer.startListening(KWS_SEARCH); } }

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

Private synchronized void startRecognition() { if (mRecognizer == null || COMMAND_SEARCH.equals(mRecognizer.getSearchName())) return; mRecognizer.cancel(); new ToneGenerator(AudioManager.STREAM_MUSIC, ToneGenerator.MAX_VOLUME).startTone(ToneGenerator.TONE_CDMA_PIP, 200); post(400, new Runnable() { @Override public void run() { mMicView.setBackgroundResource(R.drawable.background_big_mic_green); mRecognizer.startListening(COMMAND_SEARCH, 3000); Log.d(TAG, "Listen commands"); post(4000, mStopRecognitionCallback); } }); }
Здесь мы сперва играем небольшой сигнал для оповещения пользователя, что мы его услышали и готовы к его команде. На это время микрофон долже быть выключен. Поэтому мы запускаем распознавание после небольшого таймаута (чуть больше, чем длительность сигнала, чтобы не услышать его эха). Также запускается поток, который остановит распознавание принудительно, если пользователь говорит слишком долго. В данном случае это 3 секунды.

Как превратить распознанную строку в команды

Ну тут все уже специфично для конкретного приложения. В случае с нагим примером, мы просто вытаскиваем из строчки названия устройств, ищем по ним нужное устройство и либо меняем его состояние с помощью HTTP запроса на контроллер умного дома, либо сообщаем его текущее состояние (как в случае с термостатом). Эту логику можно увидеть в классе Controller .

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

Синтез речи - это операция, обратная распознаванию. Здесь наоборот - нужно превратить строку текста в речь, чтобы ее услышал пользователь.
В случае с термостатом мы должны заставить наше Android устройство произнести текущую температуру. С помощью API TextToSpeech это сделать довольно просто (спасибо гуглу за прекрасный женский TTS для русского языка):

Private void speak(String text) { synchronized (mSpeechQueue) { mRecognizer.stop(); mSpeechQueue.add(text); HashMap params = new HashMap(2); params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UUID.randomUUID().toString()); params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC)); params.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true"); mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, params); } }

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

Private final TextToSpeech.OnUtteranceCompletedListener mUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() { @Override public void onUtteranceCompleted(String utteranceId) { synchronized (mSpeechQueue) { mSpeechQueue.poll(); if (mSpeechQueue.isEmpty()) { mRecognizer.startListening(KWS_SEARCH); } } } };

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

И это все?

Да! Как видите, быстро и качественно распознать речь прямо на устройстве совсем несложно, благодаря наличию таких замечательных проектов, как Pocketsphinx. Он предоставляет очень удобный API, который можно использовать в решении задач, связанных с распознаванием голосовых команд.

В данном примере мы прикрутили распознавание к вполне кокрентной задаче - голосовому управлению устройствами умного дома . За счет локального распознавания мы добились очень высокой скорости работы и минимизировали ошибки.
Понятно, что тот же код можно использовать и для других задач, связанных с голосом. Это не обязательно должен быть именно умный дом. Добавить метки