голосовой ввод через браузер

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

голосовой ввод через браузер

Сообщение sergejey » Вт янв 06, 2015 5:53 pm

Попробовал тут интересный эксперимент -- сделать голосовой ввод прямо из браузера (из сцены). Правда, будет работать только из хрома.

Рассказываю по шагам.

1. Добавляем на сцену элемент типа HTML

Изображение

2. Включаем галочку Дополнительный код Javascript

Изображение

и добавляем в него следующий код:

Код: Выделить всё

$(document).ready(function(){

if ('webkitSpeechRecognition' in window) {
  var recognition = new webkitSpeechRecognition();
  var final_transcript = '';
  recognition.continuous = true;
  recognition.interimResults = true;
  recognition.lang = "ru";

  recognition.onresult = function( event ) {
    var final_transcript = '';
    for (var i = event.resultIndex; i < event.results.length; ++i) {
      if (event.results[i].isFinal) {
        final_transcript += event.results[i][0].transcript;
      } 
    }
    $('#speech_block').val(final_transcript);
    if (final_transcript!='') {
     $.get('/command.php?qry='+encodeURIComponent(final_transcript),
       function( data ) {
       //alert(data);
      });
    }
    //document.getElementById( 'speech' ).value = final_transcript;
  };
  recognition.start();
}

});
 
3. В HTML-коде состояния прописываем такой код:

Изображение

Код: Выделить всё

<input type='text' name="speech_block" id='speech_block' value='' style="width:100px">
Всё, получаем на сцене строку ввода приблизительно в таком виде:

Изображение

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

В общем, попробуйте сами и делитесь результатами экспериментов :)
За это сообщение автора sergejey поблагодарил:
Otto (Сб июн 04, 2016 11:41 am)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: голосовой ввод через браузер

Сообщение sergejey » Вт янв 06, 2015 6:36 pm

В догонку: на самом деле эта штука перестаёт слушать через какое-то время. Можно внутрь кода добавить такую вещь:

Код: Выделить всё

  recognition.onend = function() {
    recognition.start();
  }; 
НО, проблему это НЕ решит -- каждый раз когда перезапускается движок распознавания речи, хром просит разрешения на использование микрофона и с этим ничего нельзя поделать. Если сайт работает по HTTP, а не по HTTPS, то дать разрешение такое можно только на время. Сделано это для защиты от хакеров, я так понимаю, что б они не могли получить постоянный доступ к камере/микрофону. Очень жаль, короче... Если кто придумает способ, как обойти это ограничение -- делитесь.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
jeks0n
Сообщения: 43
Зарегистрирован: Пт дек 26, 2014 6:37 pm
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: голосовой ввод через браузер

Сообщение jeks0n » Вт янв 06, 2015 6:46 pm

А сертификаты для https можно сделать только на определенное имя сервера и платно?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: голосовой ввод через браузер

Сообщение sergejey » Вт янв 06, 2015 7:17 pm

jeks0n писал(а):А сертификаты для https можно сделать только на определенное имя сервера и платно?
Нет, можно даже к localhost подключить, но не было возможности разбираться, хоть инструкции в интернете видел.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: голосовой ввод через браузер

Сообщение Ivan » Вт янв 06, 2015 7:43 pm

А нельзя Ок гугл использовать. Тогда слушать будет после фразы
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: голосовой ввод через браузер

Сообщение Vit » Вт янв 06, 2015 8:35 pm

http://c2n.me/39ZyMzz.png

Сереж первую команду воспринимает а потом постоянно вот это

т.е. зацикливание...Алиса проговорила и по кругу начинает говорить последнюю фразу, естественно ответ "неизвестная команда"
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: голосовой ввод через браузер

Сообщение sergejey » Вт янв 06, 2015 9:00 pm

Vit писал(а):http://c2n.me/39ZyMzz.png

Сереж первую команду воспринимает а потом постоянно вот это

т.е. зацикливание...Алиса проговорила и по кругу начинает говорить последнюю фразу, естественно ответ "неизвестная команда"
Да, была такая беда -- сама себя слышит, но вроде в сегодняшнем обновлении как раз правил, чтобы игнорировала такой случай.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: голосовой ввод через браузер

Сообщение Vit » Вт янв 06, 2015 9:04 pm

стоит обновиться?))
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: голосовой ввод через браузер

Сообщение Vit » Вт янв 06, 2015 9:06 pm

sergejey писал(а):В догонку: на самом деле эта штука перестаёт слушать через какое-то время. Можно внутрь кода добавить такую вещь:

Код: Выделить всё

  recognition.onend = function() {
    recognition.start();
  };
НО, проблему это НЕ решит -- каждый раз когда перезапускается движок распознавания речи, хром просит разрешения на использование микрофона и с этим ничего нельзя поделать. Если сайт работает по HTTP, а не по HTTPS, то дать разрешение такое можно только на время. Сделано это для защиты от хакеров, я так понимаю, что б они не могли получить постоянный доступ к камере/микрофону. Очень жаль, короче... Если кто придумает способ, как обойти это ограничение -- делитесь.
код

recognition.onend = function() {
recognition.start();
};

куда добавлять? в конец предыдущего кода?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: голосовой ввод через браузер

Сообщение sergejey » Вт янв 06, 2015 9:09 pm

Vit писал(а): код

recognition.onend = function() {
recognition.start();
};

куда добавлять? в конец предыдущего кода?
внутрь, перед recognition.onresult

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить