Простейшее управление компьютером при помощи голоса
Если вас интересует, как помочь обездвиженному человеку управлять компьютером для общения с внешним миром – вам сюда. Если вам интересно, какое отношение к этому имеют мел-частотные кепстральные коэффициенты и нейронные сети – вам тоже сюда.
Часть I. Программа для управления компьютером при помощи голоса
Ко мне обратился человек с просьбой написать программу, которая позволила бы управлять компьютерной мышью при помощи голоса. Тогда я и представить себе не мог, что, практически полностью парализованный человек, который даже не может сам повернуть голову, а может лишь разговаривать, способен развить бурную деятельность, помогая себе и другим жить активной жизнью, получать новые знания и навыки, работать и зарабатывать, общаться с другими людьми по всему свету, участвовать в конкурсе социальных проектов.
Позволю себе привести здесь пару ссылок на сайты, автором и/или идейным вдохновителем которых является этот человек – Александр Макарчук из города Борисов, Беларусь:
| «У Совы» — школа дистанционного обучения для людей с ограниченными возможностями. sova.by | |
| «Без ограничений» — советы для тех, кому нужно работать на компьютере без рук bezogranicheniy.ru |
Для работы на компьютере Александр использовал программу «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» было известно, что работает она следующим образом:
Последняя задача просто реализуется при помощи функции 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 открыты, да вот незадача – если вы их используете, то должны в своей программе (как в исходниках, так и в исполняемом модуле) прописать текст, содержащий, в том числе, следующее:
Мне это показалось неприемлемым, и пришлось код переписать. Это сказалось на быстродействии программы (в лучшую сторону, кстати, хотя «читабельность» кода несколько пострадала). Во многом благодаря использованию библиотек “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-коэффициентов:
Как управлять компьютером с помощью «Алисы»
Решил купить «Яндекс.Станцию», но подумал, что обычной функциональности ассистента будет маловато, поэтому нужно что-то еще. Первым делом в голову пришло управление компьютером с помощью «Станции».
Сначала решил, что «Алиса» в «Яндекс.Браузере» синхронизируется с «Алисой» в смартфоне, но кроме того, что у них нет общей синхронизации, у них довольно сильно отличаются возможности, поэтому этот способ отпал.
Начал искать готовое решение, наткнулся на единственную статью, в которой описан способ подключения через навык «Домовенок Кузя», но данный способ тоже не сработал.
В статье сказано, что навык должен синхронизироваться с системой голосового управления компьютером Laitis. Как я узнал немного позже, у Laitis есть свой навык у «Алисы» с тем же названием.
Скажи уже все-таки, как подключить «Яндекс.Станцию» к компьютеру, хорош лить воду.
Скачиваем Laitis и устанавливаем на компьютер. Переходим в настройки.
Устанавливаем запуск при старте, чтобы не запускать программу вручную каждый раз. Запись лучше оставить по нажатию клавиши, иначе при подключенном микрофоне к компьютеру Laitis на компьютере и «Алиса» будут дублировать команды, что не очень удобно. В голосовых командах активируем их и обязательно включаем внешний источник фраз. После этого у нас появляется ключ.
Активируем навык «Laitis» в «Алисе». Вас попросят вставить ключ, просто копируем строку из программы и вставляем в ответ «Алисе».
Теперь навык «Laitis» связан с одноименной программой на компьютере. Осталось только указать в программе путь к приложению, к которому мы обращаемся во время команды, но с этим не должно возникнуть трудностей.
Если есть какие-то вопросы или интересные мысли, пишите в комментарии!
Голосовые функции, голосовая активация, рукописный ввод, ввод с клавиатуры и конфиденциальность
Ваша конфиденциальность очень важна для нас. Поэтому мы предоставляем вам контроль над параметрами конфиденциальности распознавания речи в сети, рукописного ввода и персонализации ввода в Windows. Дополнительные сведения об этих функциях см. в следующих разделах.
Голосовые функции
Майкрософт предоставляет как функцию распознавания речи на устройстве, так и облачные (в сети) технологии распознавания речи.
Если включить параметр распознавания речи в сети, приложения смогут воспользоваться системой облачного распознавания речи Майкрософт. Кроме того, в Windows 10 параметр распознавания речи в сети дает возможность использовать диктовку в Windows.
Включение речи при настройке HoloLens или установке Windows Mixed Reality позволяет использовать голосовые команды, диктовку и взаимодействие с приложением. Будут включены оба параметра распознавания речи — на устройстве и в сети. Если включены оба параметра, когда ваша гарнитура включена, устройство всегда будет прослушивать ваши голосовые данные и отправлять голосовые данные в облачные технологии распознавания речи Майкрософт. Можно отключить эти параметры в любое время. Для этого перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовые функции на устройстве HoloLens или Пуск > Параметры > Смешанная реальность > Звук и речь при использовании решения Mixed Reality на устройстве с Windows. Подробнее о голосовых функциях в Windows Mixed Reality
При использовании облачных технологий распознавания речи Майкрософт (при включенном параметра «Распознавание речи в сети», при взаимодействии с устройством HoloLens или при использовании голосового ввода) корпорация Майкрософт собирает и использует записи вашего голоса, чтобы предоставлять эту услугу, преобразовывая произнесенные слова, содержащиеся в голосовых данных, в текст. Корпорация Майкрософт не хранит, не анализирует и не прослушивает записи вашего голоса без вашего разрешения. Дополнительные сведения см. в статье Как корпорация Майкрософт защищает мою конфиденциальность при улучшении технологии распознавания речи?
Функцию распознавания речи на устройстве можно использовать без отправки голосовых данных в корпорацию Майкрософт. Однако облачные технологии распознавания речи Майкрософт более точно распознают речь, чем функция распознавания речи на устройстве. Когда параметр распознавания речи через Интернет выключен, голосовые службы, не использующие облако и работающие только на вашем устройстве, такие как экранный диктор и распознавание речи Windows, по-прежнему будут работать, но Майкрософт не будет собирать никакие голосовые данные.
Дополнительные сведения о речевых данных, собираемых при использовании Кортаны, см. в разделе Кортана и конфиденциальность.
Когда мы собираем данные, даже если это делается для улучшения работы вашего устройства, мы стремимся предоставлять вам необходимую информацию, чтобы вы могли принять правильные решения о том, как и когда используются эти данные. Вот что следует сделать для управления параметрами распознавания речи.
Управление распознаванием речи в сети
Выполните одно из следующих действий:
В Windows 10 перейдите в меню Пуск > Параметры > Конфиденциальность > Распознавание речи.
В Windows 11 перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Распознавание речи.
Установите для параметра Распознавание речи в сети значение Вкл. или Откл.
Управление использованием голосовых фрагментов для улучшения распознавания речи в сети в Windows 10
Перейдите в меню Пуск > Параметры > Конфиденциальность > Распознавание речи.
В разделе Помогите сделать распознавание речи в сети лучше, выберите один из следующих вариантов:
Начать использовать мои голосовые сообщения
Прекратить использовать мои голосовые записи
Примечание: Этот параметр доступен не во всех версиях Windows 10. Если параметр недоступен, голосовые записи не будут использоваться для улучшения распознавания речи. Дополнительные сведения о добавлении голосовых записей см. в статье Как корпорация Майкрософт защищает мою конфиденциальность при совершенствовании технологии распознавания речи?
Управление распознаванием речи на устройстве HoloLens
Перейдите в меню Пуск> Параметры > Конфиденциальность > Голосовые функции.
В разделе Распознавание речи измените значение параметра на Вкл. или Выкл.
Управление распознаванием речи для смешанной реальности
Перейдите в меню Пуск> Параметры > Смешанная реальность > Звук и речь.
В разделе Распознавание речи измените значение параметра Использовать распознавание речи.
Голосовой ввод
В Windows 11 функция диктовки обновлена и переименована: теперь она называется «голосовой ввод». Функция голосового ввода, как и функция диктовки, использует технологии распознавания речи в сети для преобразования речи в текст. Для использования голосового ввода больше не нужно включать параметр распознавания речи в сети. Также вы можете отправлять голосовые фрагменты, чтобы помочь нам улучшить работу функции голосового ввода. Если вы не хотите оправлять голосовые фрагменты, вы все равно можете пользоваться голосовым вводом. Это можно настроить в любое время в параметрах голосового ввода. Корпорация Майкрософт не хранит, не анализирует и не прослушивает записи вашего голоса без вашего разрешения. Дополнительные сведения см. в статье Дополнительные сведения о Майкрософт и ваших голосовых данных.
Начало использования голосового ввода
Нажмите клавиши Windows + H или нажмите кнопку микрофона на сенсорной клавиатуре.
Управление использованием голосовых фрагментов, записываемых при голосовом вводе, для улучшения распознавания речи в сети в Windows 11
Если вы используете аппаратную клавиатуру
Откройте голосовой ввод, нажав клавиши Windows + H.
Чтобы начать отправлять голосовые фрагменты, выберите Узнайте, как начать отправку голосовых фрагментов
Чтобы прекратить отправку голосовых фрагментов, выберите Узнайте, как прекратить отправку голосовых фрагментов
Если вы используете сенсорную клавиатуру
Откройте голосовой ввод, нажав кнопку микрофона сенсорной клавиатуре.
Чтобы начать отправлять голосовые фрагменты, выберите Помогите нам улучшить голосовой ввод, затем выберите Узнайте, как начать отправку голосовых фрагментов.
Чтобы прекратить отправлять голосовые фрагменты, выберите Вы отправляете голосовые фрагменты, затем выберите Узнайте, как начать прекратить голосовых фрагментов.
Примечание: Если вы используете рабочую или учебную учетную запись, отправка голосовых данных недоступна, но вы по-прежнему можете использовать голосовой ввод.
Голосовая активация
Windows предоставляет поддерживаемые приложения, которые могут отвечать и выполнять действия на основе голосовых ключевых слов, настроенных для этого приложения. Например, Кортана может слушать речь и отвечать на фразу «Кортана!».
Если вы предоставите приложению разрешение прослушивать голосовые ключевые слова, Windows будет активно прослушивать микрофон на предмет произнесения этих ключевых слов. При распознавании ключевого слова приложение получит доступ к вашим голосовым записям, сможет обрабатывать эти записи, совершать действия и отвечать (например, используя устные ответы). Приложение сможет отправлять голосовые записи в свои собственные службы, находящиеся в облаке, для обработки команд. Каждое приложение должно запрашивать у вас разрешение на доступ к микрофону. Приложение-помощник может отправлять голосовые записи в свои службы и собирать записи для других целей, например для улучшения служб. Дополнительные сведения см. в заявлении о конфиденциальности для приложения-помощника. Майкрософт не собирает голосовые записи в интересах любых приложений сторонних производителей, для которых вы разрешили голосовую активацию.
Когда голосовой помощник приложения будет готов к активации с помощью произнесенного ключевого слова, на панели задач появится значок микрофона. В Windows 11 он выглядит следующим образом:
Когда голосовой помощник приложения будет активирован и начнет активное прослушивание, чтобы предоставить ответ, сведения на панели задач изменятся. Панель задач будет выглядеть, как на следующем снимке экрана Windows 11 (в данном случае показано, что активирована Кортана):
Голосовую активацию также можно включить, когда устройство заблокировано и экран выключен. После того как приложение будет активировано с помощью произнесенного ключевого слова, оно сможет продолжать слушать микрофон. Даже когда устройство заблокировано и экран выключен, приложение может активироваться для всех, кто говорит рядом с устройством и имеет доступ к тому же набору возможностей и информации, что и при разблокировке устройства.
Голосовые программы будут работать по-разному в зависимости от параметров спящего режима, которые вы выбрали для устройства, или типа устройства, которое вы используете.
Если вы используете ноутбук или планшет
Параметры спящего режима
Доступность голосовой активации
Поведение голосового помощника
Переход в спящий режим по истечении определенного периода времени
Когда экран включен (по умолчанию)
Голосовой помощник не отвечает после перехода устройства в спящий режим
Никогда не переходить в спящий режим
Когда устройство подключено к сети
Голосовая связь будет отвечать только всегда, когда устройство подключено к сети
Если вы используете моноблок
Параметры спящего режима
Доступность голосовой активации
Поведение голосового помощника
Переход в спящий режим по истечении определенного периода времени
Когда экран включен
Голосовой помощник не сможет ответить после перехода устройства в спящий режим
Никогда не переходить в спящий режим
Когда устройство подключено к сети (по умолчанию)
Голосовая связь будет отвечать только всегда, когда устройство подключено к сети
Из описанного выше поведения есть несколько исключений:
Если вы используете ноутбук или планшет, и устройство находится в режиме экономии заряда, голосовой помощник не сможет ответить.
Если вы используете ноутбук или планшет с встроенным виртуальным помощником, который поддерживает аппаратное обнаружение ключевых слов, например Алексу или Кортану, голосовой помощник всегда будет отвечать и даже выводить устройство из спящего режима, когда оно работает от батареи.
Чтобы просмотреть и изменить параметры спящего режима, выполните одно из следующих действий:
В Windows 10 перейдите в меню Пуск > Параметры > Система > Питание и спящий режим.
В Windows 11 перейдите в меню Пуск > Параметры > Система > Питание и батарея.
Чтобы просмотреть и изменить параметры голосовой активации, выполните одно из следующих действий:
В Windows 10 перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовая активация.
В Windows 11 перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Голосовая активация.
Чтобы узнать, какие разрешения предоставлены приложению, которое будет доступно при заблокированном устройстве, выполните одно из следующих действий:
В Windows 10 перейдите в меню Пуск > Параметры > Конфиденциальность и проверьте параметры на страницах Разрешения приложений.
В Windows 11 перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность и проверьте параметры на страницах Разрешения приложений.
Изменение возможности активации приложений, указанных на этой странице параметров, с помощью голосового ключевого слова
Перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовая активация.
Измените параметр Разрешить приложениям использовать голосовую активацию на Вкл. или Выкл..
Изменение возможности использования голосовой активации приложений, указанных на этой странице параметров, когда устройство заблокировано
Перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовая активация.
Изменение возможности активации отдельного приложения с помощью голосового ключевого слова
Перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовая активация.
Включите или отключите каждое приложение в разделе Выберите приложения, которые могут использовать голосовую активацию. Если параметр Разрешить приложениям использовать голосовую активацию отключен для вашей учетной записи пользователя, нужно будет включить его, чтобы можно было включить или отключить этот параметр.
В разделе Выберите приложения, которые могут использовать голосовую активацию выберите приложение и измените значение параметра, который позволяет приложению реагировать на ключевые слова, на Выкл.
Изменение возможности отдельного приложения использовать голосовую активацию, если устройство заблокировано
Перейдите в меню Пуск > Параметры > Конфиденциальность > Голосовая активация.
Включите или отключите каждое приложение в разделе Выберите приложения, которые могут использовать голосовую активацию. Если параметр Разрешить приложениям использовать голосовую активацию, когда это устройство заблокировано отключен для вашей учетной записи пользователя, нужно будет включить его, чтобы можно было включить или отключить этот параметр.
Изменение возможности активации приложений, указанных на этой странице параметров, с помощью голосового ключевого слова
Перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Голосовая активация.
Установите для параметра Разрешить приложениям доступ к службам голосовой активации значение Вкл. или Откл.
Изменение возможности использования голосовой активации приложений, указанных на этой странице параметров, когда устройство заблокировано
Перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Голосовая активация.
Разверните параметр Разрешить приложениям доступ к службам голосовой активации.
Установите для параметра Разрешить приложениям использовать голосовую активацию, когда устройство заблокировано значение Вкл. или Откл. Если параметр Разрешить приложениям доступ к службам голосовой активации отключен, нужно будет включить его, чтобы можно быть включить или отключить этот параметр.
Изменение возможности активации отдельного приложения с помощью голосового ключевого слова
Перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Голосовая активация.
Включите или отключите каждое приложение в разделе Приложения, запросившие доступ к голосовой активации. Если параметр Разрешить приложениям доступ к службам голосовой активации отключен для вашей учетной записи пользователя, нужно будет включить его, чтобы можно было включить или отключить этот параметр.
В разделе Приложения, запросившие доступ к голосовой активации выберите приложение и установите для параметра, разрешающего приложению отвечать на ключевые слова, значение Вкл. или Откл.
Изменение возможности отдельного приложения использовать голосовую активацию, когда устройство заблокировано
Перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Голосовая активация.
Разверните приложение в разделе Приложения, запросившие доступ к голосовой активации.
Установите или снимите флажок Использовать, даже если устройство заблокировано для этого приложения. Этот параметр должен быть включен для этого приложения, чтобы можно было установить или снять этот флажок.
Персонализация рукописного ввода и ввода с клавиатуры
В процессе рукописного ввода и ввода с клавиатуры на вашем устройстве система Windows собирает уникальные слова (например, записываемые вами имена) в личном словаре, который хранится на вашем устройстве и помогает повысить точность ввода с клавиатуры и рукописного ввода.
Отключение рукописного ввода и персонализации ввода, очистка личного словаря
В Windows 10 перейдите в меню Пуск > Параметры > Конфиденциальность > Персонализация рукописного ввода и ввода с клавиатуры, затем в разделе Наше знакомство переключите параметр в положение Откл.
В Windows 11 перейдите в меню Пуск > Параметры > Конфиденциальность и безопасность > Персонализация рукописного ввода и ввода с клавиатуры, измените значение параметра Личный словарь для рукописного ввода и ввода с клавиатуры на Откл.






