Программа для управления компьютером голосом на русском. Управление жестами на компьютере

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

Штатное средство Windows

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

Итак, чтобы включить распознавание речи:

  • Подключите микрофон к компьютеру и настройте его, следуя подсказкам.
  • Откройте «Панель управления». Выберите режим отображения «Мелкие значки».
  • Зайдите в раздел «Распознавание речи».

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

Cortana

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

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

Speechka

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

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

Typle

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

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

Laitis

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

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

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

"Горыныч"

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

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

Speaker

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

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

"Алиса"

Разработкой данного приложения занимается небезызвестная компания «Яндекс». Уже сейчас «Алиса» запросто подскажет вам точное время, поделится свежими новостями, включит музыку и так далее. К тому же, программа встраивается в интерфейс операционной системы, что облегчает работу с ней.

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

Сегодня речь пойдет о нашей речи. Хотелось бы вам управлять компьютером голосом , без помощи пальцев? А, как это говорят, — силой мысли! Правда, мы не будем управлять компьютер силой мысли, но вот силой голоса вполне реально.

Программа Typle — это одна из лучших на сегодняшний день программа для управления компьютером через голос. На сайтах в комментариях к этой программе мнения сходятся.

Правда есть свои недочеты. Но об этом чуть позже. Кстати, если вас интересует — читайте мой обзор.

Скачать программу можно здесь: http://freesoft.ru/typle

Как же ее использовать? В начале запустим ее и посмотрим главные кнопки управления:

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

Затем жмем добавить. Итак, мы сохранили в программе своим голосом слово «Открой». Вы можете говорить в микрофон любые другие слова. Главное — не запутаться.

Следующим шагом будет добавление команд. Для этого перейдем в этот пункт:

Потом мы устанавливаем галочку напротив того пункта, который нам нужен:

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

И теперь будет видна в нашем профиле одна голосовая команда. В данном случае та, которая открывает 7-Zip:

И теперь, нажав завершающую кнопку «начать говорить»

говорим фразу «открой Севен Зип». В моем случае, все сработает. И программа 7-zip откроется. Помните такую фразу: Сим сим откройся? Вот это что-то приблизительно такое же.

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

Поэтому для тестирования и банального любопытства программа Typle подойдет на все 100%.

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

Есть такие страшные названия других аналогов программы, как Горыныч, Перпетуум, Диктограф, Voice Commander. Но все они — «не того». Не проходят критику достойной программы.

На освоение этой программы у меня ушло 5 минут. Это довольно-таки длительное время (в основном, в таких программах я разбираюсь за 1-2 минуту). Если возникнут вопросы — пишите. До скорых встреч, друзья:)!

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

Управление голосом на Windows

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

Typle

Данная программа лидер среди программ, позволяющих командовать компьютером на родном русском языке. После установки нужно будет завести пользователя и придумать ему ключевое слово вроде «Ok, Windows», хотя нам советуют слово «Открой». Именно с него мы и начинаем говорить, знакомая реализация в Google Glasses существует.

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

Управление жестами на компьютере

Еще с момента появления PlayStation®Eye Camera и kinect люди захотели такие же функции и на компьютере. Позже Kinect даже стали продавать разработчикам, но для общего пользователя такого продукта не анонсировали. И даже есть новость, что Kinect 2.0 с Xbox One не будет работать на компьютере, но выйдет специальная версия Kinect и для PC. Правда без соответствующего софта пользы от него мало. Так что перейдем к самому софту.

Самым популярным и доступным способом управления жестами является программа Flutter и соответствующее Chrome-расширение. Для этой программы подойдет почти любая веб-камера.

Довольно мало функций, но зато они очень хорошо работают. Мы можем ставить на паузу и продолжать показывая ладонь. Переключать треки или видео налево или направо, в зависимости, куда укажем пальцем. Работает программа в PowerPoint, VLC, Winamp, iTunes, YouTube и нескольких других сервисов, которые мало кто у нас использует.

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

Наверняка Flutter скоро получит полную поддержку Chrome, ведь стартап в октябре 2013 года купила Google.

Leap Motion

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

Но, на самом деле, здесь много минусов. На хабре было обсуждений и даже мнение одного из пользователей. Руки всегда надо держать запястьем вверх над устройством, думаете легко? Подержите 5 минут.

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

