Голосовое управление клавиатурой. Голосовое управление компьютером

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

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

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

Голосовое управление Андроид

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

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

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

А именно:

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

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

Как включить голосовое управление

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

  1. установить приложение Google, если оно у вас уже установлено, то убедитесь, что стоит именно последняя версия
  2. зайти в приложение Google
  3. в верхнем левом углу нажать значок, который выглядит как три горизонтальные линии
  4. далее зайти в «Настройки »
  5. выбрать «Голосовой поиск »
  6. после - «Распознавание Ok, Google » или «На любом экране »

На некоторых устройствах распознавание функции голосового управления доступно не только в приложении Google, но и в других программах. Для этого в программе Google нажмите:

  1. «Настройки »
  2. далее - «Приложения ». Там у вас отобразится перечень программ, в которых вы можете использовать Ok, Google

Как настроить голосовое управление

Функция Ok, Google всегда активна при условии, если у вас запущено приложение Google или Google Chrome. После активации система зафиксирует ваш голос и в дальнейшем с распознаванием проблем не должно быть. Чтобы осуществить запрос достаточно произнести фразу Ok, Google и сформулировать вопрос или команду.

Как отключить голосовое управление

Отключить Ok, Google не сложнее, чем включить. Для этого нужно сделать следующее:

  1. зайти в приложение Google
  2. в верхнем левом углу значок, который выглядит как три горизонтальные линии
  3. выбрать «Голосовой поиск »
  4. далее «Распознавание Ok, Google »
  5. убрать флажок - «На любом экране » или «Всегда включено »

Команды голосового управления

Ok, Google распознаёт множество разных команд. Нет конкретного перечня выполняемых запросов, так как у каждого пользователя они разные.

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

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

Не работает голосовое управление. Какие могут быть причины и как исправить?

Убедитесь, что голосовое управление активно: «Настройки » - «Голосовой поиск » - «Распознавание О’кей, Google ». Установите флажок - «Из приложения Google ». Также для правильной работы голосового управления необходимо подключение к интернету. Убедитесь, что устройство подключено к Wi-Fi или мобильному интернету. Попробуйте перезагрузить устройство.

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

Голосовое управление телефоном

Уже не первый год смартфоны на популярнейших платформах (Android, iOS, Windows Phone) имеют встроенную систему голосового управления.


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


Лучше меня о Siri вам расскажет видео которое я для вас подготовил. Это отрывок из презентации iPhone 4S как раз на том месте, где один из разработчиков iPhone рассказывает о Siri (если видео не видно - обновите страницу):




Сегодня в Android смартфонах голосовое управление ничуть не уступает Siri (где-то даже превосходит) и выполяет практически те же задачи.

Голосовое управление компьютером

Кроме телефона вы можете научить понимать команды и ваш компьютер. В Windows Vista и Windows 7 тоже имеется встроенная система голосового управления, только она еще не доступна в русскоязычной версии операционной системы. Для того чтобы воспользоваться например, англоязычной системой голосового управления, ваша операционная система должна быть Ultimate (Максимальная) или Enterprise (Корпоративная) и в ней должен быть установлен английский языковой пакет. Но не смотря на все эти ограничения есть другие варианты для того, чтобы начать управлять компьютером с помощью голоса.


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


Голосовоеуправление.рф - облачный сервис и программа Speaker от российских разработчиков с очень хорошим распознаванием речи. Speaker намного лучше понимает человеческую речь . Еще одним плюсом программы, в отличии от Typle является то, что она начинает "слушать" команды только после нажатия командной клавиши - на данный момент это колесико мыши. Благодаря этому программа не будет выполнять команды когда это не нужно. Но по моему мнению использование колесика в качестве командной клавиши не совсем удобно, потому как оно часто используется в других случаях.


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

Голосовое управление в Google

заслуживает отдельного внимания. Всем известно что Google всегда создает качественные продукты и сервисы. Многие убедились в этом начав например, пользоваться почтой Gmail . На данный момент есть две известные мне возможности голосового управления сервисами Google.


Первая - это поиск информации с помощью голоса в поисковой системе Google. Помогает намного быстрей работать с поисковой системой.


Вторая - Google переводчик , позволяющий надиктовывать текст (пока только) на английском языке и автоматически получать перевод на нужный язык.


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

Голосовое управление в Google Chrome

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


Посмотрите видео в котором я покажу вам возможности расширения Oweb и примеры его применения:



Многие пользователи уже успели ознакомиться с ассистентом Cortana на Windows Phone 8.1 и его возможностями. Программа появилась в 2014 году, но за это время собрала немало поклонников. Именно поэтому разработчики её добавили в Windows 10, о чём стало известно не так давно. Если говорить о функциях ассистента, то в первую очередь следует упомянуть о усовершенствованной поисковой функции.

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

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

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

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

Ассистент от Microsoft отличается простотой в управлении. Можно использовать как голосовые команды, так и печатные – всё зависит от желания пользователя. Как включить голосового ассистента cortana в windows 10, пожалуй, первый вопрос, который интересует многих людей. Чтобы активировать программу, достаточно нажать на значок в виде O, находящийся возле кнопки «Пуск», или можно сказать «Эй, Кортана».

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

Чтобы Cortana выполняла более серьёзные команды, следует нажать на значок «Гамбургер» в левом верхнем углу. Там можно изменять напоминания и параметры, подстраивая их под себя. Что касается защиты, то о ней беспокоиться не стоит. Microsoft обеспечивает пользователям полную конфиденциальность данных, что немаловажно, ведь ассистент имеет доступ ко всем письмам, к поисковым запросам и к другой личной информации.

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

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

Синхронизация

Пользователи Cortana, установленной на Windows 8.1, хорошо знакомы с возможностью синхронизировать настройки и напоминания на всех своих устройствах с учётной записью Майкрософт. Это позволяло использовать ассистента на разных планшетах, коммуникаторах и компьютерах и при этом не настраивать его для каждого устройства отдельно.

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

В Кортане Windows 10 также будет синхронизация, которой можно управлять непосредственно из ассистента или из новой панели всех настроек, заменяющей панель управления и настройки ПК. Это довольно удобно, так как не придётся тратить своё время на адаптацию под себя Кортаны на каждом устройстве.

Как отключить программу

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

Второй способ не менее лёгкий. Потребуется также запустить ассистента и зайти в Настройки. На этот раз понадобится меню «Privacy», иначе говоря, «Конфиденциальность». Следует зайти в пункт «Речь, подпись и набор текста», где необходимо нажать на «Stop getting to know me». На этом всё.

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

Заключение

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

На данный момент остаётся только ждать, когда выйдет Кортана на русском языке. Всем пользователям рекомендуется запастись терпением, ведь новый ассистент и ряд его возможностей стоят внимания. (Автор статьи — Алексей Троицкий).

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

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

Для работы на компьютере Александр использовал программу «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. (Меня особенно напрягает, когда нейронной сети пытаются доверить управление автомобилем. Как потом в нестандартной ситуации понять, из-за чего машина повернула влево, а не вправо? Всемогущий Нейрон повелел?).

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

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