document.writeln('');
当前位置:首页 > 云服务器

如何用Javacript实现语音识别?

游戏科技网2026年09月15日 01:39云服务器50
JavaScript语音识别主要依靠Web Speech API的SpeechRecognition接口,需检测兼容性、处理权限与事件,适合网页实时转文字;不支持Safari,复杂需求需接入云服务或WebAssembly模型。

JavaScript 实现语音识别主要依靠浏览器原生的 Web Speech API,特别是其中的 SpeechRecognition 接口(目前为 Chrome、Edge 等基于 Chromium 的浏览器支持较好,Firefox 有部分支持但需手动启用,Safari 尚未支持)。它无需后端、不依赖第三方 SDK,适合网页端实时语音转文字场景。

检查浏览器兼容性并初始化识别器

不是所有浏览器都支持,使用前必须检测并优雅降级:

  • 用 window.SpeechRecognition || window.webkitSpeechRecognition 判断是否可用
  • 若不可用,提示用户换浏览器或改用其他输入方式
  • 创建实例时建议用 new (window.SpeechRecognition || window.webkitSpeechRecognition)()
  • 设置关键属性:如 recognition.continuous = false(单次识别),recognition.interimResults = true(返回中间结果)

监听识别事件并处理文本结果

语音识别是异步事件驱动的,核心事件有:

  • onstart:麦克风开启,可更新 UI 状态(如显示“正在听…”)
  • onresult:收到识别结果,event.results 是 SpeechRecognitionResultList,每项含多个 SpeechRecognitionAlternative
  • onend:识别结束(可能因超时、出错或用户停止),可在此自动重启识别(设 continuous = true 时需手动调用 recognition.start())
  • .onerror:捕获错误(如 no-speech、aborted、not-allowed),尤其注意权限被拒时要引导用户授权

示例提取最终文本:
const transcript = event.results[0][0].transcript;
const isFinal = event.results[0].isFinal;

baidu-map-jsapi-three

使用 MapV-Three 构建专业的 3D 地图和 GIS 应用 - 基于 Z-up 坐标系的 3D 地图库,支持地图编辑、测量工具、要素绘制、数据管理等地理可视化功能。适用于创建地图编辑器、测量工具、空间数据可视化等 Web-GIS 应用。

下载

请求麦克风权限与用户交互设计

首次调用 recognition.start() 会触发浏览器权限弹窗,但不能提前预判是否被拒绝:

立即学习“Java免费学习笔记(深入)”;

  • 避免自动启动识别,应由用户显式点击按钮触发(符合 Chrome 的 autoplay 和权限策略)
  • 按钮文案建议明确,如“点击说话”,并实时反馈状态(禁用中 / 正在听 / 识别中 / 完成)
  • 权限被拒后,onerror 中的 event.error === not-allowed 可用于提示用户去地址栏手动开启麦克风
  • 移动端需注意:部分 Android 浏览器要求 HTTPS,且某些 WebView 完全不支持

基础可用代码片段(可直接测试)

复制到 HTML 文件中,在 Chrome 中打开即可运行:

1

