Chrome WebSpeech API 返回不允许的错误?

Chrome WebSpeech API returning not-allowed error?

我使用网络语音 API 进行语音转文本。但是当调用 recognition.start() 它向我展示 SpeechRecognitionErrorEvent

recognition = new webkitSpeechRecognition()
recognition.continuous = false
recognition.interimResults = false

recognition.onend = () => console.log("ended")

recognition.onerror = () => console.log("errored")

recognition.start()

正在记录,

errored
ended
SpeechRecognitionErrorEvent {isTrusted: true, error: "not-allowed", message: "", type: "error", target: SpeechRecognition, …}

我在我的 React 项目中尝试过。尝试从 chrome 控制台触发识别器也会导致相同的错误。 其他人,因为我是第一次使用它,所以我不太明白这个错误的原因。在我无法得到明确答案的 Whosebug 中提出了具有相同问题的另一个问题。是不是我必须用ssl证书请求语音api启动方法。否则我无法使用该功能。

更新:
我必须在浏览器中手动启用麦克风权限才能消除此错误。

试试这个:

  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
  const recognition = new SpeechRecognition();

  recognition.start()

郑重声明,如果您在 HTTP 响应中发送 Permissions-Policy header (W3C Working Draft) 并包含字符串 microphone=() 禁用对麦克风的访问。此 header 通常用于防止恶意 third-party 脚本请求麦克风。