Голосовой поиск в линукс

Обновлено: 05.07.2024

По состоянию на начало 2000-х годов для Linux существовало несколько программных пакетов распознавания речи (SR) . Некоторые из них являются бесплатными программами с открытым исходным кодом, а другие - проприетарными программами . Распознавание речи обычно относится к программному обеспечению, которое пытается различать тысячи слов на человеческом языке. Голосовое управление может относиться к программному обеспечению, используемому для передачи рабочих команд компьютеру.

СОДЕРЖАНИЕ

Распознавание речи в Linux

История

В конце 1990-х годов Linux-версия ViaVoice , созданная IBM , стала доступна пользователям бесплатно. В 2002 году разработчик удалил комплект для разработки бесплатного программного обеспечения (SDK).

Статус разработки

В начале 2000-х годов была предпринята попытка разработать высококачественный механизм распознавания речи для Linux. В результате было начато несколько проектов, посвященных созданию программ распознавания речи для Linux, таких как Mycroft , которая похожа на Microsoft Cortana , но с открытым исходным кодом.

Краудсорсинг речевого образца

Очень важно составить речевой корпус для создания акустических моделей для проектов распознавания речи . VoxForge - это корпус свободы слова и репозиторий акустических моделей, который был создан с целью сбора расшифрованной речи для использования в проектах распознавания речи. VoxForge принимает Crowdsourced образцов речи и коррекцию признанных речевых последовательностей. Он находится под лицензией GNU General Public License (GPL).

Концепция распознавания речи

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

  • Распознавание дискретной речи (DSR) - полностью обрабатывает информацию на локальной машине. Это относится к автономным системам, в которых все аспекты SR полностью выполняются на компьютере пользователя. Это становится критически важным для защиты интеллектуальной собственности (IP) и предотвращения нежелательного наблюдения (2018 г.).
  • Удаленный или серверный SR - передает звуковой речевой файл на удаленный сервер для преобразования файла в текстовый строковый файл. Благодаря новейшим схемам облачного хранения и интеллектуального анализа данных, этот метод упрощает наблюдение, кражу информации и внедрение вредоносных программ.

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

Распознавание речи в браузере

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

  • Удаленный : служба диктовки записывает звуковую дорожку пользователя через веб-браузер.
  • DSR : есть решения, которые работают только на клиенте, без отправки данных на серверы.

Механизмы распознавания свободной речи

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

  • CMU Sphinx - это общий термин для описания группы систем распознавания речи, разработанных в Университете Карнеги-Меллона.
  • HTK - самое известное и широко используемое программное обеспечение для распознавания речи до Kaldi.
  • Julius - это высокопроизводительное двухпроходное программное обеспечение для декодирования непрерывной речи с большим словарным запасом (LVCSR) для исследователей и разработчиков, связанных с речью.
  • Kaldi - это набор инструментов для распознавания речи, предоставляемый по лицензии Apache.
  • Mozilla DeepSpeech разрабатывает механизм преобразования речи в текст с открытым исходным кодом на основе исследования Baidu по глубокой речи.

