Голосовое распознавание текста - Посоветуйте программу для набора текста голосом?

Только полноправные пользователи могут оставлять комментарии. TM Feed Хабрахабр Geektimes Тостер Мой круг Фрилансим. Хабрахабр Публикации Пользователи Хабы Компании Песочница. В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx для iOS порт OpenEars на реальном Hello World примере управления домашней техникой. Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность , которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.

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

На что получил встречный вопрос о том, не мог бы я поподробней описать применение альтернативных способов для проектов, где нет необходимости распознавать что угодно, а словарь состоит из конечного набора слов. Да еще и с примером практического применения… Зачем нам что-то еще кроме Яндекса и Google? Почему именно такой пример?

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

Грамматика JSGF Формат грамматики JSGF используется Pocketsphinx, как и многими другими подобными проектами. В нем можно с достаточной гибкостью описать те варианты фраз, которые будет произносить пользователь.

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

Когда датчик снова не перекрыт, мы останавливаем распознавание, получая результат см описание далее. Программирование 2,9k авторов , 6,6k публикаций.

JavaScript 1,9k авторов , 4,1k публикаций. Разработка веб-сайтов 4,1k авторов , 9,7k публикаций. Java 1,1k авторов , 2,2k публикаций. Python автора , 1,8k публикаций. Разработка мобильных приложений 1k авторов , 2,8k публикаций.

Разработка под e-commerce автора , публикаций. Машинное обучение авторов , публикации. PHP 1,4k авторов , 2,6k публикаций. Laravel 58 авторов , публикаций. Собеседование для фронтенд-разработчика на JavaScript: Добавить в закладки Дмитрий Че morfeusys карма. Спасибо, очень круто, как раз планировал под iOS своему приложению управления умным домом добавить поддержку голоса! Так для управления оконечными устройствами. Он формирует сеть ZWave, к которой подключаются устройства. А далее контроллер получает HTTP запросы от приложения и траслирует их в команды ZWave протокола.

Более того, короткими командами. Это не очень практично в обычной жизни, где человек говорит бегло. И чтобы отработало моментально. Я говорю нормальным голосом без особых пауз. Вот я о таком подходе и рассказал. Вы не поверите с Голосовой ассистент Дуся: Почитал эту тему на 4pda — Как запустить Дусю из сторонней программы с определенной фразой Для этого нужно запустить Broadcast с Action com.

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

Ээ… Так поставьте графический ключик. Хотя Если ваш телефон в руки взял злоумышленник — то пенять тут на ассистента без толку, ваши данные и без него станут доступны.

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

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

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

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

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

Но вера тут никак не обязательна. После распознавания команды можно отправлять запрос на любой контроллер в моем случае Fibaro. Да конечно не обязательна. Статья о том, как можно прикрутить такое голосовое управление к чему угодно. У меня есть вера3, к нему и прикрутил. Просто у фибары с верой могут быть разные http протоколы. Пожтому не могу сказать, будет ли работать с фибарой тот же код. Уважаемый автор, подскажите, по нескольким вопросам: Можно ли использовать данный API не c мобильнымb OS, к примеру с Linux установленным на мини PC.

Какие телефоны из дешевых можно использовать на Android было что-то сказано против Samsung? Можно ли обойтись Vera или аналогом в 1 единственном числе, если у вас дом в несколько этажей и 10 комнат, и к примеру у вас в каждой комнате по 1 дешевому телефону как приемник и как минимум в комнате до 10 устройств розеток под управление. Из 3 вопроса выходит 4 — как локально определять однотипные названия, к примеру жалюзи?

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

Ух как вопросов много. Сразу видно, что вопросом владеете 1. На сайте pocketsphinx вы можете увидеть один из подобных проектов. Кстати на том же raspberrypi или cubieboard нормально ставится андроид. Придется поэкспериментировать с микрофонами и звуковыми платами. Да в принципе любые. Ну например мегафон клик, старые htc hero и тп.

Насчет самсунга — ничего против. Просто указал, что на них нельзя одновременно и слушать и синтезировать звук. Кстати у самсунгов одни из лучших микрофонов.

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

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

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