Да и сам дравйвер для Leap Motion будет сжирать почти все ваши ресурсы на компьютере. Но если и это вас не останавливает, то купить, как всегда, на оф. сайте . Он даже на русском языке.

DUO 3D

Похожая технология от русских разработчиков тоже существует. Они просто взяли две Eye Camera, написали софт и сделали компанию на кикстартере. К сожалению, провальную. Собрали 62 000$ из 110 000$ планированных. Обидно, тем более, что они не получат даже этих денег, так как надо собрать все, чтобы они поступили.

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

Myo

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

Сейчас браслет можно предзаказать за 150$, но боюсь попасть на сырую версию.

Управление компьютером с веб камеры на ноутбуках

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

Продуктами этой компании пользуется Acer. А Lenovo на основе этих наработок сделает свой собственный Motion Control 2.0.

А в сентябре 2013 Intel анонсировала новые ноутбуки с голосовым управлением, управлением жестами, прикосновением, а до этого летом компания приобрела израильский стартап Omek.

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

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

Позволю себе привести здесь пару ссылок на сайты, автором и/или идейным вдохновителем которых является этот человек – Александр Макарчук из города Борисов, Беларусь:

Для работы на компьютере Александр использовал программу «Vocal Joystick» - разработку студентов Университета штата Вашингтон, выполненную на деньги Национального Научного Фонда (NSF). См. melodi.ee.washington.edu/vj

Не удержался