Возможные активные проекты:

  • Parlatype, аудиоплеер для ручной транскрипции речи для рабочего стола GNOME, начиная с версии 1.6, обеспечивает непрерывное распознавание речи с помощью CMU Sphinx.
  • Lera (Распознавание речи с большим словарным запасом) на основе Simon и CMU Sphinx для KDE.
  • Speech использует механизм распознавания речи Google для поддержки диктовки на многих языках.
  • Управление речью: это приложение на основе Qt, которое использует инструменты CMU Sphinx , такие как SphinxTrain и PocketSphinx, для предоставления утилит распознавания речи, таких как управление рабочим столом, диктовка и расшифровка на рабочий стол Linux.
  • Platypus - это прокладка с открытым исходным кодом, которая позволит проприетарному Dragon NaturallySpeaking, работающему под Wine, работать с любым приложением Linux X11.
  • FreeSpeech от разработчика Platypus - это бесплатное кроссплатформенное настольное приложение с открытым исходным кодом для GTK, которое использует инструменты CMU Sphinx для голосовой диктовки, изучения языка и редактирования в стиле Dragon NaturallySpeaking.
  • Vedics (Voice Enabled Desktop Interaction and Control System) - речевой помощник для среды GNOME.
  • NatI - это многоязычная система голосового управления, написанная на Python.
  • SphinxKeys позволяет пользователю вводить клавиши клавиатуры и щелчки мыши, говоря в микрофон.
  • VoxForge - это корпус свободы слова и репозиторий акустических моделей для движков распознавания речи с открытым исходным кодом.
  • Саймон стремится быть чрезвычайно гибким, чтобы компенсировать диалекты или даже нарушения речи. Он использует HTK-Julius или CMU SPHINX, работает в Windows и Linux и поддерживает обучение.
  • Проект Jasper Jasper - это платформа с открытым исходным кодом для разработки постоянно работающих приложений с голосовым управлением. Это встроенный интерфейс Raspberry Pi для CMU Sphinx или Julius.

Разработчики могут создавать программное обеспечение для распознавания речи Linux, используя существующие пакеты, полученные из проектов с открытым исходным кодом.

  • CVoiceControl - это независимая от KDE и X Window версия своего предшественника KVoiceControl. Владелец прекратил разработку на альфа-стадии разработки.
  • Open Mind Speech, часть инициативы Open Mind Initiative, направлена ​​на разработку бесплатных (GPL) инструментов и приложений распознавания речи, а также на сбор речевых данных. Производство закончилось в 2000 году.
  • PerlBox - это управление и речевой вывод на основе Perl . Разработка закончилась на начальных этапах в 2004 году.
  • Xvoice Пользовательское приложение, обеспечивающее диктовку и командное управление любому X-приложению. Разработка завершилась в 2009 году во время ранних испытаний проекта. (для работы требуется проприетарный ViaVoice)

Собственные движки распознавания речи

  • Janus Recognition Toolkit (JRTk) - это набор инструментов для распознавания речи с закрытым исходным кодом, в основном ориентированный на Linux, разработанный Interactive Systems Laboratories, разработанным в Университете Карнеги-Меллона и Технологическом институте Карлсруэ, для которого доступны коммерческие и исследовательские лицензии.

Голосовое управление и сочетания клавиш

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

Простое программное обеспечение в сочетании с сочетаниями клавиш имеет самый ранний потенциал для практически точного голосового управления в Linux.

Запуск программного обеспечения для распознавания речи Windows с Linux

Через уровень совместимости

С помощью Wine можно использовать такие программы, как Dragon NaturallySpeaking, в Linux , хотя могут возникнуть некоторые проблемы в зависимости от того, какая версия используется.

Через виртуализированную Windows

Также можно использовать программное обеспечение для распознавания речи Windows под Linux. Используя бесплатное программное обеспечение для виртуализации , можно запускать Windows и NaturallySpeaking под Linux. VMware Server или VirtualBox поддерживают копирование и вставку на / с виртуальной машины, что позволяет легко переносить продиктованный текст на / с виртуальной машины.


Человека всегда привлекала идея управлять машиной естественным языком. Возможно, это отчасти связано с желанием человека быть НАД машиной. Так сказать, чувствовать свое превосходство. Но основной посыл — это упрощение взаимодействия человека с искусственным интеллектом. Управление голосом в Linux с переменным успехом реализуется без малого уже четверть века. Давай разберемся в вопросе и попробуем сблизиться с нашей ОС настолько, насколько это только возможно.

Суть дела

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

Следует различать собственно системы распознавания речи (перевод речи в текст или в команды), такие как, например, CMU Sphinx, Julius, а также приложения на основе этих двух движков, и голосовые ассистенты, ставшие популярными с развитием смартфонов и планшетов. Это, скорее, побочный продукт систем распознавания речи, дальнейшее их развитие и воплощение всех удачных идей распознавания голоса, применение их на практике. Для Linux-десктопов таких пока мало.

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

