Джаваскрипт для голосового управления: annyang

1van

Постоялец
Регистрация
22 Май 2013
Сообщения
104
Реакции
20
Есть замечательный джаваскрипт, который можно использовать для голосового управления сайтом. Ссылка на гитхаб Для просмотра ссылки Войди или Зарегистрируйся.
Его достоинства маленький, лёгкий и поддерживает русский язык.
Из недостатков - поддерживается только хромом и его клонами.
Вот ещё одна ссылка на его описание Для просмотра ссылки Войди или Зарегистрируйся.
Как сейчас навигация реализована у меня можно посмотреть на сайте Для просмотра ссылки Войди или Зарегистрируйся.
Например, для перехода на страницу сайта я использую функцию
Код:
var internetprilavok = function() {
      window.location.href = 'https://stavrinok.ru/prilavok';
    }
а голосовая команда задается
Код:
var commands = {
  'Прилавок':   internetprilavok,
};
Но, так как я абсолютно не знаю JavaScript, прошу помощи у гуру js программирования в написании функции, которая бы вставляла распознанный текст в поля формы и функции прокрутки страницы вниз и вверх.
Заранее спасибо!
 
Последнее редактирование:
Однако, для нормально зрячего удобнее тыцнуть на ссылку в меню, чем голосом управлять.
Теоретически, эта фишка будет полезна для слабовидящих. Если так, то можешь предлагать ее для внедрения на сайтах госучреждений.
Они такое любят.
 
Однако, для нормально зрячего удобнее тыцнуть на ссылку в меню, чем голосом управлять.
Теоретически, эта фишка будет полезна для слабовидящих. Если так, то можешь предлагать ее для внедрения на сайтах госучреждений.
Они такое любят.
"Удобство" - не обсуждается, однако!
 
ну почему снова Java, если даже сначала оговаривался js (((
думаю, Вам нужно попробовать задать наводящие вопросы, а не обращаться с просьбой сделать полностью все
 
Получается этот скрипт к любому сайту привязать можно, я правильно понял ?
 
ну почему снова Java, если даже сначала оговаривался js (((
думаю, Вам нужно попробовать задать наводящие вопросы, а не обращаться с просьбой сделать полностью все
Спасибо за замечание. Исправил.

Теперь про наводящие вопросы: Вот ссылка на codepen.io example Для просмотра ссылки Войди или Зарегистрируйся.
Простая страница с формой ввода текста. Скрипты annyang и speechkitt (включение и выключение голосового интерфейса) уже подгружены.

Скрипт активации двух команд: Перейти на главную и Прилавок:
Код:
if (annyang) {
    var glavnaya = function() {
     window.location.href = 'https://stavrinok.ru';
    }
    var internetprilavok = function() {
      window.location.href = 'https://stavrinok.ru/prilavok';
    }

    var commands = {
      'Перейти на главную':   glavnaya,
      'Прилавок':   internetprilavok,
       };
    annyang.debug();
    annyang.addCommands(commands);
    annyang.setLanguage('ru');
    annyang.start();
    SpeechKITT.annyang();
    SpeechKITT.vroom();
}

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

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

Задача: текст который не является командой, но успешно распознан, должен вставляться в текстовое поле (когда курсор находится в этом поле).
 
Последнее редактирование:
Получается этот скрипт к любому сайту привязать можно, я правильно понял ?
Да, но работать будет только в хроме. На мобильном хроме тоже работает, но периодически противно пикает.
 
Последнее редактирование:
Задача: текст который не является командой, но успешно распознан, должен вставляться в текстовое поле (когда курсор находится в этом поле).
Как-то так:
HTML:
annyang.start({continuous: false});
annyang.addCallback('resultNoMatch', function(e) {
  jQuery('textarea:focus').val(e[0]);
});
 
  • Нравится
Реакции: 1van
Снимаю шляпу!
Спасибо Absolute!
Как сделать, чтобы после паузы уже распознанный старый текст сохранялся? Иначе, каждая новая фраза заменяет старую.
Код уважаемого Absolute уже добавил в пример на codepen Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
Как сделать, чтобы после паузы уже распознанный старый текст сохранялся? Иначе, каждая новая фраза заменяет старую.
Можно вот так:
Код:
annyang.addCallback('resultNoMatch', function(e) {
   jQuery('textarea:focus').val(function(){
     return this.value + ' ' + e[0];
  });
});
Прикольная штука, поигрался. Кстати, в e - массив возможных фраз, а элемент с индексом 0 - наиболее точное соответствие, как я понял.
 
  • Нравится
Реакции: 1van
Назад
Сверху