Кстати, на сайте университета (http://www.washington.edu/) 90% статей именно про деньги. Трудно найти что-нибудь про научную работу. Вот, например, выдержки с первой страницы: «Том, выпускник университета, раньше питался грибами и с трудом платил за квартиру. Теперь он старший менеджер ИТ-компании и кредитует университет», «Большие Данные помогают бездомным», «Компания обязалась заплатить 5 миллионов долларов за новый учебный корпус».

Это одному мне режет глаз?


Программа была сделана в 2005-2009 годах и хорошо работала на Windows XP. В более свежих версиях Windows программа может зависнуть, что неприемлемо для человека, который не может встать со стула и её перезапустить. Поэтому программу нужно было переделать.

Исходных текстов нет, есть только отдельные публикации, приоткрывающие технологии, на которых она основана (MFCC, MLP – читайте об этом во второй части).

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

Собственно, посмотреть, как она работает, можно :

Скачать программу и/или посмотреть исходные коды можно .

Никаких особенных действий для установки программы выполнять не надо, просто щёлкаете на ней, да запускаете. Единственное, в некоторых случаях требуется, чтобы она была запущена от имени администратора (например, при работе с виртуальной клавиатурой “Comfort Keys Pro”):

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

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

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

Часть II. Как это устроено?

Из опубликованных материалов о программе «Vocal Joystick» было известно, что работает она следующим образом:
  1. Нарезка звукового потока на кадры по 25 миллисекунд с перехлёстом по 10 миллисекунд
  2. Получение 13 кепстральных коэффициентов (MFCC) для каждого кадра
  3. Проверка того, что произносится один из 6 запомненных звуков (4 гласных и 2 согласных) при помощи многослойного персептрона (MLP)
  4. Воплощение найденных звуков в движение/щелчки мыши
Первая задача примечательна лишь тем, что для её решения в реальном времени пришлось вводить в программу три дополнительных потока, так как считывание данных с микрофона, обработка звука, проигрывание звука через звуковую карту происходят асинхронно.

Последняя задача просто реализуется при помощи функции SendInput.

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

Задача №2. Получение 13 кепстральных коэффициентов

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

И среди тех, кто занимается распознаванием речи, идёт поиск «философского камня» - набора признаков, которые бы однозначно классифицировали звуковую волну.

Из тех признаков, что доступны широкой публике и описаны в учебниках, наибольшее распространение получили так называемые мел-частотные кепстральные коэффициенты (MFCC).

История их такова, что изначально они предназначались совсем для другого, а именно, для подавления эха в сигнале (познавательную статью на эту тему написали уважаемые Оппенгейм и Шафер, да пребудет радость в домах этих благородных мужей. См. A. V. Oppenheim and R.W. Schafer, “From Frequency to Quefrency: A History of the Cepstrum”).

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

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

Это всего лишь одна из проекций 13-мерного пространства MFCC в 3-мерное, но и на ней видно, что я имею в виду – красные, фиолетовые и синие точки получены от разных микрофонов: (Plantronix, встроенный массив микрофонов, Jabra), но звук произносился один.

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

Чтобы не ошибиться в реализации, в первых версиях программы в качестве основы был использован код из хорошо известной программы CMU Sphinx, точнее, её реализации на языке C, именующейся pocketsphinx, разработанной в Университете Карнеги-Меллона (мир с ними обоими! (с) Хоттабыч).

Исходные коды pocketsphinx открыты, да вот незадача – если вы их используете, то должны в своей программе (как в исходниках, так и в исполняемом модуле) прописать текст, содержащий, в том числе, следующее:

* This work was supported in part by funding from the Defense Advanced * Research Projects Agency and the National Science Foundation of the * United States of America, and the CMU Sphinx Speech Consortium.
Мне это показалось неприемлемым, и пришлось код переписать. Это сказалось на быстродействии программы (в лучшую сторону, кстати, хотя «читабельность» кода несколько пострадала). Во многом благодаря использованию библиотек “Intel Performance Primitives”, но и сам кое-что оптимизировал, вроде MEL-фильтра. Тем не менее, проверка на тестовых данных показала, что получаемые MFCC-коэффициенты полностью аналогичны тем, что получаются при помощи, например, утилиты sphinx_fe.

В программах sphinxbase вычисление MFCC-коэффициентов производится следующими шагами:

Шаг Функция sphinxbase Суть операции
1 fe_pre_emphasis Из текущего отсчёта вычитается большая часть предыдущего отсчета (например, 0.97 от его значения). Примитивный фильтр, отбрасывающий нижние частоты.
2 fe_hamming_window Окно Хемминга – вносит затухание в начале и конце кадра
3 fe_fft_real Быстрое преобразование Фурье
4 fe_spec2magnitude Из обычного спектра получаем спектр мощности, теряя фазу
5 fe_mel_spec Группируем частоты спектра [например, 256 штук] в 40 кучек, используя MEL-шкалу и весовые коэффициенты
6 fe_mel_cep Берём логарифм и применяем DCT2-преобразование к 40 значениям из предыдущего шага.
Оставляем первые 13 значений результата.
Есть несколько вариантов DCT2 (HTK, legacy, классический), отличающихся константой, на которую мы делим полученные коэффициенты, и особой константой для нулевого коэффициента. Можно выбрать любой вариант, сути это не изменит.

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

Были выполнены следующие замены для шагов по получению MFCC-коэффициентов:

Задача №3. Проверка того, что произносится один из 6 запомненных звуков

В программе-оригинале «Vocal Joystick» для классификации использовался многослойный персептрон (MLP) – нейронная сеть без новомодных наворотов.

Давайте посмотрим, насколько оправдано применение нейронной сети здесь.

Вспомним, что делают нейроны в искусственных нейронных сетях.

Если у нейрона N входов, то нейрон делит N-мерное пространство пополам. Рубит гиперплоскостью наотмашь. При этом в одной половине пространства он срабатывает (выдаёт положительный ответ), а в другой – не срабатывает.

Давайте посмотрим на [практически] самый простой вариант – нейрон с двумя входами. Он, естественно, будет делить пополам двумерное пространство.

Пусть на вход подаются значения X1 и X2, которые нейрон умножает на весовые коэффициенты W1 и W2, и добавляет свободный член C.


Итого, на выходе нейрона (обозначим его за Y) получаем:

Y=X1*W1+X2*W2+C

(опустим пока тонкости про сигмоидальные функции)

Считаем, что нейрон срабатывает, когда Y>0. Прямая, заданная уравнением 0=X1*W1+X2*W2+C как раз и делит пространство на часть, где Y>0, и часть, где Y<0.

Проиллюстрируем сказанное конкретными числами.

Пусть W1=1, W2=1, C=-5;

Теперь посмотрим, как нам организовать нейронную сеть, которая бы срабатывала на некоторой области пространства, условно говоря – пятне, и не срабатывала во всех остальных местах.

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

Эти три нейрона мы объединим вместе при помощи ещё одного слоя, получив многослойную нейронную сеть (MLP).

А если нам нужно, чтобы нейронная сеть срабатывала в двух областях пространства, то потребуется ещё минимум три нейрона (4,5,6 на рисунках):

И тут уж без третьего слоя не обойтись:

А третий слой – это уже почти Deep Learning…

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

Если бы меня попросили отрезать прямыми красное от синего, то я бы сделал это как-то так:

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

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

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

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

- Что ты думаешь, доедет то колесо, если б случилось, в Москву или не доедет?
- А ты как думаешь, сойдётся ента нейронная сеть или не сойдётся?

Есть ещё один неприятный момент, связанный с нейронными сетями. Их «забывчивость».

Если начать скармливать сети только синие точки, и перестать скармливать красные, то она может спокойно отхватить себе кусок красной области, переместив туда свои границы:

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

А есть одна маленькая, но очень существенная деталь.

Я очень хорошо могу отделить красное сердечко от синего фона отрезками прямых в двумерном пространстве.

Я неплохо смогу отделить плоскостями статую Венеры от окружающего её трёхмерного пространства.

Но в четырёхмерном пространстве я не смогу ничего, извините. А в 13-мерном - тем более.

А вот для нейронной сети размерность пространства препятствием не является. Я посмеивался над ней в пространствах малой размерности, но стоило выйти за пределы обыденного, как она меня легко уделала.

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

Забудем на секунду, что наши MFCC-коэффициенты находятся в 13-мерном пространстве, и представим, что они двумерные, то есть точки на плоскости. Как в этом случае можно было бы отделить один звук от другого?

Пусть MFCC-точки звука 1 имеют среднеквадратическое отклонение R1, что [грубо] означает, что точки, не слишком далеко отклоняющиеся от среднего, наиболее характерные точки, находятся внутри круга с радиусом R1. Точно так же точки, которым мы доверяем у звука 2 находятся внутри круга с радиусом R2.

Внимание, вопрос: где провести прямую, которая лучше всего отделяла бы звук 1 от звука 2?

Напрашивается ответ: посередине между границами кругов. Возражения есть? Возражений нет.
Исправление: В программе эта граница делит отрезок, соединяющий центры кругов в соотношении R1:R2, так правильнее.

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

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

Ну, хорошо, а теперь вспомним, что пространство 13-мерное, и то, что было хорошо рисовать на бумаге, теперь оказывается тем, что не укладывается в человеческом мозгу.

Так, да не так. К счастью, в пространстве любой размерности остаются такие понятия, как точка, прямая, [гипер]плоскость, [гипер]сфера.

Мы повторяем все те же действия и в 13-мерном пространстве: находим дисперсию, определяем радиусы [гипер]сфер, соединяем их центры прямой, рубим её [гипер]плоскостью в точке, равно отдалённой от границ [гипер]сфер.

Никакая нейронная сеть не сможет более правильно отделить один звук от другого.

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

Но я бы не рисковал. А применил бы, например, наборы нормальных распределений (GMM), (что, кстати и сделано в CMU Sphinx). Всегда приятнее, когда ты понимаешь, какой конкретно алгоритм привёл к получению результата. А не как в нейронной сети: Оракул, на основе своего многочасового варения бульона из данных для тренировки, повелевает вам принять решение, что запрашиваемый звук – это звук №3. (Меня особенно напрягает, когда нейронной сети пытаются доверить управление автомобилем. Как потом в нестандартной ситуации понять, из-за чего машина повернула влево, а не вправо? Всемогущий Нейрон повелел?).

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

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

Не хотели бы вы попробовать управлять вашим компьютером посредством голоса? Typle - это программа, которая идеально подходит для этой цели. Вы получите возможность настроить ваш компьютер полностью под себя, осуществляя управление им без использования периферийных устройств. Ограничений на количество команд в Typle нет. Работа с утилитой происходит следующим образом: вы выбираете файл, указывает, что необходимо сделать с ним и записываете голосовую команду. Когда утилита услышит голосовую команду, она незамедлительно совершит нужное действие. И не важно, эта команда должна открывать определенный сайт в браузере, воспроизводить плейлист или песню, или же запускать программу. Всё на ваше усмотрение, возможности не ограничены. Распознавание голоса в Typle реализовано на высоком уровне.

К примеру, нужно открыть ссылку в браузере. В верхнем меню выберите функцию «добавить». Перед вами появится окно, в котором необходимо будет выбрать файл или программу. Нажав кнопку «дополнительно», вы сможете выбрать сам файл, записать для него команду (к примеру «открыть хром») и сохранить. Далее стоит проверить работу команды. Нажмите «начать говорить» в программе и скажите команду. Интерфейс дружелюбный и полностью настраиваемый. Если вы забыли существующую команду, то её можно просмотреть и отредактировать в случае необходимости.