如何使用 Web Speech API 在浏览器中识别语音

Web Speech API有两个功能:语音合成(文本到语音)和语音识别(语音到文本)。在上一篇文章中,我解释了语音合成,但这次SpeechRecognition我将解释使用 API 的浏览器的语音识别和语音转录的方法。

识别用户发出的语音命令,可以提供比平时更沉浸的界面,更容易获得喜欢语音操作的用户。根据谷歌 2018 年的一份报告,全球 27% 的在线人口在移动设备上使用语音搜索。通过使用这次解释的浏览器的语音识别功能,您可以在您的 Web 应用程序中提供从基本语音搜索到交互式机器人的广泛功能。

让我们从下一节了解 API 的工作原理,看看您可以做什么。

必要的东西

准备以下工具来创建一个示例应用程序,让您可以实际体验 API。

  • 谷歌浏览器
  • 文本编辑器


这次我们将使用 HTML、CSS 和 JavaScript 创建一个应用程序。创建一个新的工作目录并将起始 HTML和CSS保存在此目录中。当您在浏览器中打开保存的 HTML 文件时,您将看到与以下屏幕截图相同的屏幕。

语音到文本示例应用程序

让我们从下一节中了解如何在浏览器中听到和识别音频。

语音识别API

在向示例应用程序添加语音识别功能之前,让我们使用浏览器提供的开发人员工具检查可用性。打开 Chrome 开发者工具并在控制台中输入以下代码。

speechRecognition = new webkitSpeechRecognition(); 
speechRecognition.onresult = console.log; 
speechRecognition.start();

当您运行此代码时,Chrome 会请求使用麦克风的权限。如果您在 Web 服务器上托管页面,请记住您在浏览器中的权限。允许使用麦克风并说话。当您结束对话时,它将SpeechRecognitionEvent被记录在控制台上。

这只是三行代码,但它做了很多工作。首先,SpeechRecognition创建 API 的一个实例(在开头添加供应商名称“webkit”)并告诉该实例记录您从语音识别服务收到的所有结果。最后,我们指导您开始聆听和识别。

此外,此实例也反映了标准设置。例如,当一个对象收到一个结果时,它就会停止监听。start您必须再次调用该方法才能继续转录。此外,您只会收到语音识别服务的最终结果。为此,您还可以启用连续语音识别并在通话时输出识别结果。设置方法将在后面解释。

SpeechRecognitionEvent让我们检查输出到控制台的内容。最重要的属性是results。这是SpeechRecognitionResult包含的列表。在这个屏幕截图中,我在停止听之前只说了一个词,所以我只看到一个结果对象。此对象SpeechRecognitionAlternative包含一个包含更多内容的列表。在 SpeechRecgnitionAlternative 中包含的列表的顶部,显示语音识别的转录结果和可靠性(0 到 1)。默认情况下,只显示一个结果,但您可以将其配置为从语音识别服务接收更多结果。如果您希望用户选择与口语最相似的结果,这将非常有用。

Chrome 开发者工具

这个怎么运作

在浏览器中调用此功能语音识别是不准确的。Chrome 现在获取音频并将其发送到 Google 的服务器以转换为文本。为此,Chrome 和一些基于 Chromium 的浏览器目前仅支持语音识别。

Mozilla 已经在 Firefox 中内置了语音识别支持。此功能仅当您在 Firefox Nightly 版本中启用该标志时才可用,因为我们正在协商使用 Google Cloud Speech API。Mozilla 正在开发自己的DeepSpeech 引擎,但由于专注于浏览器支持,我们决定也以这种方式使用 Google 的服务。

语音识别使用服务器端 API,因此用户必须在在线环境中使用该 API。离线本地语音识别将很快发布,但目前有限。

使用您之前下载的入门代码和开发工具代码创建一个小应用程序,让我们实时识别用户的声音。

Web 应用程序中的语音识别

打开您之前下载的 HTML<script>并在底部的标记之间执行该过程。首先DOMContentLoaded侦听事件并获取对要使用的 HTML 元素的引用。

