Как средствами браузера распознавать речь и отправлять на свой сервер
Все просто - свои стили, простота работы, кроссбраузерность, ибо почти все популярные браузеры работают на движке хромиум. Никаких ключей, запросов к яндексу =) А еще можно замутить постоянное прослушивание эфира
Тоже все просто. За прием речи отвечает браузер, далее отправляет запрос, как я думаю в гугл на распознование и возвращает результат. Работает на 40 языках.
Работает только по протаколу HTTPS, т.е у вас должен быть установлен сертификат или скрипт постоянно будет спрашивать резрешение на запуск.
В сцену вставляем код:
<script>
// Создаем распознаватель
var recognizer = new webkitSpeechRecognition();
// Ставим опцию, чтобы распознавание началось ещё до того, как пользователь закончит говорить
recognizer.interimResults = false;
// Какой язык будем распознавать?
recognizer.lang = 'ru-Ru';
recognizer.onstart = function () {
//После старта
$('#voiceBtn').attr('style', 'position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background: purple;margin-bottom: 10px;animation: pulse;animation-iteration-count: infinite;animation-duration: 1s;');
$('#voiceBtn').attr('class', 'bg-gradient-06-anim-fast');
};
recognizer.onerror = function (event) {
//Если ошибка
};
// Используем колбек для обработки результатов
recognizer.onresult = function (event) {
var result = event.results[event.resultIndex];
if (result.isFinal) {
voiceStr = result[0].transcript.toLowerCase();
//Вот тут ключевое слово маленькими буквами, если ключего слова нет - будет слать все подряд на сервер
keyWords = voiceStr.indexOf('алиса');
if(keyWords != '-1') {
//Часть запросов будем отрабатывать прямо из JS
if(voiceStr.substring(keyWords).toLowerCase() == 'алиса включи музыку') {
startPlayMusic();
} else {
//AJAX на сервер
$.getJSON({
url: '/objects/?script=ИМЯ_СКРИПТА&voice='+encodeURI(voiceStr.substring(keyWords)),
success: function(responce) {
//Возврат от скрипта MJDM
},
error: function(responce) {
alert('Ошибка отправки AJAX');
}
});
}
}
}
};
recognizer.onend = function () {
//По окончании
$('#voiceBtn').attr('style', 'position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background: purple;margin-bottom: 10px;');
$('#voiceBtn').removeAttr('class');
//Если сюда вписать recognizer.start(); будет слушать эфир вечно
};
</script>
Если в коде заменить адрес куда отправлять распознаный текст на:
url: '/command.php?qry='+encodeURI(voiceStr.substring(keyWords)),
то сообщения будут прилетать в системную распозновалку.
Скрипт замутили, теперь кнопка, которая будет вызывать скрипт, внимание! Используются иконки LA Icon или установите или картинку юзайте, кнопка "прилипнет" к нижнему правому углу экрана
<div id="voiceBtn" style="position: fixed;z-index: 99;padding: 15px;border-radius: 50px;bottom: 0px;right: 0px;margin-right: 10px;background: purple;margin-bottom: 10px;" onclick="recognizer.start();">
<i class="las la-microphone" style="font-size: 4rem;color: white;"></i>
</div>
Ну собственно все, теперь создаем скрипт в админке и в $_GET['voice'] будет прилетать текст, далее обрабатывайте как хотите =)
Нижний Новгород, Россия
На форуме: SmoKE_xDDD