详解JS应用程序中如何执行语音识别

本篇文章给大家介绍一下在javascript应用程序中执行语音识别的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

详解JS应用程序中如何执行语音识别

语音识别是计算机科学和计算语言学的一个跨学科子领域。它可以识别口语并将其翻译成文本,它也被称为自动语音识别(ASR),计算机语音识别或语音转文本(STT)。

机器学习(ML)是人工智能(AI)的一种应用,它使系统能够自动学习并从经验中进行改进,而无需进行明确的编程。机器学习在本世纪提供了大多数语音识别方面的突破。如今,语音识别技术无处不在,例如Apple Siri,Amazon Echo和Google Nest。

语音识别以及语音响应(也称为语音合成或文本到语音(TTS))由Web speech API提供支持。

在本文中,我们重点介绍JavaScript应用程序中的语音识别。另一篇文章介绍了语音合成。

语音识别接口

SpeechRecognition 是识别服务的控制器接口,在Chrome中称为 webkitSpeechRecognition。SpeechRecognition 处理从识别服务发送的 SpeechRecognitionEvent。SpeechRecognitionEvent.results 返回一个SpeechRecognitionResultList 对象,该对象表示当前会话的所有语音识别结果。

可以使用以下几行代码来初始化 SpeechRecognition:

// 创建一个SpeechRecognition对象const recognition = new webkitSpeechRecognition();// 配置设置以使每次识别都返回连续结果recognition.continuous = true;// 配置应返回临时结果的设置recognition.interimResults = true;// 正确识别单词或短语时的事件处理程序recognition.onresult = function (event) {  console.log(event.results);};

登录后复制

ognition.start() 开始语音识别,而 ognition.stop() 停止语音识别,它也可以中止( recognition.abort)。

当页面正在访问您的麦克风时,地址栏中将显示一个麦克风图标,以显示该麦克风已打开并且正在运行。

1.png

我们用句子对页面说。“hello comma I’m talking period.” onresult 在我们说话时显示所有临时结果。

2.png

这是此示例的HTML代码:

nbsp;html>              Speech Recognition          window.onload = () => {        const button = document.getElementById('button');        button.addEventListener('click', () => {          if (button.style['animation-name'] === 'flash') {            recognition.stop();            button.style['animation-name'] = 'none';            button.innerText = 'Press to Start';            content.innerText = '';          } else {            button.style['animation-name'] = 'flash';            button.innerText = 'Press to Stop';            recognition.start();          }        });        const content = document.getElementById('content');        const recognition = new webkitSpeechRecognition();        recognition.continuous = true;        recognition.interimResults = true;        recognition.onresult = function (event) {          let result = '';          for (let i = event.resultIndex; i < event.results.length; i++) {            result += event.results[i][0].transcript;          }          content.innerText = result;        };      };              button {        background: yellow;        animation-name: none;        animation-duration: 3s;        animation-iteration-count: infinite;      }      @keyframes flash {        0% {          background: red;        }        50% {          background: green;        }      }                
  

登录后复制

第25行创建了 SpeechRecognition 对象,第26和27行配置了 SpeechRecognition 对象。

当一个单词或短语被正确识别时,第28-34行设置一个事件处理程序。

第19行开始语音识别,第12行停止语音识别。

在第12行,单击该按钮后,它可能仍会打印出一些消息。这是因为 Recognition.stop() 尝试返回到目前为止捕获的SpeechRecognitionResult。如果您希望它完全停止,请改用 ognition.abort()。

您会看到动画按钮的代码(第38-51行)比语音识别代码长。这是该示例的视频剪辑:https://youtu.be/5V3bb5YOnj0

3.gif

以下是浏览器兼容性表:

4.png

网络语音识别依赖于浏览器自己的语音识别引擎。在Chrome中,此引擎在云中执行识别。因此,它仅可在线运行。

语音识别库

有一些开源语音识别库,以下是基于npm趋势的这些库的列表:

1. Annyang

Annyang是一个JavaScript语音识别库,用于通过语音命令控制网站。它建立在SpeechRecognition Web API之上。在下一节中,我们将举例说明annyang的工作原理。

2. artyom.js

artyom.js是一个JavaScript语音识别和语音合成库。它建立在Web语音API的基础上,除语音命令外,它还提供语音响应。

3. Mumble

Mumble是一个JavaScript语音识别库,用于通过语音命令控制网站。它建立在SpeechRecognition Web API之上,这类似于annyang的工作方式。

4. julius.js

Julius是面向语音相关研究人员和开发人员的高性能,占用空间小的大词汇量连续语音识别(LVCSR)解码器软件。它可以在从微型计算机到云服务器的各种计算机和设备上执行实时解码。Julis是使用C语言构建的,而julius.js是Julius自以为是JavaScript的移植版。

5.voice-commands.js

voice-commands.js是一个JavaScript语音识别库,用于通过语音命令控制网站。它建立在SpeechRecognition Web API之上,这类似于annyang的工作方式。

Annyang

Annyang初始化一个 SpeechRecognition 对象,该对象定义如下:

var SpeechRecognition = root.SpeechRecognition ||                                                             root.webkitSpeechRecognition ||                                                  root.mozSpeechRecognition ||                                                  root.msSpeechRecognition ||                                                  root.oSpeechRecognition;

登录后复制

有一些API可以启动或停止annyang:

annyang.start:使用选项(自动重启,连续或暂停)开始监听,例如 annyang.start({autoRestart:true,Continuous:false})。annyang.abort:停止收听(停止SpeechRecognition引擎或关闭麦克风)。annyang.pause:停止收听(无需停止SpeechRecognition引擎或关闭麦克风)。annyang.resume:开始收听时不带任何选项。