<script> window.addEventListener("DOMContentLoaded", () => { const button = document.getElementById("button"); const result = document.getElementById("result"); const main = document.getElementsByTagName("main")[0]; }); 
</script>

检查浏览器是否支持SpeechRecognitionwebkitSpeechRecognition支持该对象,如果不支持则显示无法继续的消息。

<script> window.addEventListener("DOMContentLoaded", () => { const button = document.getElementById("button"); const result = document.getElementById("result"); const main = document.getElementsByTagName("main")[0]; const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition if (typeof SpeechRecognition === "undefined") { button.remove(); const message = document.getElementById("message"); message.removeAttribute("hidden"); message.setAttribute("aria-hidden", "false"); } else { // good stuff to come here } 
}); 
</script>

SpeechRecognition如果您可以访问,请准备使用。定义一个变量,指示您是否正在识别语音并创建语音识别对象的实例。此外,我们定义了启动、停止和响应新结果的三个函数。

} else { let listening = false; const recognition = new SpeechRecognition(); const start = () => {}; const stop = () => {}; const onResult = event => {}; 
}

start 函数启动语音识别并更改按钮文本。此外,向主元素添加一个类并启动一个动画,显示页面正在侦听。停止功能则相反。

const start = () => { recognition.start(); button.textContent = "Stop listening"; main.classList.add("speaking"); 
}; 
const stop = () => { recognition.stop(); button.textContent = "Start listening"; main.classList.remove("speaking"); 
};

然后,当它收到语音识别的结果时,它会在页面上呈现所有结果。在此示例中,我们将执行直接 DOM 操作并将前面描述的SpeechRecognitionResult对象<div>添加为一个段落以显示结果。在标记为 final 的结果中添加 CSS 类,以显示最终结果和中间结果之间的差异。

const onResult = event => { result.innerHTML = ""; for (const res of event.results) { const text = document.createTextNode(res[0].transcript); const p = document.createElement("p"); if (res.isFinal) { p.classList.add("final"); } p.appendChild(text); result.appendChild(p); } };

在开始语音识别之前,应用此应用程序使用的设置。在这个版本中,当检测到语音结束时,它不会结束并始终记录结果。也就是说,转录结果始终显示在页面上,直到按下停止按钮。此外,将其设置为在您说话时显示中间结果(就像在 Twilio 中使用<Gather>和partialResultCallback在语音通话期间始终能够识别您的声音一样)。并添加一个结果监听器。

    const onResult = event => {// onResult code} recognition.continuous = true; recognition.interimResults = true; recognition.addEventListener("result", onResult); 
}

最后,向按钮添加一个侦听器,以便您可以启动和停止语音识别。

    const onResult = event => { // onResult code } recognition.continuous = true; recognition.interimResults = true; recognition.addEventListener("result", onResult); button.addEventListener("click", () => { listening ? stop() : start(); listening = !listening; }); 
}

请重新加载浏览器并尝试操作。

用于语音识别的示例应用程序

阅读几句话并确保它们出现在页面上。这种语音识别虽然有很高的单词识别能力,但在标点符号方面并不是很擅长。例如,如果您想将其用于听写,则需要多做一点开发。

与您的浏览器交谈

在这篇文章中,我解释了浏览器的语音识别。另外,在上一篇文章中,我介绍了如何设置浏览器的阅读功能。如果您将这些步骤与使用 Twilio Autopilot 的助手结合起来,您将能够构建有趣的项目。

如果您想试用本文中的示例,可以在Glitch 中查看它们。如果您需要源代码,可以从GitHub 上的网络助手存储库中获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68661.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用windows自带的语音引擎在客户端朗读一段文本

背景&#xff1a;之前公司有特殊要求&#xff0c;需要在特殊的环境下进行语音播报&#xff0c;且是物理隔离的内网状态&#xff0c;大家懂的。 环境&#xff1a;Windows 7 、IE系列 1. 先在网上看了一下前辈们的文章&#xff0c;发现还是有解决方案的&#xff0c;例如这个 使用…

