我能够在页面加载时启动语音识别:

var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;

recognition.onresult = function(e) {
        for (var i = e.resultIndex; i < e.results.length; ++i) {
            if (e.results[i].isFinal) {
                $scope.data += e.results[i][0].transcript;
            }
        }
    }
// start listening
recognition.start();


我在浏览器中收到一个弹出通知,要求我允许该站点访问我的麦克风。

当我为recognition.start();recognition.stop();创建按钮时,每次按下开始按钮时都会弹出通知。

我想要的是,在页面加载时询问用户是否允许该站点访问他的麦克风,页面会记住他的决定,并且可以启动/停止语音识别,而不会出现其他弹出窗口。
有解决方案吗?

编辑:在Windows上的最新Chrome上进行了测试,但这是一个Cordova项目,最终应在Android / iOS上运行

最佳答案

您需要通过SSL运行/访问您的站点。

另一种方法是在Chrome扩展程序中运行带有语音识别功能的脚本。

Chrome会始终询问何时访问麦克风。

PS:在继续之前,我将在Cordova目标平台上对其进行测试-web语音识别功能可能无法在所有/任何这些平台上使用(也许使用crosswalk ...)

10-08 18:28