Позволю себе привести здесь пару ссылок на сайты, автором и/или идейным вдохновителем которых является этот человек – Александр Макарчук из города Борисов, Беларусь:
Для работы на компьютере Александр использовал программу «Vocal Joystick» - разработку студентов Университета штата Вашингтон, выполненную на деньги Национального Научного Фонда (NSF). См. melodi.ee.washington.edu/vj
Не удержался
Кстати, на сайте университета (http://www.washington.edu/) 90% статей именно про деньги. Трудно найти что-нибудь про научную работу. Вот, например, выдержки с первой страницы: «Том, выпускник университета, раньше питался грибами и с трудом платил за квартиру. Теперь он старший менеджер ИТ-компании и кредитует университет», «Большие Данные помогают бездомным», «Компания обязалась заплатить 5 миллионов долларов за новый учебный корпус».
Это одному мне режет глаз?
Исходных текстов нет, есть только отдельные публикации, приоткрывающие технологии, на которых она основана (MFCC, MLP – читайте об этом во второй части).
По образу и подобию была написана новая программа (месяца за три).
Собственно, посмотреть, как она работает, можно :
Скачать программу и/или посмотреть исходные коды можно .
Никаких особенных действий для установки программы выполнять не надо, просто щёлкаете на ней, да запускаете. Единственное, в некоторых случаях требуется, чтобы она была запущена от имени администратора (например, при работе с виртуальной клавиатурой “Comfort Keys Pro”):
Пожалуй, стоит упомянуть здесь и о других вещах, которые я ранее делал для того, чтобы можно было управлять компьютером без рук.
Если у вас есть возможность поворачивать голову, то хорошей альтернативой eViacam может послужить гироскоп, крепящийся к голове. Вы получите быстрое и точное позиционирование курсора и независимость от освещения.
Если вы можете двигать только зрачками глаз, то можно использовать трекер направления взгляда и программу к нему (могут быть сложности, если вы носите очки).
Последняя задача просто реализуется при помощи функции SendInput.
Наибольший же интерес, мне кажется, представляют вторая и третья задачи. Итак.
И среди тех, кто занимается распознаванием речи, идёт поиск «философского камня» - набора признаков, которые бы однозначно классифицировали звуковую волну.
Из тех признаков, что доступны широкой публике и описаны в учебниках, наибольшее распространение получили так называемые мел-частотные кепстральные коэффициенты (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, классический), отличающихся константой, на которую мы делим полученные коэффициенты, и особой константой для нулевого коэффициента. Можно выбрать любой вариант, сути это не изменит. |
Были выполнены следующие замены для шагов по получению MFCC-коэффициентов:
Давайте посмотрим, насколько оправдано применение нейронной сети здесь.
Вспомним, что делают нейроны в искусственных нейронных сетях.
Если у нейрона N входов, то нейрон делит N-мерное пространство пополам. Рубит гиперплоскостью наотмашь. При этом в одной половине пространства он срабатывает (выдаёт положительный ответ), а в другой – не срабатывает.
Давайте посмотрим на [практически] самый простой вариант – нейрон с двумя входами. Он, естественно, будет делить пополам двумерное пространство.
Пусть на вход подаются значения X1 и X2, которые нейрон умножает на весовые коэффициенты W1 и W2, и добавляет свободный член C.
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. (Меня особенно напрягает, когда нейронной сети пытаются доверить управление автомобилем. Как потом в нестандартной ситуации понять, из-за чего машина повернула влево, а не вправо? Всемогущий Нейрон повелел?).
Но наборы нормальных распределений – это уже отдельная большая тема, которая выходит за рамки этой статьи.
Надеюсь, что статья была полезной, и/или заставила ваши мозговые извилины поскрипеть.
Ко мне обратился человек с просьбой написать программу, которая позволила бы управлять компьютерной мышью при помощи голоса. Тогда я и представить себе не мог, что, практически полностью парализованный человек, который даже не может сам повернуть голову, а может лишь разговаривать, способен развить бурную деятельность, помогая себе и другим жить активной жизнью, получать новые знания и навыки, работать и зарабатывать, общаться с другими людьми по всему свету, участвовать в конкурсе социальных проектов.Позволю себе привести здесь пару ссылок на сайты, автором и/или идейным вдохновителем которых является этот человек – Александр Макарчук из города Борисов, Беларусь:
Для работы на компьютере Александр использовал программу «Vocal Joystick» - разработку студентов Университета штата Вашингтон, выполненную на деньги Национального Научного Фонда (NSF). См. melodi.ee.washington.edu/vj
Не удержался
Кстати, на сайте университета (http://www.washington.edu/) 90% статей именно про деньги. Трудно найти что-нибудь про научную работу. Вот, например, выдержки с первой страницы: «Том, выпускник университета, раньше питался грибами и с трудом платил за квартиру. Теперь он старший менеджер ИТ-компании и кредитует университет», «Большие Данные помогают бездомным», «Компания обязалась заплатить 5 миллионов долларов за новый учебный корпус».
Это одному мне режет глаз?
Исходных текстов нет, есть только отдельные публикации, приоткрывающие технологии, на которых она основана (MFCC, MLP – читайте об этом во второй части).
По образу и подобию была написана новая программа (месяца за три).
Собственно, посмотреть, как она работает, можно :
Скачать программу и/или посмотреть исходные коды можно .
Никаких особенных действий для установки программы выполнять не надо, просто щёлкаете на ней, да запускаете. Единственное, в некоторых случаях требуется, чтобы она была запущена от имени администратора (например, при работе с виртуальной клавиатурой “Comfort Keys Pro”):
Пожалуй, стоит упомянуть здесь и о других вещах, которые я ранее делал для того, чтобы можно было управлять компьютером без рук.
Если у вас есть возможность поворачивать голову, то хорошей альтернативой eViacam может послужить гироскоп, крепящийся к голове. Вы получите быстрое и точное позиционирование курсора и независимость от освещения.
Если вы можете двигать только зрачками глаз, то можно использовать трекер направления взгляда и программу к нему (могут быть сложности, если вы носите очки).
Последняя задача просто реализуется при помощи функции SendInput.
Наибольший же интерес, мне кажется, представляют вторая и третья задачи. Итак.
И среди тех, кто занимается распознаванием речи, идёт поиск «философского камня» - набора признаков, которые бы однозначно классифицировали звуковую волну.
Из тех признаков, что доступны широкой публике и описаны в учебниках, наибольшее распространение получили так называемые мел-частотные кепстральные коэффициенты (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, классический), отличающихся константой, на которую мы делим полученные коэффициенты, и особой константой для нулевого коэффициента. Можно выбрать любой вариант, сути это не изменит. |
Были выполнены следующие замены для шагов по получению MFCC-коэффициентов:
Давайте посмотрим, насколько оправдано применение нейронной сети здесь.
Вспомним, что делают нейроны в искусственных нейронных сетях.
Если у нейрона N входов, то нейрон делит N-мерное пространство пополам. Рубит гиперплоскостью наотмашь. При этом в одной половине пространства он срабатывает (выдаёт положительный ответ), а в другой – не срабатывает.
Давайте посмотрим на [практически] самый простой вариант – нейрон с двумя входами. Он, естественно, будет делить пополам двумерное пространство.
Пусть на вход подаются значения X1 и X2, которые нейрон умножает на весовые коэффициенты W1 и W2, и добавляет свободный член C.
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. (Меня особенно напрягает, когда нейронной сети пытаются доверить управление автомобилем. Как потом в нестандартной ситуации понять, из-за чего машина повернула влево, а не вправо? Всемогущий Нейрон повелел?).
Но наборы нормальных распределений – это уже отдельная большая тема, которая выходит за рамки этой статьи.
Надеюсь, что статья была полезной, и/или заставила ваши мозговые извилины поскрипеть.
Чаще всего при работе за персональным компьютером нам приходится набирать тексты большого объема. Сидя непосредственно перед монитором, мы теряем много времени, хотя могли бы совершать какие-либо дела по дому.
Разберёмся, что такое голосовое управление компьютером. Проведём некоторую аналогию. Раньше, да и сейчас, очень распространённым способом "освободить руки" от компьютера во время работы являлся найм ещё одного сотрудника - стенографиста или секретаря. Однако мало кто знает, что можно избежать лишних трат путём установки на персональный компьютер ряда программ и утилит, позволяющих осуществлять голосовое управление компьютером на русском языке.
С появлением таких программных продуктов, как "Горыныч" и WebSpeach, вы можете забыть о том, как долгими часами приходилось сидеть и печатать какую-либо работу, например, диплом, приказ или любую другую документацию. С развитием компьютерных технологий появился вариант использования специальной программы распознавания речи.
Голосовое управление компьютером Windows 8 осуществляется с помощью встроенной утилиты Windows Speech Recognition. К сожалению, в настоящий момент управление компьютером на русском языке невозможно. Компания Microsoft, во всей видимости, старается ориентироваться на наиболее распространённые языки, однако не исключено, что в скором времени будет выпущена поддержка и русского языка.
Если же вы всё-таки хотите попробовать управлять своим железным товарищем с помощью английского языка, следуйте следующей инструкции.
Вообще, возможности этой утилиты неисчерпаемы. Кроме использования базовых команд, вы также можете создавать свои.
Было создано множество приложений для распознавания русской и английской речи:
Однако наибольшую популярность набрали:
Займёмся их более подробным рассмотрением.
Как можно понять из названия, приложение было создано командой русских программистов и получило название в честь русского сказочного персонажа с именем Горыныч. Голосовое управление компьютером в ней осуществляется на русском языке, впрочем, имеется также и поддержка английского. "Горыныч" позволяет управлять персональным компьютером в пользовательском режиме, то есть совершать все возможные действия, которые вы можете производить с помощью мышки и клавиатуры: работа с окнами, приложениями, процессами, запущенными на персональном компьютере. Более того, "Горыныч" распознаёт речь исключительно одного хозяина, но не всегда.
Однако существует один достаточно большой недостаток. Дело в том, что всю базу команд вам необходимо вводить вручную. То есть, перед тем как вы сможете хоть что-то сделать на компьютере голосом, вам необходимо создать целую базу с записанными вашим голосом командами. Даже если вы это сделаете, в случае если вы вдруг охрипнете или поменяется хоть немного тембр голоса, "Горыныч" напрочь откажется вас понимать.
Очередной подводный камень заключается в том, что если вы хотите надиктовывать тексты на компьютер, вам предварительно потребуется создать огромный словарь для "Горыныча" с хорошим словарным запасом, чтобы он смог понять то, что вы диктуете.
Обеспечить это могут помочь сторонние приложения, устанавливаемые на персональный компьютер. Одним из них является Speechka. Так же, как и "Горыныч", русский продукт, созданный на основе технологий Google, "Спичка" позволяет пользователю с помощью заданного набора команд осуществлять голосовое управление компьютером. Speechka достаточно неплохо распознаёт любую речь, и для неё нет необходимости записывать звуковые файлы. Достаточно просто с клавиатуры ввести слово и ассоциировать его с каким-либо действием. Проще говоря, это достойный существования продукт, однако находящийся на стадии разработки, поскольку такие функции, как закрытие окон или запуск программ были добавлены сравнительно недавно.
Разобравшись, что такое голосовое управление компьютером, рассмотрим проблему набора текста. Как было уже сказано, не все приложения позволяют его производить. В большинстве случаев для этого необходимо предварительно составить целый словарь, а если вы являетесь пользователем Windows 8, то еще возникает проблема поддержки русской речи. Для того чтобы решить эту проблему, существует сервис голосового набора, созданный Google.
Доступное только для браузеров Chrome, приложение Google Web Speech распознаёт 32 ведущих мировых языка, в том числе и русский. Для того чтобы вводить текст голосом, вам потребуется соответствующий браузер, Интернет и микрофон. Разработки продвинулись достаточно далеко, поэтому эта утилита способна воспринимать грамотную русскую речь целыми словами и переводить её в печатный текст.
Еще одна программа для распознания речи и надиктовки её на персональный компьютер - RealSpeaker. Она использует современные технологии распознавания мимики лица. Для её использования подойдёт абсолютно любая веб-камера. Единственное неудобство, которое возникает при работе, это то, что лицо говорящего должно быть точно напротив камеры, на расстоянии не более 40 сантиметров. В этой программе существует словарь русского языка, который пользователь при желании может расширить. В целом эта программа намного удобнее "Горыныча".
Если вы задумались об управлении компьютером голосом, поверьте, это пока не для России. Адекватные программы распознавания на сегодняшний день существуют только на английском языке, а автоматический голосовой набор текста будет содержать столько ошибок, что будет проще написать текст с нуля, чем исправлять все опечатки. Вы, конечно, можете постараться выучить английский язык и управлять компьютером на нём, однако вам потребуется идеальная дикция и произношение.
Распознавание речи - это простой и многофункциональный инструмент Windows, с помощью которого можно управлять компьютером, используя голосовые команды.
Вы можете настроить эту функцию для навигации, запуска приложений, диктовки текста и выполнения множества других задач. Однако, распознавание речи предназначено в первую очередь для людей с ограниченными возможностями, которые не могут использовать мышь или клавиатуру.
В этом руководстве мы предоставляем шаги по настройке и эксплуатации функции распознавания речи, чтобы вы могли управлять компьютером только голосом.
К большому сожалению, этот инструмент, как и Кортана, в нашем регионе сильно ограничен.
Однако, вы можете изменить некоторые параметры компьютера. Для этого выполните следующие действия:
Важно! Чтобы все работало должным образом вы должны использовать не локальную учетную запись, а Microsoft! Если у вас установлена версия системы для одного языка (правый щелчок по «Этот компьютер», а затем «Свойства»), то вы не сможете использовать Кортану или полноценный инструмент распознавания речи!
Для удобства все действия переведены на русский язык и сопровождаются соответствующими скриншотами на английском. Более радикальный способ, если ничего не помогло, - установка Windows для США.
Выполните следующие действия:
Важно! Здесь наши пользователи сталкиваются с проблемой, поэтому нажмите на ссылку слева «Преобразование текста в речь» и сразу перейдите в раздел этой статьи как изменить настройки распознавания речи. Если у вас английский интерфейс системы, тогда смело продолжайте выполнять действия в сопровождении скриншотов на английском.
Примечание! Настольные микрофоны не идеальны, поэтому Microsoft рекомендует задействовать внешний микрофон или специальную гарнитуру.
После выполнения этих шагов можно приступить к использованию функции распознавания речи с помощью голосовых команд. В верхней части экрана появятся элементы управления.
Примечание! Вы можете перетащить и подключить интерфейс распознавания речи в любом месте экрана.
После завершения тренировочного процесса инструмент распознавания речи должен лучше понимать ваш голос.
Если вам необходимо изменить какие-нибудь параметры, выполните следующие действия:
Шаг 1. Откройте «Панель управления».
Шаг 2. Нажмите «Специальные возможности».
Шаг 3. Выберите «Распознавание речи».
Шаг 4. Щелкните на левой панели по текстовой ссылке дополнительных параметров речи.
Шаг 5. В окне свойств на вкладке «Распознавание речи» вы можете настроить различные компоненты функции, в том числе:
Шаг 6. На вкладке «Текст в речь» вы можете управлять настройками голоса, среди которых:
Шаг 7. Кроме того, вы всегда можете открыть с помощью правой кнопки мыши контекстное меню и получить доступ ко всем различным функциям и настройкам инструмента распознавания речи.
Несмотря на небольшой процесс обучения, распознавание речи использует четкие и легко запоминаемые команды. Например, «Пуск» открывает соответствующее меню, а «Показать рабочий стол» сворачивает все окна.
С помощью функции распознавания речи вы можете выполнить необходимые задачи.
Чтобы использовать эту функцию, в зависимости от конфигурации нажмите кнопку микрофона или скажите «Начать прослушивание».
Таким же образом вы можете отключить его, сказав «Стоп» или нажав кнопку микрофона.
Одними из наиболее часто используемых команд являются:
Распознавание речи также включает в себя возможность преобразования голоса в текст с использованием функции диктовки, и работает автоматически.
Чтобы оправдать ожидания пользователей и продемонстрировать конкурентоспособность в сравнении с такими компаниями, как Apple, Google или Amazon, Microsoft представила собственного умного помощника Кортана.
На ранних этапах он считался одним из лучших искусственных помощников, но утратил свой статус после проигрыша мобильной версии Microsoft в битве с Android и iOS. Тем не менее здесь мы имеем в виду Windows 10, поэтому Кортана и сейчас вполне жизнеспособный инструмент.
Надеемся, что со временем он улучшится. Кортана пригодится в том случае, если вы хотите запускать свой компьютер без каких-либо голосовых команд.
Вот как включить и настроить ее для последующего использования в Windows 10:
Помимо встроенного инструмента распознавания речи и голосового помощника Кортана, некоторые пользователи могут обратиться к сторонней альтернативе. Поскольку это категория программ находится в постоянном развитии, на рынке существуют различные продукты, совместимые с Windows 10. Единственный вопрос - это ваши потребности и пожелания.
Некоторые из программ, такие как:
Это онлайн-приложение, которое позволяет диктовать текст, а затем предлагает несколько базовых вариантов того, что с ним делать. Любителям минимализма оно точно понравится.
Вы можете скопировать начитанное в буфер обмена, отправить по электронной почте, напечатать, твитнуть и перевести на другой язык. Чтобы перевести текст просто нажмите кнопку, и выберите язык перевода. TalkTyper автоматически откроет в браузере новую вкладку с текстом, вставленным в переводчик Google.
Tazti выделяется среди других программ двумя отличительными особенностями:
Настраивайте Tazti по своему усмотрению. Если вам не нужна команда, тогда отредактируйте ее или полностью удалите. Вы даже можете добавить команды «щелчок» и «двойной щелчок», чтобы избавиться от необходимости использования мыши.
Тем не менее у Tazti есть один большой недостаток - она не имеет функции диктовки текста, поэтому не способна распознавать голос. Разработчик Voice Tech Group признает, что другие продукты намного лучше справляются с диктовкой, поэтому компания решила сосредоточить все усилия на других особенностях своего детища.
Tazti больше ориентируется на геймеров, которые хотят использовать свой голос для отправки персонажей на битву или тех, кто предпочитает запускать программы, медиаплееры и просматривать веб-страницы без необходимости использования клавиатуры. Тот факт, что вы можете контролировать важные части Windows с помощью Tazti, делает его достойным противником вышеупомянутых приложений, даже если и не предлагает диктовку.
Важно! Программа имеет пробный 15-дневный период. После этого нужно заплатить 40 долларов.
Итак, если распознавание речи или Кортана не соответствуют вашим требованиям (или вы попросту не можете ими воспользоваться), тогда попробуйте вышеперечисленные утилиты.
Для людей с ограниченными возможностями, а также просто для сибаритов, разработчики ОС создали голосовое управление компьютером. Оно позволяет пользователю вводить информацию при помощи голоса. После проговаривания определенных слов устройство начинает распознавание речи - преобразование звукового сигнала в цифровую информацию. После того, как введенная информация будет корректно распознана – программа переходит к заданному алгоритму действия – выполняет функцию, которая прикреплена к той или иной команде.
Все достаточно просто. Не всегда речь распознается корректно, поэтому для решения сложных задач по управлению операционной системой программа голосового управления компьютером интенсивно не используется. Она применяется для выполнения основных функций: открытия и закрытия файлов, локального и сетевого поиска и пр.
«Кортана» - это виртуальный помощник в операционной системе Windows. Сервис помогает пользователю в планировании дел, напоминает о них.
При определенном запросе сервис поможет собрать конкретную информацию, создать четкую структуру и преподнести ее пользователю в максимально возможно обработанном виде.
Интересно, что сразу при включении виртуальный помощник собирает всю информацию о введенных запросах, личных данных, пытаясь максимально адаптироваться под каждого отдельного пользователя.
Голосовое управление компьютером Windows 7 посредством использования виртуального помощника невозможно – он интегрирован только в десятую версию. Но, как ни жаль, разработчики не удосужились выпустить русскоязычную версию.
Главную роль отыгрывает поиск, который в 10-ке можно открыть через «Пуск». Эта функция определяет практически любые запросы. Если вхождение не распознано – можно ввести соответствующую команду во всплывающее окно и программа голосового управления компьютером считает текстовую информацию.
Неприятный момент – сбор всех данных, введенных через клавиатуру, и их отправка в «Майкрософт».
После выполнения установки переходим к следующему шагу – создаем учетную запись. Здесь необходимо придумать ключевую фразу, после чего прозвучит уведомление об активации.
Дальше нужно будет придумать и создать голосовые команды, независимо от их предназначения. Команда «собака» может запускать приложение или выполнять совсем другое действие.
Просто нужно создать голосовую команду и закрепить ее за определенным действием. Подойдет только для выполнения базовых операций – открытия файлов, папок и пр. Функционал ограничен.
Здесь функционал более широкий, нежели в Typle.
Голосовое управление компьютером Windows 10 предоставляет пользователю возможность открывать и закрывать файлы, делать снимки состояния экрана, выключать ПК.
Распознавание речи происходит довольно долго, свыше 3-4 секунд. Это обусловлено тем, что сначала речь преобразуется в текст, а команды распознаются компьютером уже с текстовой информации.
Это бесплатная программа, которая позволяет как управлять ПК, так и диктовать текст. После установки необходимо зарегистрироваться и дальше можно пользоваться в свое удовольствие.
Интересна функция автозамены при наборе текста. Вы можете сказать «Кавычки» и в тексте появится соответствующий символ.
Посредством использования этого приложения можно выполнять локальный или сетевой поиск информации и файлов, перезагрузить или выключить компьютер. Присутствует функция открытия программ и сайтов.
Чтобы воспользоваться программой, необходимо сначала скачать и установить ее.
Но при установке стоит убрать галочки напротив пунктов, где производитель софта предлагает установить браузер, поменять его настройки. В противном случае установка займет больше время и в браузере изменится конфигурация.
В конечном итоге строка размещается около кнопки «Пуск». Скажите «Слушай Яндекс» и откроется окно.
Проговорите запрос.
После паузы в браузере откроется строка поиска. Занимательно управлять поиском таким образом.
В целом, голосовое управление компьютером пока не развито, так как рисуется нам в воображении. Но и те функции, что имеются на сегодняшний день, уже впечатляют и существенно помогают перейти на новый уровень пользования ПК.
Отличного Вам дня!