语音识别 Safari

Posted

技术标签:

【中文标题】语音识别 Safari【英文标题】:Speech Recognition Safari 【发布时间】:2021-11-04 00:11:08 【问题描述】:

我已经按照 API 创建了一个语音识别站点:https://wicg.github.io/speech-api/。该网站可在 Chrome 中运行,但不能在 Safari 中运行。

这是有道理的:基于浏览器支持详细信息:https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API/Using_the_Web_Speech_API#browser_support,(语音转文本目前仅限于 Chrome for Desktop 和 android。)

但基于:https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition#browser_compatibility  最后一个链接没有意义,声称有支持。

我很困惑,Safari 是否提供支持?

我从 Safari 得到的错误是:检测到语音识别错误:服务不允许

这个错误是什么意思?

服务不允许

用户代理不允许请求的语音识别服务,要么是因为用户代理不支持它,要么是出于安全、隐私或用户偏好的原因。在这种情况下,它将允许使用另一种更合适的语音识别服务。

https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionErrorEvent/error

我尝试在 Safari 设置和我的计算机设置中明确授予麦克风许可。没用。我不知道如何明确允许 safari 进行语音识别。它应该请求许可,但它没有。

有人对如何继续让语音识别在 Safari 上工作有任何建议吗?

这是代码:


var recognition = new speechRecognition()

var textBox = $("#textbox")

var instructions = $("#instructions")

var cont = ''

recognition.continuous = true

// Recognition started

recognition.onstart = function () 
    instructions.text("Voice recognition is on")


recognition.onspeechend = function () 
    instructions.text("No speech detected")


recognition.onerror = function (event) 
    instructions.text('Speech recognition error detected: ' + event.error)


recognition.onresult = function (event) 
    var current =  event.resultIndex;
    var transcript = event.results[current][0].transcript;

    cont += transcript

    textBox.val(cont)


$("#start-btn").click(function (event) 
    if(cont.length)
        cont += ''
    
    recognition.start()
)``` 

I created this based on this tutorial: https://www.youtube.com/watch?v=rwB6RqqCmXc 

【问题讨论】:

【参考方案1】:

我想通了。对于 Safari,用户需要启用听写才能将语音转文本工作。 详情可以在这里找到:https://bugs.webkit.org/show_bug.cgi?id=225298

【讨论】:

不错的发现。截至 2021 年 10 月,这仍然是必需的。Safari 是 IE? 我确实跳过了所有这些(Siri 启用,允许麦克风到站点)......但我的 http://localhost:8888 仍然给 error: "service-not-allowed" ......对于 Chrome 我怀疑 https://非本地主机需要 。不幸的是,mdn.github.io/web-speech-api/speech-color-changer 在 Safari 上不起作用【参考方案2】:

您确定您在网站上设置了 SSL 证书吗?有时,如果不在安全连接上,浏览器可能会阻止对麦克风的访问。

现在,如果这是一个本地站点,如果没有发布,您可以使用自签名 SSL 证书作为解决方法。

【讨论】:

以上是关于语音识别 Safari的主要内容,如果未能解决你的问题,请参考以下文章

语音识别玩转语音识别 1 语音识别简介

语音识别简述

语音识别技术的环节是啥

什么是自动语音识别功能?

Unity语音识别(百度AI长语句语音识别&Unity原生短语语音识别)

语音识别传统语音识别带权有限转态转换器深度语音识别时序分类CTC解码