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

Титровщик телефона для глухих и слабослышащих

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

Автоматическая транскрипция

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

Автоматический устный и письменный переводчик

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

Изучайте иностранные языки и улучшайте навыки произношения

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

Генерирование субтитров для фильмов

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

Диктуйте вместо ввода

Написание письма? Документы? Списки? Резюме? Независимо от того, вам нужно ввести, попробуйте диктовать его Speechlogger вместо этого. Speechlogger будет автоматически сохранять его для вас, и позволит экспортировать его в документ.

Забавная игра:)

Вы можете имитировать китайскую динамик? Французский? Что о русском языке? Попробуйте имитировать иностранный язык и увидеть то, что вы только что сказали, с Speechlogger. Используйте синхронный перевод Speechlogger, чтобы понять, что вы только что сказали. Получить удивительные результаты - это очень весело!

Да только воз и ныне там.
И.А. Крылов. Басня «Лебедь, Щука и Рак»

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

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

Казалось бы, почему не заняться решением этой проблемы программно, с использованием «умных» компьютеров? Ведь и производители подобных продуктов вроде бы имеются, и мощность компьютеров непрерывно растет, и технологии совершенствуются. Однако успехи в области автоматического распознавания речи и преобразования ее в текст, похоже, находятся на том же уровне, что и 20-40 лет назад. Помнится, еще в середине 90-х годов компания IBM уверенно заявила о наличии такого рода инструментов в OS/2, а чуть позже и Microsoft подключилась к внедрению подобных технологий. Пыталась заниматься распознаванием речи и компания Apple, но в начале 2000 года она официально объявила об отказе от этого проекта. Продолжают работать в этой области компании IBM (Via Voice) и Philips, причем функцию распознавания речи IBM не только встраивала в свою операционную систему OS/2 (ныне уже канувшую в лету), но и до сих пор выпускает в качестве отдельного продукта. Пакет для распознавания слитной речи Via Voice (http://www-306.ibm.com/software/voice/viavoice) от IBM отличался тем, что с самого начала даже без обучения распознавал до 80% слов. При обучении же вероятность правильного распознавания повышалась до 95%, а к тому же параллельно с настройкой программы на конкретного пользователя происходило освоение будущим оператором навыков работы с системой. Сейчас ходят слухи о том, что подобные новации будут реализованы и в составе Windows XP, хотя глава и основатель корпорации Билл Гейтс неоднократно заявлял, что считает речевые технологии еще не готовыми для массового применения.

Когда-то американская компания Dragon Systems создала, наверное, первую коммерческую систему распознавания речи — Naturally Speaking Preferred, которая работала еще в 1982 году на IBM PC (даже не XT!). Правда, эта программа больше напоминала игру и с тех пор никаких серьезных подвижек компания так и не сделала, а к 2000 году и вовсе разорилась, причем ее последняя версия Dragon Dictate Naturally Speaking была продана компании Lernout&Hauspie Speech Products (L&H), являвшейся тоже одним из лидеров в области систем и методов распознавания и синтеза речи (Voice Xpress). L&H, в свою очередь, тоже дошла до банкротства с распродажей активов и имущества (к слову сказать, Dragon Systems была продана почти за 0,5 млрд. долл., а L&H — уже за 10 млн., так что своими масштабами в этой области впечатляет не прогресс, а регресс!). Технологии L&H и Dragon Systems перешли к компании ScanSoft, которая занималась до этого распознаванием оптических образов (в ее ведении сегодня находятся некоторые известные программы распознавания печатного текста типа OmniPage), но там, похоже, этим никто серьезно не занимается.

Российская компания Cognitive Technologies, достигнувшая значительных успехов в области распознавания символов, сообщила в 2001 году о совместном проекте с Intel по созданию систем распознавания русской речи — для Intel был подготовлен речевой корпус русского языка RuSpeech. Собственно, RuSpeech представляет собой речевую базу данных, которая содержит фрагменты непрерывной русской речи с соответствующими текстами, фонетической транскрипцией и дополнительной информацией о дикторах. Cognitive Technologies ставила перед собой цель создать «дикторонезависимую» систему распознавания непрерывной речи, а речевой интерфейс состоял из системы сценария диалога, синтеза речи по тексту и системы распознавания речевых команд.

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

«Ну все, тебе конец», — сказал Иван Царевич, глядя прямо в глаза третьей голове Змея Горыныча. Она растерянно посмотрела на две другие. Те в ответ злорадно ухмыльнулись.

Анекдот

1997 году выход на коммерческий рынок знаменитого «Горыныча» (по существу адаптации программы Dragon Dictate Naturally Speaking, проведенной силами малоизвестной до того времени российской компании White Group, официального дистрибьютора Dragon Systems) стал своеобразной сенсацией. Программа казалась вполне работоспособной, а ее цена представлялась весьма умеренной. Однако время идет, «Горынычи» меняют интерфейсы и версии, но никаких ценных свойств не приобретают. Может быть, ядро Dragon Naturally Speaking было как-то настроено на особенности англоязычной речи, но даже после последовательной замены драконьей головы на три головы «Горыныча» оно дает не более 30-40% распознавания среднего уровня лексики, причем при тщательном проговаривании. Да и кому это вообще нужно? Как известно, по заявлениям разработчиков компаний Dragon Systems, IBM и Lernout&Hauspie, их программы при непрерывной диктовке были способны правильно распознавать до 95% текста, но ведь и они давно уже не выпускаются, ибо известно, что для комфортной работы точность распознавания необходимо довести до 99%. Надо ли говорить, что для завоевания подобных высот в реальных условиях требуются, мягко говоря, немалые усилия.

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

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

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

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

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

Анализируя возможности программы, мы все больше склоняемся к мнению специалистов, что лингвистический анализ текста — обязательная стадия процесса автоматического ввода под диктовку. Без этого современное качество распознавания не может быть достигнуто, да и многие эксперты связывают перспективы речевых систем именно с дальнейшим развитием содержащихся в них лингвистических механизмов. Как следствие, речевые технологии делаются все более зависимыми от того языка, с которым они работают. А это значит, во-первых, что распознавание, синтез и обработка русской речи являются тем делом, заниматься которым должны именно российские разработчики, а во-вторых, только специализированные отечественные продукты, изначально ориентированные именно на русский язык, смогут по-настоящему решить ту задачу. Правда, здесь следует отметить, что отечественные специалисты петербургского «Центра речевых технологий» (ЦРТ) считают, что создание собственной системы диктовки в нынешних российских условиях не окупится.

Прочие игрушки

ока технологии распознавания речи российскими разработчиками успешно применяются в основном в интерактивных обучающих системах и играх вроде «Мой говорящий словарь», Talk to Me или «Профессор Хиггинс», созданных фирмой «ИстраСофт». Используются они для контроля произношения у изучающих английский язык и аутентификации пользователя. Развивая программу «Профессор Хиггинс», сотрудники «ИстраСофт» научились членить слова на элементарные сегменты, которые соответствуют звукам речи и не зависят ни от диктора, ни от языка (прежде системы распознавания речи не производили такой сегментации, а наименьшей единицей для них было слово). При этом выделение фонем из потока слитной речи, их кодирование и последующее восстановление происходит в режиме реального времени. Указанная технология распознавания речи нашла довольно остроумное применение — она позволяет существенно сжимать файлы с диктофонными записями или речевыми сообщениями. Способ, предложенный фирмой «ИстраСофт», допускает сжатие речи в 200 раз, причем при сжатии менее чем в 40 раз качество речевого сигнала практически не ухудшается. Интеллектуальная обработка речи на уровне фонем перспективна не только как способ сжатия, но и как шаг на пути к созданию нового поколения систем распознавания речи, ведь теоретически машинное распознавание речи, то есть ее автоматическое представление в виде текста, как раз и является крайней степенью сжатия речевого сигнала.

Сегодня фирма «ИстраСофт» помимо обучающих программ предлагает на своем сайте (http://www.istrasoft.ru/user.html) и программы для сжатия/проигрывания звуковых файлов, а также демонстрационную программу голосонезависимого распознавания команд русского языка Istrasoft Voice Commander.

Казалось бы, теперь для того, чтобы создать основанную на новой технологии систему распознавания, осталось сделать совсем немного…

), которая работает в этой области с 1990 года, похоже, добилась определенных успехов. ЦРТ имеет в своем арсенале целый набор программных и аппаратных средств, предназначенных для шумоочистки и для повышения качества звуковых, и в первую очередь речевых, сигналов — это компьютерные программы, автономные устройства, платы (DSP), встраиваемые в устройства каналов записи или передачи речевой информации (мы уже писали об этой фирме в статье «Как улучшить разборчивость речи?» в № 8’2004). «Центр речевых технологий» известен как разработчик средств шумоподавления и редактирования звука: Clear Voice, Sound Cleaner, Speech Interactive Software, Sound Stretcher и др. Специалисты фирмы принимали участие в восстановлении аудиоинформации, записанной на борту затонувшей подлодки «Курск» и на потерпевших катастрофы воздушных судах, а также в расследовании ряда уголовных дел, для которых требовалось установить содержание фонограмм речи.

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

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

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

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

Разумеется, гораздо проще реализовать программу, способную распознавать только ограниченный, небольшой набор управляющих команд и символов. Это, например, могут быть цифры от 0 до 9 в телефоне, слова «да»/«нет» и односложные команды вызова нужных абонентов и т.д. Такие программы появились самыми первыми и уже давно применяются в телефонии для голосового набора номера или выбора абонента.

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

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

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

Пожалуй, самая удобная программа для расшифровки текста для 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 тыс. руб.

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


Большое число установленных в браузере плагинов сильно тормозит его работу и скорость серфинга в интернет. А сервисы, о которых сегодня пойдет речь, полностью бесплатны и не требуют установки – зашел, попользовался и ушел!

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

Speechpad.ru

Русскоязычный онлайн сервис распознавания речи. Имеет подробную инструкцию по работе на русском языке.

  • поддержку 7 языков (русский, украинский, английский, немецкий, французский, испанский, итальянский)
  • загрузку для транскрибации аудио или видео файла (поддерживаются ролики с YouTube)
  • синхронный перевод на другой язык
  • поддержку голосового ввода знаков препинания и перевода строки
  • панель кнопок (смена регистра, перевод на новую строку, кавычки, скобки и т.п.)
  • наличие персонального кабинета с историей записей (опция доступна после регистрации)
  • наличие плагина к Google Chrome для ввода текста голосом в текстовом поле сайтов (называется «Голосовой ввод текста — Speechpad.ru»)

Dictation.io

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

Основной функционал сервиса:

  • поддержка 30 языков, среди которых присутствуют даже венгерский, турецкий, арабский, китайский, малайский и пр.
  • автораспознавание произношения знаков препинания, перевода строки и пр.
  • возможность интеграции со страницами любого сайта
  • наличие плагина для Google Chrome (называется «VoiceRecognition»)

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

Сравнительный тест сервисов

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

Ниже представлен результат перевода речи в текст каждым сервисом (ошибки обозначены красным цветом):

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

Теперь для теста возьмем отрывок из письма красноармейца Сухова (к/ф «Белое солнце пустыни»):

Отличный результат!

Как видим, оба сервиса весьма достойно справляются с распознаванием речи – выбирайте любой! Похоже что они даже используют один и тот же движок — уж слижком схожие у них оказались допущенные ошибки по результатам тестов). Но если Вам необходимы дополнительные функции типа подгрузки аудио / видео файла и перевода его в текст (транскрибация) или синхронного перевода озвученного текста на другой язык, то Speechpad будет лучшим выбором!


Кстати вот как он выполнил синхронный перевод фрагмента поэмы Некрасова на английский язык:

Ну а это краткая видео инструкция по работе со Speechpad, записанная самим автором проекта:

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

) на реальном 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, который можно использовать в решении задач, связанных с распознаванием голосовых команд.

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

В продолжение темы:
Роутеры

Сохранение для игры Grand Theft Auto 5 PC - Сейв обновлен 06.05.2015 - Игра пройдена на 90% - Полностью пройдена сюжетная линия (69 из 69 заданий) - После последнего...