Страница 1 из 5

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

Добавлено: Вт янв 06, 2015 5:53 pm
sergejey
Попробовал тут интересный эксперимент -- сделать голосовой ввод прямо из браузера (из сцены). Правда, будет работать только из хрома.

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

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">
Всё, получаем на сцене строку ввода приблизительно в таком виде:

Изображение

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

В общем, попробуйте сами и делитесь результатами экспериментов :)

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

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

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

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

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

Добавлено: Вт янв 06, 2015 6:46 pm
jeks0n
А сертификаты для https можно сделать только на определенное имя сервера и платно?

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

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

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

Добавлено: Вт янв 06, 2015 7:43 pm
Ivan
А нельзя Ок гугл использовать. Тогда слушать будет после фразы

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

Добавлено: Вт янв 06, 2015 8:35 pm
Vit
http://c2n.me/39ZyMzz.png

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

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

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

Добавлено: Вт янв 06, 2015 9:00 pm
sergejey
Vit писал(а):http://c2n.me/39ZyMzz.png

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

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

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

Добавлено: Вт янв 06, 2015 9:04 pm
Vit
стоит обновиться?))

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

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

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

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

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

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

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

Добавлено: Вт янв 06, 2015 9:09 pm
sergejey
Vit писал(а): код

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

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