Что было раньше

Исторически сложилось так, что все системы работы с речью в Linux развивались не спеша и скачкообразно. Причина не в криворукости разработчиков, а в высоком уровне вхождения в среду разработки. Написание кода системы для работы с голосом требует высокой квалификации программиста. Поэтому, перед тем как начать разбираться с системами работы с речью в Linux, необходимо сделать небольшой экскурс в историю. Была когда-то в IBM такая чудесная операционная система — OS/2 Warp (Merlin). Вышла она в сентябре далекого уже 1996 года. Кроме того, что она обладала очевидными преимуществами перед всеми остальными операционками, OS/2 была укомплектована весьма продвинутой системой распознавания речи — IBM ViaVoice. Для того времени это было очень круто, учитывая, что ОС работала на системах с 486-м процессором с объемом ОЗУ от 8 Мбайт (!).

Как известно, OS/2 проиграла битву Windows, однако многие ее компоненты продолжили существовать независимо. Одним из таких компонентов стала та самая IBM ViaVoice, превратившаяся в самостоятельный продукт. Так как IBM всегда любила Linux, ViaVoice была портирована на эту ОС, что дало детищу Линуса Торвальдса самую передовую для своего времени систему распознавания речи.

К сожалению, судьба ViaVoice сложилась не так, как хотели бы линуксоиды. Сам движок распространялся бесплатно, но его исходники оставались закрытыми. В 2003 году IBM продала права на технологию канадо-американской компании Nuance. Nuance, разработавшая, пожалуй, самый успешный коммерческий продукт для распознавания речи — Dragon Naturally Speeking, здравствует и ныне. На этом бесславная история ViaVoice в Linux практически закончилась. За то короткое время, что ViaVoice была бесплатной и доступной линуксоидам, к ней разработали несколько интерфейсов, таких, например, как Xvoice. Однако проект давно заброшен и ныне практически неработоспособен.

OS/2 Warp — система, которую мы потеряли


Самое сложное звено в машинном распознавании речи — естественный человеческий язык.

Что сегодня?

Сегодня все гораздо лучше. В последние годы, после открытия исходников Google Voice API, ситуация с развитием систем распознавания речи в Linux значительно улучшилась, выросло качество распознавания. Например, проект Linux Speech Recognition на основе Google Voice API показывает очень неплохие результаты для русского языка. Все движки работают примерно одинаково: сначала звук с микрофона устройства юзера попадает в систему распознавания, после чего либо голос обрабатывается на локальном устройстве, либо запись отправляется на удаленный сервер для дальнейшей обработки. Второй вариант больше подходит для смартфонов или планшетов. Собственно, именно так и работают коммерческие движки — Siri, Google Now и Cortana.

Из всего многообразия движков для работы с человеческим голосом можно выделить несколько активных на данный момент.

WARNING


Установка многих из описанных систем распознавания речи — нетривиальная задача!

CMU Sphinx

Большая часть разработки CMU Sphinx ведется в университете Карнеги — Меллона. В разное время над проектом работали и Массачусетский технологический институт, и покойная ныне корпорация Sun Microsystems. Исходники движка распространяются под лицензией BSD и доступны как для коммерческого, так и для некоммерческого использования. Sphinx — это не пользовательское приложение, а, скорее, набор инструментов, который можно применить в разработке приложений для конечных пользователей. Sphinx сейчас — это крупнейший проект по распознаванию речи. Он состоит из нескольких частей:

  • Pocketsphinx — небольшая быстрая программа, обрабатывающая звук, акустические модели, грамматики и словари;
  • библиотека Sphinxbase, необходимая для работы Pocketsphinx;
  • Sphinx4 — собственно библиотека распознавания;
  • Sphinxtrain — программа для обучения акустическим моделям (записям человеческого голоса).

