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.