<button id="speakBtn">点击说话</button><br><div id="output"></div><br><br><script><br>const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;<br>if (!SpeechRecognition) {<br>  document.getElementById(speakBtn).disabled = true;<br>  document.getElementById(output).textContent = 您的浏览器不支持语音识别;<br>} else {<br>  const recognition = new SpeechRecognition();<br>  recognition.interimResults = true;<br>  recognition.lang = zh-CN; // 设为中文<br><br>  recognition.onresult = (event) => {<br>    let interimTranscript = ;<br>    let finalTranscript = ;<br>    for (let i = 0; i < event.results.length; i++) {<br>      const transcript = event.results[i][0].transcript;<br>      if (event.results[i].isFinal) {<br>        finalTranscript += transcript;<br>      } else {<br>        interimTranscript += transcript;<br>      }<br>    }<br>    document.getElementById(output).innerHTML =<br>      `最终:${finalTranscript}<br>暂定:${interimTranscript}`;<br>  };<br><br>  document.getElementById(speakBtn).onclick = () => {<br>    recognition.start();<br>  };<br>}<br></script>

基本上就这些。不复杂但容易忽略权限、兼容性和用户体验细节。如需更稳定或支持离线/多语言/自定义词表,就得接入 WebAssembly 模型(如 Vosk)或调用云服务(阿里云智能语音、百度语音等),那就超出纯 JS 范畴了。

“如何用Javacript实现语音识别?” 的相关文章

5元云服务器:入门级新手首选

5元云服务器:入门级新手首选 我是一名刚毕业的大学生,对编程充满了热情,但现实总是骨感一些。刚踏入职场,我梦想着能独立开发一个网站或应用,却苦于没有足够的资源。买一台实体服务器太贵,租个虚拟空间又觉得门槛太高。直到有一天,我在网上偶然看到“5元云服务器”这个关键词,那一刻,我感觉就像黑暗中看到了一盏小灯——它便宜得几乎让人不敢相信,却可能就是通往梦想的第一步。 那天晚上,我点开了一个云服务网站,输…

实惠低价云服务器f2g评测

实惠低价云服务器f2g评测 实惠低价云服务器F2G评测 随着云计算技术的快速发展,云服务器已经成为企业和个人开发者的重要选择。相比传统的物理服务器,云服务器在灵活性、可扩展性和成本上具有显著优势。然而,对于一些初创企业或个人开发者来说,选择一款性价比高、价格实惠的云服务器尤为重要。本文将对目前市场上较为热门的“实惠低价云服务器F2G”进行深入评测,从性能、稳定性、适用场景等多个维度进行分析,帮助用…

竟然有如此便宜的云服务器?

竟然有如此便宜的云服务器? 那天,我正坐在咖啡馆里,手里拿着笔记本电脑,本来想找个地方测试我的新网站。但我突然意识到,我需要一个稳定的服务器来托管它。过去,我一直以为云服务器至少要几百块钱一个月,结果一番搜索后,我愣住了——竟然有如此便宜的云服务器?有些服务商标价只要几十块钱就能用一个月,这简直是天方夜谭! 回想起来,去年我刚开始创业时,做了一个小型电子商务网站。起初,我用免费的共享主机,但速度慢…

163邮箱怎么发送超大附件_163邮箱上传大文件与发送限制说明

163邮箱怎么发送超大附件_163邮箱上传大文件与发送限制说明

163邮箱超大文件发送有五种方法:一、用内置大附件功能(≤2GB);二、启用云附件服务(单次≤3GB,总容量16GB);三、通过网易网盘共享链接(支持10GB以上);四、本地分卷压缩后逐个添加;五、检查并规避安全拦截机制。 如果您在163邮箱中需要发送体积超过常规限制的文件,但发现直接添加附件失败或提示“文件过大”,则可能是由于163邮箱对普通附件设置了严格上限。以下是针对该问题的多种可行操作路…

163邮箱怎么发送超大附件_163邮箱大文件中转站使用教程

163邮箱怎么发送超大附件_163邮箱大文件中转站使用教程

163邮箱发送超大文件需用大附件、云附件、网易网盘链接或压缩拆分四种方式:大附件支持单个2GB,云附件可设密码与有效期,网盘链接无大小限制,压缩拆分则适配10MB常规上限。 如果您在163邮箱中需要发送超出常规附件限制(如大于10MB)的文件,则系统将无法通过普通“添加附件”方式完成上传。此时需借助163邮箱提供的大文件中转能力,即“大附件”“云附件”或第三方网盘协同机制。以下是具体操作步骤:…

1MB网速等于多少Kbp的带宽换算_宽带兆数与实际下载速度区别

1MB网速等于多少Kbp的带宽换算_宽带兆数与实际下载速度区别

1Mbps宽带实际下载速度理论上限为125KB/s,因1Mbps=1000Kbps=1,000,000bps,除以8得125,000Bps,再除以1000得125KB/s;运营商标称“1M”恒指1Mbps而非1MBps。 如果您看到宽带套餐标注为“1MB”网速,实际可能混淆了单位含义,因为运营商标称的“1M宽带”通常指1Mbps(兆比特每秒),而非1MBps(兆字节每秒)。以下是带宽单位换算与下…