Проект развивается медленно, но верно. И главное — его можно использовать на практике. Причем не только на ПК, но и на мобильных устройствах. К тому же движок очень хорошо работает с русской речью. При наличии прямых рук и ясной головы можно настроить распознавание русской речи с помощью Sphinx для управления домашней техникой или умным домом. По сути, можно обычную квартиру превратить в умный дом, чем мы и займемся во второй части этого обзора. Реализации Sphinx имеются для Android, iOS и даже Windows Phone. В отличие от облачного способа, когда работа по распознаванию речи ложится на плечи серверов Google ASR или Яндекс SpeechKit, Sphinx работает точнее, быстрее и дешевле. И полностью локально. При желании можно научить Sphinx русской языковой модели и грамматике пользовательских запросов. Да, придется немного потрудиться при установке. Равно как и настройка голосовых моделей и библиотек Sphinx — занятие не для новичков. Так как основа CMU Sphinx — библиотека Sphinx4 — написана на Java, можно включать ее код в свои приложения для распознавания речи. Конкретные примеры использования будут описаны во второй части нашего обзора.

VoxForge

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

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

VoxForge — стартовый портал для тех, кто хочет внести свой вклад в разработку открытых систем распознавания речи

VoxForge — стартовый портал для тех, кто хочет внести свой вклад в разработку открытых систем распознавания речи

HTK, Julius и Simon

HTK — Hidden Markov Model Toolkit — это инструментарий для исследования и разработки средств распознавания речи с использованием скрытых марковских моделей, разрабатывается в Кембриджском университете под патронажем Microsoft (Microsoft когда-то выкупила этот код у коммерческого предприятия Entropic Cambridge Research Laboratory Ltd, а затем вернула его Кембриджу вместе с ограничивающей лицензией). Исходники проекта доступны всем желающим, но использование кода HTK в продуктах, предназначенных для конечных пользователей, запрещено лицензией.

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

Возможности HTK и Julius активно используются в приложении Simon. Проект запущен еще в 2007 году и до сих пор пребывает в перманентной бете. Движок использует библиотеки KDE, CMU Sphinx и/или Julius и акустические модели проекта VoxForge. Есть версии для Windows и Linux. Разработка Simon ведется в рамках проекта KDE в составе рабочей группы KDE Accessibility. Последняя версия Simon — 0.4.1 — вполне себе юзабельное приложение для бета-версии.

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

Помимо описанных выше, существуют и другие проекты по распознаванию речи, такие как Kaldi, наработки которого используются сейчас в других проектах. Однако в рамках данного обзора мы не будем их касаться. И дело не в том, что они не заслуживают внимания, а в том, что большинство из них скорее мертвы, чем живы. Более-менее активно развиваются лишь Sphinx и его производные, Simon, HTK и Julius. Смотри подробности на сайте Саймона.

Саймон говорит и выглядит довольно прилично

Саймон говорит и выглядит довольно прилично

Лучшие друзья человека

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

Условно все голосовые ассистенты можно разделить на две группы: те, которые так или иначе используют Google Voice API, и остальные. Остальные — это, например, ставшая уже знаменитой Cortana от Microsoft, которая, по слухам, скоро станет доступна для Android и iOS, что теоретически означает возможность портирования ее и на чистый Linux-десктоп. Или Siri — детище Apple, которое яблочная компания оберегает от любого стороннего использования как зеницу ока.

После открытия компанией Google своего API для работы с голосом персональные ассистенты для Linux начали появляться один за другим.

Вот правда. Именно так

Вот правда. Именно так

Linux Speech Recognition

В начале 2013 года, после закрытого бета-тестирования был переведен в разряд свободных проект по созданию системы распознавания речевых команд на базе Google Voice API. Система позволяет через управление голосом запускать программы, выполнять операции с файлами, открывать сайты, находить ответы на произвольные вопросы, создавать электронные письма, диктовать текст документов, запускать приложения и так далее.