这是此示例的HTML代码:

nbsp;html>              Annyang              window.onload = () => {        const button = document.getElementById('button');        button.addEventListener('click', () => {          if (button.style['animation-name'] === 'flash') {            annyang.pause();            button.style['animation-name'] = 'none';            button.innerText = 'Press to Start';            content.innerText = '';          } else {            button.style['animation-name'] = 'flash';            button.innerText = 'Press to Stop';            annyang.start();          }        });        const content = document.getElementById('content');        const commands = {          hello: () => {            content.innerText = 'You said hello.';          },          'hi *splats': (name) => {            content.innerText = `You greeted to ${name}.`;          },          'Today is :day': (day) => {            content.innerText = `You said ${day}.`;          },          '(red) (green) (blue)': () => {            content.innerText = 'You said a primary color name.';          },        };        annyang.addCommands(commands);      };              button {        background: yellow;        animation-name: none;        animation-duration: 3s;        animation-iteration-count: infinite;      }      @keyframes flash {        0% {          background: red;        }        50% {          background: green;        }      }                
  

登录后复制

第7行添加了annyang源代码。

第20行启动annyang,第13行暂停annyang。

Annyang提供语音命令来控制网页(第26-42行)。

第27行是一个简单的命令。如果用户打招呼,页面将回复“您说‘你好’。”

第30行是带有 splats 的命令,该命令会贪婪地捕获命令末尾的多词文本。如果您说“hi,爱丽丝e”,它的回答是“您向爱丽丝致意。”如果您说“嗨,爱丽丝和约翰”,它的回答是“您向爱丽丝和约翰打招呼。”

第33行是一个带有命名变量的命令。一周的日期被捕获为 day,在响应中被呼出。

第36行是带有可选单词的命令。如果您说“黄色”,则将其忽略。如果您提到任何一种原色,则会以“您说的是原色名称”作为响应。

从第26行到第39行定义的所有命令都在第41行添加到annyang中。

… …

结束

我们已经了解了JavaScript应用程序中的语音识别,Chrome对Web语音API提供了最好的支持。我们所有的示例都是在Chrome浏览器上实现和测试的。

在探索Web语音API时,这里有一些提示:如果您不想在日常生活中倾听,请记住关闭语音识别应用程序。

更多编程相关知识,请访问:编程视频!!

以上就是详解JS应用程序中如何执行语音识别的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2712902.html

(0)
上一篇 2025年3月7日 21:18:47
下一篇 2025年3月2日 21:01:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 一份window.location的备忘单,助你更好理解决地址路径问题!!

    本篇文章分享一份window.location的备忘单,助你更好理解决地址路径问题!!有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 如果你想获取站点的URL信息,那么window.location对象什么很适合你! 使用…

    2025年3月7日
    200
  • 聊聊JavaScript中eval()函数的用法

    本篇文章给大家介绍一下javascript中eval()函数的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 1. eval函数有什么用? 调用eval函数,可以将其参数作为javascript程序进行解释。换句话说…

    2025年3月7日
    200
  • 浅谈JavaScript中的事件委托

    本篇文章给大家介绍一下javascript中的事件委托。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 事件委托 利用事件冒泡,指定一个事件处理程序,管理一系列的所有事件事件委托利用DOM元素的事件冒泡,把子元素的相关事件…

    2025年3月7日 编程技术
    200
  • JavaScript中如何更好地使用数组

    本篇文章给大家介绍一下如何在 javascript 中更好地使用数组。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 本文短小精悍,我保证。在过去的数个月里,我注意到在我审阅的 pull request 中有四个(关于数组…

    2025年3月7日
    200
  • 10个让你效率更高的Math对象方法,快来收藏吧!

    本篇文章给大家介绍一下能让你事半功倍的10个math对象方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 JavaScript中的math 对让我们能够对执行一些数学操作。 它具有数学常数和函数的属性和方法。 在今天的…

    2025年3月7日
    200
  • js怎么替换html标签

    在js中,可以利用replace()函数配合正则表达式“//g”来替换html标签,语法格式“stringObject.replace(//g,”)”。replace()可以替换一个与正则表达式匹配的子串。 本教程操作环境:wi…

    2025年3月7日
    200
  • 深入解析JavaScript中的作用域

    本篇文章带大家深入理解javascript作用域。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 这篇文章称为笔记更为合适一些,内容来源于 《你不知道的JavaScript(上卷)》第一部分 作用域和闭包。讲的很不错,非常…

    2025年3月7日
    200
  • 分享12个提升程序员软技能与效率的开发工具

    本篇文章给大家推荐12个提升程序员软技能与效率的开发工具。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 大家好,我是你们的 猫哥,那个不喜欢吃鱼、又不喜欢喵 的超级猫 ~ 这一期的内容有点不一般哦,先来几个在线绘图类的工…

    2025年3月7日 编程技术
    200
  • Math.max()不带参数会返回什么?为什么?

    本篇文章给大家介绍一下math.max()不带参数会返回什么?为什么?有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 Math.max() 是 JS 内置的方法,可以从传入的参数中,返回最大的一个。例如: Math.max…

    2025年3月7日
    200
  • 手把手教你理解JS中的执行上下文

    本篇文章一步步带你深入理解javascript中的执行上下文。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 只有理解了执行上下文,才能更好地理解 JavaScript 语言本身,比如变量提升,作用域,闭包等 执行上下文 …

    2025年3月7日
    200

发表回复

登录后才能评论