Chrome version 60 SpeechRecognition
После версии 60 webkitSpeechRecognition отключен для веб-сайтов без HTTPS.
Это основной вопрос для развития целей в основном. Есть ли способ обойти/отключить эту функцию безопасности?
Проблема заключается в том, что всплывающее окно, которое должно спросить вас, хотите ли вы получить доступ к своему микрофону, никогда не отображается по HTTP, но оно находится на HTTPS.
Настройка HTTPS для DEV непросто, поэтому мне действительно нужен способ обойти это.
Ответы
Ответ 1
Короткий ответ, нет. Вы не можете отключить его.
Но, вы можете разместить его, хотя localhost
в IIS, если у вас есть окна. Там есть учебник о том, как это сделать здесь. После регистрации в IIS вам необходимо добавить некоторые разрешения, чтобы вы могли просматривать их в браузере с помощью localhost
.
Если вы используете Linux, вы можете установить Apache2 и просто поместить его в /var/www/public_html/{websitename}.
. Тогда вы просто получите доступ к нему, хотя браузер через localhost
. Там учебник по установке Apache здесь.
Действительно, должен быть способ включить работу микрофона в браузере при работе с локальными файлами. Как только вы установите localhost
вверх, хотя, это относительно просто для работы.
Ответ 2
Я пробовал это локально и хорошо работал без HTTPS. Он не работает, если файл подается непосредственно из файловой системы, но с помощью статического файлового сервера (я использую python3 -m http.server
) мне удалось заставить его работать.
Надеюсь, что это поможет!
<html>
<head>
<title>Teste</title>
</head>
<body>
<button id="btn">capture</button>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"> </script>
<script>
$(document).ready(function(){
var recognition = new webkitSpeechRecognition();
recognition.onresult = function(event) {
console.log(event)
}
var started = false;
$('#btn').click(function(){
if (started){
recognition.stop();
$(this).html('capture');
started = false;
}
else{
recognition.start();
started = true;
$(this).html('stop');
}
});
})
</script>
</body>
</html>
EDIT: jQuery не требуется. Это просто старая привычка моя: -)
Ответ 3
Почему бы просто не использовать бесплатный https-сертификат (например, letencrypt) на вашем dev-сервере? Я имею в виду это бесплатно сейчас, а затем вы можете развивать более https.