Вначале проект развивался независимым энтузиастом для организации речевого управления Ubuntu, но в текущем виде его код не привязан к особенностям данной системы и может быть использован в любых дистрибутивах. Код проекта написан на языке Python и открыт под лицензией GPLv3. Распознавание речи реализовано через обращение к Google Voice API, который демонстрирует достаточно неплохие результаты для русского языка. Вся дополнительная инфа тут.

Можно установить в Ubuntu и пользоваться. Удобно, быстро

Можно установить в Ubuntu и пользоваться. Удобно, быстро

Hound

Этот голосовой ассистент, хоть и создан для Android, а не для Linux, все же заслуживает упоминания в нашем обзоре. Дело в том, что в тестах на распознавание речи этот помощник обгоняет и Siri, и Google Now, справляясь с поставленными задачами значительно эффективнее и быстрее. Самое ценное в нем то, что он воспринимает фразы именно так, как пользователь их произносит, то есть тебе не придется как-то специально формулировать свои вопросы, чтобы ассистент их понял.

Пока проект находится на стадии беты и доступен только по инвайтам и только владельцам Android-девайсов, находящимся на территории США. Разработчики обещают выпустить версии для iOS после окончания бета-тестирования. Будет ли версия для десктопов, пока неизвестно. Проект развивается уже девять лет и, по словам разработчиков, достаточно стабилен для повседневного использования. Русского языка, вестимо, нет.

Как отмечает издание The Verge, Hound пока еще не может полностью заменить Google Now или Siri, из-за того что недостаточно «персонализирован».

Hound работает почти так же, как и Google Now, только лучше

Hound работает почти так же, как и Google Now, только лучше

Betty

Например, если ты забыл, как разархивировать файлы в терминале, тебе достаточно сказать по-английски «Betty uncompress archive.tar.gz» («Бетти, разархивируй файл archive.tar.gz»), и файл и правда разархивируется. Проверено автором этой статьи.

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

Вот часть команд, которые Betty версии 0.1.8 понимает уже сейчас:

  • count (подсчет, например количества символов и слов в файле);
  • config (смена имени пользователя);
  • datetime (вывод текущего времени и даты);
  • поиск (внутри файлов);
  • web (запросы, скачивание файлов, поиск информации в Сети и прочее);
  • операции с папками и файлами (архивирование/разархивирование файлов, вычисление размера файлов, изменение прав доступа и другие);
  • пользовательские команды (вывод имени пользователя, IP-адреса, имена залогинившихся в машину пользователей и так далее).

Список команд постоянно увеличивается. Над проектом работает уже семнадцать разработчиков из пяти стран. Полный список команд Betty ты можешь найти на странице проекта на GitHub.

Betty создана гиками для гиков. И работает, как гик

Betty создана гиками для гиков. И работает, как гик

Sirius

Жемчужиной среди остальных можно назвать Sirius — новое и весьма амбициозное решение от группы разработчиков Clarity Lab из университета Мичигана. Несмотря на сходство названия с Siri, проект не имеет с ней ничего общего. Sirius уже может гораздо больше, чем его аналоги. Разработку Sirius взяли под свое крыло Google, DARPA, ARM, министерство обороны США и Американский национальный научный фонд. Исходники распространяются под лицензией BSD. Система основана на нескольких свободных проектах по распознаванию речи, таких как Sphinx, Kaldi, Protobuf, Speeded Up Robust Features (SURF, работает на базе OpenCV). Таким образом, в Sirius воплотилось все то лучшее, что было разработано в сфере распознавания речи за последние 35 лет.