Это реализовано в тех же контроллерах Vera. Посмотрите мое видео до конца. Да, собственно, всё, кроме пункта 5. В качестве контроллера используется обычный ПК с набором донглов. Если интересно, то код можно найти у меня в профиле в GitHub. Проект разбит на 3 приложения — ядро системы, веб-интерфейс и терминал на Android.

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

Сама по себе статья про определению местоположения, если возможно, была бы не менее интересна на основе вашего опыта. Хм… А это можно… Если будет интересно. Это тема про bluetooth low energy 4-я версия. Я один из соавторов pocketsphinx-android, могу ответить на некоторые вопросы.

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

Поэтому для демонстрационного приложения я написал ant-скрипт, который вычисляет. Поэтому, если вы собираете проект через ADT плагин, то убедитесь, что включены соответствующие Ant-шаги в процесс сборки. Впрочем, есть подробное описание , несмотря на существование которого, стабильно раз в неделю кто-нибудь да и напишет в форуме, что у него проблемы с ресурсами. У меня есть вопрос иного характера. Не получится ли так, что подсев на данный движок, со временем он станет платным?

Нет, код полностью открытый. Библиотеку можно использовать в коммерческих и закрытых проектах. В pocketsphinx-android-demo это делается автоматически через ant-скрипт, но вы можете использовать любой способ. В какой момент времени происходит синхронизация с внешней памятью? И где именно они в итоге лежат? Ни во внутренней памяти, ни на SD карте не нахожу, хотя демонстрационное приложение работает отлично.

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

Прошу прощения, разобрался в коде примера, вопрос отпал. Я только начинаю разбираться с программированием под android. Пример из статьи не заработал, взял пример с сайта библиотеки — заработал, но там только английский язык Можете помочь, как добавить в пример с сайта русский для активационной фразы и для распознавания двух команд? А можно ли прикрутить управление телевизором по голосу? По ИК или WiFi SmartTV. Грамматики тут не принимают участия.

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

Необходимо также очень аккуратно писать транскрипции. Круто, сейчас тоже прикручиваю. Но с помощью 1 Sheeld и не совсем удачно работает распознование голоса. Думаю пристроить к андройд девайсу микрофон ШОРОХ. У меня был очень негативный опыт работы с pockeysphinx под Ubuntu и ROS. Нужно было распознавание, которое реально совместить с ROS, быстро работающее и не как можно меньше зависящее от внешних условий, дикторонезависимое.

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

Библиотеку такого типа невозможно заставить работать их коробки для абсотютно всех случаев. Есть распознавание гугла — оно работает без настроек. Но вы ничего не контролируете, кроме языка.

В конфигурации pocketsphinx есть опция -rawlogdir, она задаёт путь к директории, куда сохраняются записи во время распознавания. Прослушайте записи, возможно, вы записываете не в том формате. Это очень распротранённая ошибка. Если в форматом всё хорошо, то вы можете написать в список рассылки, форум или cmusphinx на freenode, указав ссылки на записи и вашу конфигурацию.

Также, сейчас есть некоторые проблемы с версионностью. Я советую скачивать первую версию. Есть не собирается — пишите, такое бывает. Разработчиков немного, но все откликаются оперативно. Но на какой движок и зачем вы будете это отправлять? Тем более если вы что-то сказали, то pocketsphinx все равно вернет вам какую-то гипотезу по грамматике.

Спасибо, появился повод разобраться уже с этой библиотекой. Давно пора прикрутить её к моей Вике. Я-то уж давно прикрутил ее к моей Дусе ;- и в умный дом еще. На мой згляд, было бы здорово добавить универсализма, например отправлять результаты через mqtt. Максимальный универсализм с помощью голосового ассистента и севрера openhab.

