Учим linux понимать голосовые команды

123

А почему бы не научить своего пингвина понимать нашу речь? Причём не просто понимать, а ещё выполнять команды… да проще простого. Т.к. гугл открыл свой api для распознавания речи всем желающим, то для успеха нам нужно не более 2-х кб кода.

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

В первую очередь нам нужно будет установить пакеты: sox, flac и php5-curl

sudo apt-get install sox flac php5-curl php5-cli

Далее понадобится 4 файла, все их можно скачать по этой ссылке. Закидываю на дропбокс, ибо там мне удобнее обновлять скрипт.
Распаковываем их в любую папку, но файл mic лучше поместить в ~/bin, иначе придётся менять в нём путь. Остальные 3 файла(vocom, texttocmd.php и say.php) должны лежать в одной папке.
Затем запускаем в терминале файл vocom (./vocom).
И пробуем, что-нибудь произнести в микрофон.

Должно получится примерно так:

Меняем громкость с помощью голосовых команд

Если ничего не происходит, а видите только мигающий курсор, и в папке появился звуковой файл, значит барахлит чувствительность микрофона. Остановить скрипт можно нажав Cntrl+Z.

В скрипте vocom есть значения вида silence 1 0.3 3% 1 0.3 3%. 0,3 отвечает за параметр тишины. Если его поднять, то программа должна, по идее, прекратить запись и продолжить выполнения скрипта. Я не смог этого добиться… видимо мой микрофон совсем убит. Выход был найден следующий: я повесил скрипт mic, который включает или отключает микрофон, на клавишу клавиатуры. Как это сделать можно почитать здесь, внизу статьи.

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

alsamixer

и

amixer sset 'имя устройства в alsamixer' числовое_значение

Выглядело это так:

Для удобства можно в скрипт vocom добавить ключ -S, что бы видеть уровень микрофона и процесс записи.

Допустим с микрофоном вы разобрались, осталось научить linux выполнять наши команды. обратимся к файлу texttocmd.php .
Отыщем в нём следующие строки:

// Описываем команды, которые мы будем выполнять
$cmd_matrix = array(
array(array("провер", "поч"), "thunderbird"),
array(array("тихо"), "amixer sset 'Master' 10"),
array(array("громче"), "amixer sset 'Master' 100")
);

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

Как же лучше пользоваться этим голосовым управлением? Если вы не так часто разговариваете по микрофону, то файл» vocom» можно закинуть в автозагрузку, а активировать команды запуском скрипта «mic», который висит на клавише. Хотя для для обычного пользователя отдавать команды голосом — это скорее просто развлекаловка. Но возможно вы сможете найти лучшее применение, чем я.


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

Поделись статьёй с друзьями

Или просто поиграйся с кнопочками

10 комментариев на «Учим linux понимать голосовые команды»

  1. Здравствуйте. Спасибо за информацию. А то пол интернета переискал, а нашел только у Вас.

  2. Иван:

    Огромное спасибо за статью. Очень помогла.
    А что касается лучшего применения, то кроме голосового управления, я использовал её в качестве лабораторной работы по Системам искусственного интеллекта :-)

  3. Роман:

    Здравствуйте! У меня проблемы! Прошу вашей помощи, мне выдает:

    ./vocom: строка 5: php: команда не найдена
    ————————-
    Вы сказали:
    ————————-
    ./vocom: строка 9: php: команда не найдена
    Выполняю

    В чем может быть проблема? свяжитесь со мной: skype — kromkr, gmail: kromkr96@gmail.com

  4. StyLLeR:

    К сожалению не заработало, вернее заработало сперва, но потом при запуске ./vocom мигающий курсор и все, как исправить не могу понять =(
    Подскажите пожалуйста

  5. bash: ./vocom: Отказано в доступе
    вот такая ерунда…
    скайп — den_tvd
    Поможете?

  6. Андрей:

    Замечательная статья! Спасибо, все работает!!! Только, где бы взять микрофон с максимальной чувствительностью и минимальным уровнем шумов!? Сегодня настраивал микрофон, а соседи затеяли ремонт и запись просто не прекращается от их долбежки (wav был на 4 мега, пока не остановил скрипт Ctrl-Z), может стоит доработать скрипт \»записи\» ограничением по времени скажем в 5-10 секунд (кому сколько надо)??? На счет статьи \»исходника\» от Andrey_B, складывается ощущение, что человек просто торгует контроллерами и вынужден писать только для раскрутки своего сайта!!! Еще раз спасибо, если доработает скрипт, поклон челом буду бить :-))))

  7. после 5-и минутного изучения скриптов вопрос. Что делать если нет интернета?

Добавить комментарий