Впервые Sirius продемонстрировали 14 марта 2015 года на технологической конференции в Стамбуле. Выпуск программы состоялся на следующий день. Sirius распознаёт не только речь, но и картинки и образы, а также понимает естественный язык человека. Например, программе можно показать фото любимого кафе и спросить, во сколько оно закрывается. Главное отличие программы от конкурентов заключается еще и в том, что пользователь может сделать Sirius узкоспециализированным помощником. К примеру, для выдачи академических консультаций ученому. Для реализации этого разработчики начали сотрудничество с IBM. «Фактически мы создали Linux среди умных цифровых помощников», — утверждает Марс.

Один из создателей Sirius Джейсон Марс уверен в будущем проекта

Один из создателей Sirius Джейсон Марс уверен в будущем проекта

Заключение

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

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

Чтобы научить Linux понимать проговариваемые слова, применяются системы распознавания речи (CMU), наиболее известная и работоспособная из которых носит имя Sphinx. Разработкой этого движка занимается университет Карнеги-Меллона, хотя отдельные доработки также производили сотрудники Массачусетского технологического института и корпорация Sun Microsystems. Качество распознавания «Сфинкса» еще далеко от идеала, он постоянно дает сбои и совершенно не способен разобрать слитную речь. Однако его возможностей вполне достаточно для организации системы исполнения простых голосовых команд, что и демонстрируют такие проекты, как Gnome Voice Control и PerlBox.

Альтернатива Sphinx - движок Julius японского происхождения. По качеству распознавания Julius не уступает Sphinx, однако имеет два изъяна: а) отсутствие хорошей акустической модели для английского языка (для русского более-менее нормальной нет и для Sphinx), что означает гораздо более низкое качество распознавания (в конце статьи я расскажу, как обойти эту проблему), и б) он использует внешний движок генерации акустической модели (обучения) HTK, разрабатываемый под руководством Microsoft в Кэмбридже (а это значит, что движок хоть и открыт, но использовать его можно только в личных целях).

Для систем синтеза существует масса различных оберток, упрощающих использование. Для Sphinx это уже не развиваемый PerlBox и созданный в рамках Google Summer Of Code апплет для среды Gnome под названием Gnome Voice Control. Отличная графическая оболочка для Julius - программа Simon, написанная с использованием библиотеки Qt4.

Пингвин! Лежать!

Перед тем, как перейти к установке и настройке системы распознавания речи следует уяснить, что ни один из открытых движков, будь то Sphinx, Julius или какой-то менее известный проект, не способен на 100% верно разобрать речь, даже если она будет принадлежать актеру с хорошо поставленным голосом. Однако при правильной тренировке программы (которая также включает в себя и подгонку под особенности произношения конкретного человека) ее вполне можно научить корректно распознавать простые двух-словные команды почти в 100% случаев.

И вот здесь нас ждет очень неприятный сюрприз: наиболее известная и распространенная CMU Sphinx (которая, кстати, имеет целых четыре параллельно развиваемых версии, одна из которых написана на Java) до сих пор находится в стадии «вечной альфы», пользоваться которой (не говоря уже о тренировке) обычному пользователю довольно затруднительно. Существует, конечно, утилита Gnome Voice Control, существенно упрощающая процесс общения с программой, но работает она только в Gnome. Поэтому мы воспользуемся Julius, который хоть и имеет некоторые проблемы, но очень прост в использовании.

Julius есть в репозиториях многих дистрибутивов, поэтому его не придется собирать из исходников. В Ubuntu для установки достаточно выполнить команду:

Теперь можно приступить к настройке, которая фактически включает в себя только процесс создания словаря: списка слов, который должен уметь распознавать движок, и объяснение того, как эти слова могут между собой сопоставляться. Нужно это для двух целей: во-первых, движок должен знать произношение слов и понимать их, а во-вторых, сократив словарь всего до нескольких фраз, мы значительно повысим качество распознавания. Для простоты возьмем стандартные словари, распространяемые вместе с пакетом julius-voxforge:

