HTML5 Web Speech API 本地无法正常工作。

5

我正在尝试使这段代码工作,但不知道为什么本地无法正常运行。我在CodePen.io上尝试了相同的代码,它可以正常工作。

<html>
<head>
    <title>Voice API</title>

</head>

<body>
    <button onClick="func()">Click Me</button>
    <script>
        function func()
        {
            alert('Hello');
            var recognition = new webkitSpeechRecognition();
            recognition.continuous = true;
            recognition.interimResults = true;
            recognition.onresult = function(event) 
            { 
                alert(event.results[0][0].transcript); 
            }
            recognition.start();
        }
    </script>
</body>

有什么建议吗?
2个回答

9
您可以尝试添加以下代码片段,以查看生成的错误信息。
recognition.onerror = function(event) {
    console.log(event.error);
};

很可能它会输出一个“不允许”的错误,这通常意味着用户代理不允许任何语音输入出于安全、隐私或用户偏好的原因(因为你是通过 file:// 在本地运行它)。
你尝试过在本地Web服务器上提供页面,比如(IIS或Node)吗?

是的。结果显示为“不允许”。我使用了本地WAMP服务器,它可以工作。 - Samarth Agarwal
你在结尾处多了一个括号。 - sw.
服务器必须使用https,本地必须使用localhost而不是https://+localhost。请检查您的麦克风是否出现“not-allowed”的情况。 - Nikola Lukic
1
我的程序在本地可以正常工作,但是部署到AWS EC2后,麦克风不再工作,显示speechRecognitionError - error: not allowed。对于弹出窗口,我将其切换回“询问是否允许访问您的麦克风”。然后,当我再次点击说话时,它会将麦克风设置切换回“继续阻止麦克风访问”。 - user3871
@Growler:尝试在AWS上使用SSL证书,它就可以工作了。默认情况下,它是http协议。您需要配置https协议。 - Sourabh Jain
@sw,如果你看到类似这样的内容(我认为这是一个打字错误),你可以进行编辑以改善答案。 - jcubic

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接