Вот вам how to от того же автора. Посмотрите все же на протокол mqtt. С его помощью можно с десятками систем интегрироваться. От MySensors до node-red. Еще раз отвечу вам — openhab. Он интегрирован и с mqtt тоже. Openhab интегрируется с сотней систем, а не с десятком. Вы имеете ввиду протоколы взаимодействия с оборудованием z-wave, x10, knx То есть, написав модуль, взаимодействующий с миром посредством mqtt вы потом без труда можете его подключить к любому продукту с поддержкой mqtt.

Тогда, возвращаясь к вашей реплике На мой згляд, было бы здорово добавить универсализма, например отправлять результаты через mqtt. Какие результаты вы бы предложили отправлять через mqtt??? Простите, а зачем логика должна быть где-то?? Кокретно в данном приложении логика на клиенте и этого хватает для решения конкретной задачи….

У меня в первом приближении получилось так: Дуся распознает Event таскера. Вчера наконец-то дошли руки разобраться в этой библиотеке. Сейчас я для умного дома использую онлайновую распознавалку от Google. Надо сказать, что у Pocketsphinx есть как плюсы, так и минусы. Чтобы не было вышеописанной проблемы, приходится использовать ключевое слово для активации. Как уже сказал автор, оно не должно быть коротким. Всё-таки плохо распознаётся с большого расстояния.

Или я что-то плохо настроил? Но пока я тестировал Pocketsphinx, на мои команды гораздо чаще реагировал планшет, который находится в другом конце комнаты и использует распознавание от Google. Абсолютно мгновенная реакция на команды. В случае с Google приходится ждать лишнюю секунду, а если использовать Android 4. Автономность, не нужен Интернет. Пока что минусов для меня больше: Первая проблема — не проблема. Решается за счет правильно написанной грамматики garbage и фильтрации результат по score, который можно легко посчитать.

Это обычная практика для распознавания на базе контекстно-свободной грамматики. А вы гуглом все время слушаете эфир на предмет команды?? Вы говорите что гугл распознает с нескольких метров?? Гугл распознавание рассчитано на небольшое расстояние. А в шуме вы от него вообще не добьетесь результата на расстоянии метра. Вот пишу файл грамматики, действительно становится лучше. Да, постоянно слушаю эфир, но при этом из общего шума вполне неплохо выделяется голос, так что запросы происходят не непрерывно.

В почти полной тишине шум компьютера — Google легко распознаёт с нескольких метров. В абсолютно полной тишине берёт и с пяти-семи метров. Правда, так было не всегда. Впечатление, что в последнее время они как-то оптимизировали распознавание. Меня это даже напугало немного. Pocketsphinx шум тоже как-то не очень любит. Шум не любит не покетсфинкс, а я конкретная аккустическая модель. Если натренеровать свою — будет работать и в шуме.

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

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

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

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

А что с оффлайн-распознаванием под Windows? Был Realspeeker, но сейчас не работает, обещают новую версию. Да и работал он онлайн, судя по тому, что сейчас не действуют старые дистрибутивы. Был когда-то горыныч, но давно он был так себе. Что рекомендуется сейчас для набора текстов?

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

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

Пойду достану проект из шкафчика и попробую еще раз. Метки лучше разделять запятой. Сейчас Вчера Неделя Собеседование для фронтенд-разработчика на JavaScript: Быстрые сетки для верстальщиков 13,2k Увольнение — это маленькая смерть. Как сохранить ценного специалиста решившего уволиться? Интересные публикации Хабрахабр Geektimes. Секвенирование ДНК в домашних условиях: Правильное видеонаблюдение на транспорте: GeekUniversity открывает набор студентов на факультет Python-разработки.

Аналоговый мир и его иллюзия. Intel NUC — история и современность. От Atom до Optane GT. Советский HI-FI и его создатели: Обзор умных часов ASUS ZenWatch 3 GT.

Разделы Публикации Хабы Компании Пользователи Песочница. Информация О сайте Правила Помощь Соглашение Конфиденциальность. Услуги Реклама Тарифы Контент Семинары.



Коментарии:

Правда, оно работает только в Гугл Хроме. Включите Speechlogger для них и остановить кричать по телефону. Второе и третье в зачаточной стадии, как раз пытаюсь прикрутить сфинкс к андроиду.