Просмотрев файл sample.voca, вы заметите, что он содержит совсем небольшой список слов, таких как call, get, dial и т.д., а также их фонетическое представление (что-то вроде транскрипции), файл sample.grammar содержит правила, в каких комбинациях эти слова могут быть использованы. Не беспокойтесь, если он кажется непонятным, это нормально :).

Попробуем изменить файлы так, чтобы подогнать их под нашу задачу, которой будет… допустим, управление аудиоплеером. Итак, откройте файл sample.voca и добавьте в него следующее (удалив прежнее содержимое):

В файл sample.grammar поместите строку:

Все это значит, что движок должен понимать словосочетания, которые состоят из: тишина (NS_B), слов «do» (ID), «play», «next», «prev» или «silence» (COMMAND), тишина (NS_E). Говоря проще, вы можешь сказать «Do play», и машина вас поймет, в то время как слова «Hello World» будут для него инопланетным языком. Хорошая особенность короткого словаря в том, что, даже если вы скажете что-то вроде «Du pray», движок, скорее всего, распознает это как «Do play», а не как-нибудь иначе (в английском десятки и сотни слов звучат почти одинаково).

Теперь, не выходя из каталога, выполните команду для генерации файлов sample.dfa sample.term и sample.dict:

Это все. Можете протестировать julius с помощью команды:

После появления строки "<<< please speak >>>" начинайте говорить определенные выше фразы. Чтобы движок правильно их понял, говорите слитно, как это делают англоговорящие (голоса которых и были использованы для создания акустической модели voxforge), без перерыва между словами. При таком способе произношения движок работает на удивление хорошо, лично у меня ни одного сбоя на 10 фраз. Если вы полуте худшие результаты, стоит поработать над произношением и купить хороший микрофон.

Конечно, пока от программы мало толку, поэтому мы должны создать Dialog manager, то есть, программу (скрипт), которая будет отвечать за перевод голосовых команд в команды на исполнение. К счастью, сделать это просто, достаточно прицепить на выход Julius стандартный ввод скрипта, который будет обрабатывать печатаемые программой фразы. Например, скрипт для управления audacious на языке python может выглядеть так:

Сохраните его под именем command.py и запускайте julius следующим образом:

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

Dragonfire

Сейчас голосовым ассистентом сложно кого-то удивить. Есть мобильные Alexa, Google Assistant и Siri, есть Cortana на Windows. А вот ОС Linux долгое время оставалась без такого приложения. Но теперь оно появилось — после 3 лет разработки была выпущена релизная версия голосового помощника Dragonfire 1.0.

Что известно

Программа написана на языке Python и распространяется под лицензией MIT. Для работы нужны дистрибутивы на базе ОС Ubuntu, в том числе KDE neon и elementary OS. Также есть мобильная версия для Android.

Dragonfire

Распознавание голосовых команд осуществляется системой распознавания речи Mozilla DeepSpeech. Она базируется на платформе машинного обучения TensorFlow. Синтез же производится за счёт Festival. Интерфейс в форме вопрос/ответ базируется на библиотеке распознавания текста на естественном языке spaCy и данных из Википедии. Ответы же формируются на базе диалогов из фильмов (Cornell Movie-Dialogs Corpus).

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

Система умеет работать в серверном режиме, предоставляя RESTful API для создания диалоговых чатботов. В поставке уже есть готовая версия бота для Twitter. В числе системных требований Dragonfire указаны видеокарта с поддержкой CUDA и 2 Гб свободной оперативной памяти. Также поддерживается распознавание речи с помощью API Google Speech, а не встроенного движка. Это позволит экономить системные ресурсы.

Зачем это нужно

Изначально помощник Dragonfire развивается как разработка в рамках проект по созданию мотоциклетного шлема дополненной реальности Dragon Armor. Однако использование технологии голосового управления интересно и на обычных ПК. Да, это менее привычный способ, чем мышь, но, кто знает, может в будущем Dragonfire и аналоги станут обязательными «жителями» операционных систем.

Dragonfire

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

Читайте также: