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

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

Модератор: immortal

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

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

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

обновился......все равно вот так

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


добавил код, все равно цикл

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

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

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

Vit писал(а):обновился......все равно вот так
добавил код, все равно цикл
Забавно... она сама себя может распознать не совсем так, как сказала :)
Тут пока даже не соображу как бороться, т.к. проверка на полное совпадение не работает. Как вариант не запускать интерфейс с распознаванием на том же компьютере, что и сервер, что б система сама себя не могла слышать.

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

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

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

sergejey писал(а):
Vit писал(а):обновился......все равно вот так
добавил код, все равно цикл
Забавно... она сама себя может распознать не совсем так, как сказала :)
Тут пока даже не соображу как бороться, т.к. проверка на полное совпадение не работает. Как вариант не запускать интерфейс с распознаванием на том же компьютере, что и сервер, что б система сама себя не могла слышать.

пока данный вариант нет возможности попробовать...кто то из форумчан думаю протестирует и отпишет....
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск
Благодарил (а): 107 раз
Поблагодарили: 7 раз

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

Сообщение triada13 » Вт янв 06, 2015 11:52 pm

Vit писал(а):пока данный вариант нет возможности попробовать...кто то из форумчан думаю протестирует и отпишет....
Vit подскажи что сделать, у меня нет зацикливания.
Majordomo на Orange Pi Zero.
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

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

Сообщение Vit » Чт янв 08, 2015 10:02 pm

triada13 писал(а):
Vit писал(а):пока данный вариант нет возможности попробовать...кто то из форумчан думаю протестирует и отпишет....
Vit подскажи что сделать, у меня нет зацикливания.
Вот по примеру Сергея:

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

ты на одной машине запускаешь?
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск
Благодарил (а): 107 раз
Поблагодарили: 7 раз

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

Сообщение triada13 » Чт янв 08, 2015 10:13 pm

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

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

Сообщение sergejey » Чт янв 08, 2015 10:19 pm

Ребят, я думаю, что это направление всё-таки не перспективное до тех пор, пока не будет возможности решить проблему с постоянным запросом разрешения.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
triada13
Сообщения: 242
Зарегистрирован: Вт мар 11, 2014 8:36 pm
Откуда: Челябинск
Благодарил (а): 107 раз
Поблагодарили: 7 раз

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

Сообщение triada13 » Чт янв 08, 2015 10:22 pm

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

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

Сообщение sergejey » Чт янв 08, 2015 11:44 pm

triada13 писал(а):Сергей, а нельзя эту кнопку как то программно нажимать? и нажатие это привязать к ключевому слову?р
Боюсь, что это уже не ко мне... по крайней мере, я не знаю как так сделать.

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

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

Сообщение sergejey » Сб янв 10, 2015 2:03 pm

Так-с... всё-таки я решил ещё одну вещь попробовать. Повторюсь, все эксперименты в браузере Chrome.

Итак, вот новый вариант для поля дополнительного Javascript-кода:

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

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {
    var key = e.message ? "message" : "data";
    var data = e[key];
    //run function//
    if (data!='') {
    var final_transcript=data;
    $.get('/command.php?qry='+encodeURIComponent(final_transcript),
       function( data ) {
       //alert(data);
      });
    }
},false); 
И вот что должно быть внутри HTML:

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

<iframe src="https://smartliving.ru/voice.html" width="100" height="40" marginwidth="0" frameborder="0" seamless></iframe> 
После обновления элемента надо перейти на страницу https://smartliving.ru/voice.html -- она не загрузится из-за невалидного SSL-сертификата, но через ссылку Дополнительно можно всё равно перейти. Там соглашаемся с использованием микрофона и эту ссылку можно закрывать, открыв перед этим сцену с настроенным по инструкциям выше элементом. Так нужно будет делать каждый раз после закрытия браузера, но пока браузер работает повторно ничего подтверждать не нужно (у меня он работает неделями без перезагрузки).

Если вы можете разместить файл voice.html на своём хостинге с нормальным SSL, то действия из предыдущего абзаца выполнять не нужно, нужно залить этот файл и поменять ссылку в HTML-коде с https://smartliving.ru/voice.html на вашу. Файлик сервер сайта совершенно не напрягает и никаких действий с сайтом не производит, важен только факт его загрузки.

Вот содержимое файла voice.html:
СпойлерПоказать

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

<html>
 <head>
  <script language="javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
 </head>
 <body style="padding:0px;maring:0px;">
 <script language="javascript">

window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
};

if ('webkitSpeechRecognition' in window) {

var recognitionStatus=0;
var pauseTimer;

function updateStatus() {
 if (recognitionStatus==1) {
  $('#micURL').html('<span style="color:green">A</span>');
 } else {
  $('#micURL').html('<span style="color:red">P</span>');
 }
}

function pauseRecognition(delay) {

 clearTimeout(pauseTimer);
 if (delay==0) {
  if (recognitionStatus==1) {
   recognition.stop();
   recognitionStatus=0;
  } else {
   recognition.start();
   recognitionStatus=1;
  }
 } else {
  recognition.stop();
  recognitionStatus=0;
  pauseTimer=setTimeout('recognition.start();recognitionStatus=1;updateStatus();', delay*1000);
 }

 updateStatus();
 return false;
}

var recognition;

$(document).ready(function(){
  recognition = new webkitSpeechRecognition();
  var final_transcript = '';
  recognition.continuous = true;
  recognition.interimResults = true;
  recognition.lang = "ru";

  recognition.onend = function() {
    if (recognitionStatus==1) {
     recognition.start();
    }
  }; 

  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!='') {
     if(self != top){
      parent.postMessage(final_transcript,'*');
      pauseRecognition(5);
     }
    }
  };
  recognitionStatus=1;
  recognition.start();
});  

}

 </script>
 <input type="text" name="speech_block" id="speech_block" size="5">
 <span id="mic"><a href="#" onClick="pauseRecognition(0);return false;" id="micURL"><span style="color:green">A</span></a></span>
 </body>
</html>
Всё, по идее дожно работать распознавание речи без постоянного запроса использования микрофона. После распознанной фразы идёт принудительная пауза распознавания в 5 секунд, чтобы система сама себя не слышала.

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