占领手机,银行App的隐秘战事

作者 | 辰纹 来源 | 洞见新研社 十几年前&#xff0c;银行用各类卡片塞满我们的钱包&#xff1b;如今&#xff0c;银行用各种App塞满我们的手机。 说出来可能很多人还不相信&#xff0c;民商智慧《2019银行业电子银行场景营销分析报告》就提到&#xff0c;在2019年3月时&…

ADAS“中国战事”升级

尽管全球汽车产业面临严重的缺芯困境&#xff0c;但汽车智能化&#xff0c;尤其是辅助驾驶的新车搭载量、渗透率仍处于持续上升通道。 高工智能汽车研究院监测数据显示&#xff0c;今年1-6月国内新车&#xff08;合资自主&#xff09;搭载前向ADAS&#xff08;L0-L2&#xff0…

中国数据库产业的“高地战事”

作者 | Aholiab 出品 | CSDN(ID&#xff1a;CSDNnews&#xff09; 随着5G技术的飞速发展&#xff0c;海量数据的持续激增&#xff0c;大数据时代数据库行业也迎来了快速增长。 作为大数据存储、处理、分析的关键系统&#xff0c;基础软件核心之一&#xff0c;数据库对推动中国互…

python数据挖掘电影评分分析_豆瓣电影数据与票房数据分析

写在前面 在上次观看了比利.林恩的中场战事之后,开始进入了豆瓣的电影世界,对于一个新用户来说,特别喜欢豆瓣电影的影评,对于所看过的留下深刻印象的电影都在豆瓣上搜了一边,同一部电影,希望能看到与自己感受不同的观点,因为每一位观众都有着不一样的人生轨迹,看待事物…

百度的春晚战事

“我们对春晚一无所知。” 罗振宇曾在跨年演讲上如是说。 无论悲喜&#xff0c;反正每个中国人都为春晚辟出了一块“专属记忆”。而从2015年开始&#xff0c;中国人的春晚记忆里被点上了一颗“红痣”。那就是——总有一家顶尖互联网公司面带羞赧地走上舞台&#xff0c;给十几…

知云文献翻译打不开_英文PDF文献翻译神器-知云文献翻译

在经历了之前推荐的通天塔文献翻译网站次数使用完毕&#xff0c;冲会员才能继续使用&#xff1b;谷歌PDF翻译无法使用&#xff1b;谷歌文字翻译要自己手动删空格&#xff0c;还要受5000字符数&#xff08;注意&#xff0c;是字符数不是字数&#xff09;限制的折磨之后&#xff…

知云文献翻译打不开_只推荐这两款翻译软件!

上传文档、复制到网页等等&#xff0c;都是渣渣&#xff01;难道就没有一边看一边就自动翻译的软件&#xff1f;有&#xff01;有的&#xff01;还不止一款&#xff01;诚意推荐给你&#xff01; 截止2020年&#xff0c;因为学业需要&#xff0c;本人每天都需要阅读外文&#x…

知云文献翻译打不开_有了这几个软件,轻松读懂英文文献

科研路上&#xff0c;大家伙儿难免绕不开的结就是——阅读英文文献。 然而&#xff0c;当你问大神用的什么翻译软件时&#xff1f;大神会分分种藐视你&#xff0c;人家偶尔查个单词跟你要查整篇文章完全是两个概念&#xff0c;咱们跟大神面对的是不同的问题&#xff0c;这也是为…

文献工具 Citavi+知云翻译

1、B站一位UP主分享的Citavi知云翻译的高效管理阅读文献的方法&#xff1a; https://www.bilibili.com/video/BV1Zt4y117XX/ 其中如何在tools中显示 经实验发现&#xff0c;是需要修改自己电脑上PDF的默认打开方式的&#xff0c;这个操作也特别简单 随便找一个PDF文件&#xf…

知云文献翻译打不开_一款好用的文献英中翻译软件

“ 知云文献翻译 ” 软件是我用过的一款比较好用的文献翻译软件。操作简单&#xff0c;只需要将文献 PDF 在这个软件中打开&#xff0c;第一次登录时点击右侧“重新登录”&#xff0c;用微信扫码登录即可。左键选中 PDF 中没有看懂的单词、句子、甚至是段落&#xff0c;该软件右…

知云文献翻译跨页内容选中翻译操作

知云文献翻译阅读软件跨页内容选中翻译操作 跨页内容选中翻译。 很多PDF段落分布在两个页面&#xff0c;划选容易将中间的页眉等杂乱文字选中。6.6版本开始支持跨页内容选中翻译。 方法是&#xff1a; 先选中前面部分的文字&#xff0c;然后按住Alt键选中后面的文字部分。 …

知云文献翻译免费下载——研究生必备!

还记得之前我介绍了一个超全的文献下载网站——文献小镇&#xff0c;然后和朋友聊天的时候就想到了一个问题&#xff1a;下载下来的文献是全英文的&#xff0c;看不懂啊&#xff01; 于是我茅塞顿开&#xff0c;觉得还应该给大家介绍一个英文文献翻译的神器——知云文献翻译&a…

知云文献翻译——选中内容后不能翻译了,解决办法

划选文字&#xff0c;右侧无反应 故障描述 一般情况下使用文本工具选中左侧打开的pdf文件上的一段话或一句话或双击一个单词&#xff0c;右侧会自动跳转到二维码登陆界面或直接显示翻译结果。但某些用户选中文字后右侧没有任何反应。 排查流程 1、看看软件左上方版本号是否是…

知云文献翻译-选定内容后无法翻译

1.查看软件左上方版本号是否为最新版&#xff0c;如果不是就升级。 如果您没有上图所示的更新程序选项&#xff0c;说明是比较老的版本&#xff0c;您就自己到 https://www.yuque.com/xtranslator/zy/gga6xa 下载最新版安装版本安装。今后如果升级就直接点击"其他功能&quo…

在Endnote使用知云翻译阅读文献

下载知云翻译后&#xff0c;将pdf的打开方式改成知云文献翻译&#xff0c;右键pdf文件&#xff0c;打开属性&#xff0c;更改打开方式。 可能会遇到你在知云文献标记的pdf文件不能保存&#xff0c;即pdf是只读模式&#xff0c;可以这样设置&#xff0c;找到My EndNote Library…

外文文献看不懂——知云文献翻译神器送给你

外文文献翻译神器——知云翻译 1. 两种下载方式 1.1 下载连接&#xff1a;www.ZhiYunWenXian.cn 1.2 微信公众号&#xff1a;知云文献阅读 2. 安装方式 就按提示装就好了。 3. 界面介绍 看看界面的一些基础功能能否满足你的需要。 &#xff08;1&#xff09;主界面 &…

知云文献翻译

前言 推荐一款翻译软件&#xff0c;做外文翻译也很方便。 直接在电脑浏览器地址栏输入下面网址&#xff0c;软件现在有win版&#xff08;支持win7-win10&#xff0c;不支持xp&#xff09;。Mac版支持到目前最新版macOS11。 https://www.zhiyunwenxian.cn 或者关注知云文献…

好用的翻译软件---知云文献翻译

对于搞技术的人来说&#xff0c;英语是逃不过去的一关&#xff0c;但是有的人英语底子弱一点&#xff0c;在开发的过程中如果需要看英文文档的时候&#xff0c;是非常痛苦的。特别是好多词汇是准用词汇&#xff0c;如果直接用翻译软件翻译的话&#xff0c;翻译出来的往往都是驴…

知云文献翻的一些使用

1、如何移动知云文献翻译的批注呢&#xff1f; 把鼠标光标放在小方框上按住鼠标左键不要松手&#xff0c;光标会变成一个小十字&#xff0c;然后可以随意拖动&#xff0c;拖动过程中不要松手。 2、生化环材方面的文献&#xff0c;我认为翻译引擎选择谷歌智能云和谷歌生物医学更…