Лучшая программа распознания русской речи. Распознавание речи для чайников

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

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

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

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

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

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

Заключение

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

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

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

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

Казалось бы, почему не заняться решением этой проблемы программно, с использованием «умных» компьютеров? Ведь и производители подобных продуктов вроде бы имеются, и мощность компьютеров непрерывно растет, и технологии совершенствуются. Однако успехи в области автоматического распознавания речи и преобразования ее в текст, похоже, находятся на том же уровне, что и 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 в телефоне, слова «да»/«нет» и односложные команды вызова нужных абонентов и т.д. Такие программы появились самыми первыми и уже давно применяются в телефонии для голосового набора номера или выбора абонента.

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

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

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

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

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

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

Казалось бы, почему не заняться решением этой проблемы программно, с использованием «умных» компьютеров? Ведь и производители подобных продуктов вроде бы имеются, и мощность компьютеров непрерывно растет, и технологии совершенствуются. Однако успехи в области автоматического распознавания речи и преобразования ее в текст, похоже, находятся на том же уровне, что и 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 в телефоне, слова «да»/«нет» и односложные команды вызова нужных абонентов и т.д. Такие программы появились самыми первыми и уже давно применяются в телефонии для голосового набора номера или выбора абонента.

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

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

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

В «Фейсбуке» нам задали вопрос:
«Для работы с текстом мне нужно расшифровать 3 часа диктофонной записи. Пробовал загрузить аудиофайл с картинкой в YouTube и воспользоваться их расшифровщиком текста, но получается какая-то абракадабра. Подскажите, как можно решить это технически? Спасибо!
Александр Коновалов»

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

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

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

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

Сложно, но можно уговорить соблюдать эти правила собеседника, у которого вы берете интервью (еще один совет: если у вас нет в комплекте выносного микрофона на прищепке – хотя бы держите диктофон рядом с собеседником, а не с собой).

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

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

Если же нет – практически при любом качестве записи вы сможете провести расшифровку в полуавтоматическом режиме .

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

Итак, по порядку.

1. Автоматическое распознавание речи

Многие советуют расшифровывать диктофонные записи на YouTube. Но этот метод заставляет пользователя тратить время на этапе загрузки аудиофайла и фоновой картинки, а затем – в ходе очистки итогового текста от меток времени. Между тем, это время несложно сэкономить. 🙂

Вы можете распознавать аудиозаписи прямо со своего компьютера, воспользовавшись возможностями одного из интернет-сервисов, работающих на движке распознавания Google (рекомендую Speechpad.ru или Speechlogger.com). Все, что нужно – проделать маленький трюк: вместо вашего голоса, воспроизводимого с микрофона, перенаправить на сервис аудиопоток, воспроизводимый вашим компьютерным проигрывателем.

Этот трюк называется программным стерео микшером (его обычно применяют для записи музыки на компьютере или ее трансляции с компьютера в интернет).

Стерео микшер входил в состав Windows XP – но был удален разработчиками из более поздних версий этой операционной системы (говорят, в целях защиты авторских прав: чтобы геймеры не воровали музыку из игр и т.п.). Однако стерео микшер нередко поставляется вместе с драйверами аудиокарт (например, карт Realtec, встраиваемых в материнскую плату). Если вы не найдете стерео микшер на своем ПК с помощью предлагаемых ниже скриншотов – попробуйте переустановить аудиодрайверы с CD-диска, который шел в комплекте с материнской платой – либо с сайта ее производителя.

Если и это не поможет – установите на компьютер альтернативную программу. Например – бесплатный VB-CABLE Virtual Audio Device : использовать его рекомендует владелец вышеупомянутого сервиса Speechpad.ru.

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

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

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

Если вы решили использовать VB-CABLE – то тем же способом включите его во вкладке «Запись».

А также – во вкладке «Воспроизведение».

Второй шаг. Включите аудиозапись в любом проигрывателе (если нужно расшифровать аудиодорожку видеоролика – можно запустить и видеопроигрыватель). Параллельно загрузите в браузере Chrome сервис Speechpad.ru и нажмите в нем кнопку «Включить запись». Если запись достаточно высокого качества, вы увидите, как сервис на глазах превращает речь в осмысленный и близкий к оригиналу текст. Правда, без знаков препинания, которые вам придется расставить самостоятельно.

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

2. Полуавтоматическое распознавание речи

Тут все просто. Если запись некачественная и распознавание «захлебывается» либо сервис выдает слишком много ошибок – помогите делу сами, «встроившись» в цепочку: «аудиоплеер – диктор – система распознавания».

Ваша задача: прослушивать в наушниках записанную речь – и параллельно надиктовывать ее через микрофон интернет-сервису распознавания. (Естественно, вам не нужно, как в предыдущем разделе, переключаться в списке записывающих устройств с микрофона на стерео микшер или виртуальный кабель). А в качестве альтернативы упоминавшимся выше интернет-сервисам можете использовать смартфонные приложения вроде бесплатной «Яндекс.Диктовки» либо функцию диктовки в iPhone с операционной системой iOS 8 и выше.

Отмечу, что в полуавтоматическом режиме вы имеете возможность сразу диктовать знаки препинания, расставлять которые в автоматическом режиме сервисы пока не способны.

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

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

3. Расшифровка диктофонной записи в ручном режиме

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

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

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

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

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

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

  • возможность замедлить воспроизведение диктофонной записи без ее искажения и понижения тона (замедлить скорость воспроизведения позволяют многие плееры – но, увы, при этом человеческий голос превращается в монструозный голос робота, который сложно воспринимать на слух продолжительное время);
  • возможность остановить запись или откатить ее на заданное количество секунд и вернуть обратно, не останавливая набор текста и не сворачивая окно текстового редактора.

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

«Войдя в настройки AIMP, найдите раздел Глобальные клавиши и перенастройте Стоп/Пуск на клавишу Эскейп (Esc). Поверьте, это наиболее удобно, поскольку не придется задумываться и палец не попадет случайно на другие клавиши. Пункты «Немного перейти назад» и «Немного перейти вперед» настройте, соответственно, на клавиши Ctrl + клавиши курсора назад/вперед (у вас на клавиатуре есть четыре клавиши со стрелками – выберите две из них). Эта функция нужна, чтобы заново прослушать последний фрагмент или перейти немного вперед.

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

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

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

А количество секунд, на которое вам будет наиболее удобно перемещаться по записи назад или вперед с помощью горячих клавиш – установите в разделе «Плеер» окна «Настройки» (которое можно вызвать нажатием горячих клавиш «Ctrl + P»).

Желаю сэкономить побольше времени на рутинных задачах – и плодотворно использовать его для главных дел! 🙂 И не забудьте включить микрофон в списке записывающих устройств, когда соберетесь поговорить по скайпу! 😉

3 способа расшифровки диктофонной записи: распознавание речи, диктовка, ручной режим

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

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