基于Web Speech API给AI语言模型加上语音功能,距离MOSS又近了一步

简介: 基于Web Speech API给AI语言模型加上语音功能,距离MOSS又近了一步

前言

前段时间我把微信小号接入了AI语言模型,同事们直呼过瘾,每天在群里聊得风生水起

这不前段时间看了《流浪地球2》,在感叹国产科幻片如此优秀的同时,心中萌生出了一个想法,我是不是也能把语音技术结合到AI语言模型中,做个语音对话机器人玩玩?

说干就干,参照之前的文章,我们使用nodejs实现了AI语言模型接口,现在只需在前端页面中实现语音识别以及语音合成就行了

起步

说到语音功能,浏览器已经提供了对应的Web Speech API,其中有两个对象,分别是

  • webkitSpeechRecognition:语音识别对象
  • speechSynthesis:语音合成对象

借助这两个对象,我们可以调用麦克风和扬声器,对浏览器进行交互

下面是一个简单的流程,用户使用webkitSpeechRecognition中的函数进行语音识别,将字符发送到之前做的接口中,AI模块调用openai换取AI模型输出结果,返回到浏览器,浏览器通过speechSynthesis合成音效,完成一个对话周期

实现过程

webkitSpeechRecognition

      // 创建语音识别对象
      const recognition = new webkitSpeechRecognition();
      // 语音设置成中文
      recognition.lang = "zh-CN";
      // 开始识别
      recognition.start();
      // 当识别到语音时触发事件
      recognition.addEventListener("result", (event) => {
        console.log(event.results);
      });

使用上述代码后,页面中会弹出权限请求,点击允许

然后我们直接说话就会有识别结果(需要挂vpn

如果打开了麦克风,但是说话没有反应的,大概率是因为识别服务没请求到,需要挂vpn

此外, webkitSpeechRecognition类还有以下常用配置:

recognition.continuous = true 持续识别,直到调用stop,默认为false,识别一次就会自动关闭

recognition.interimResults = true 识别时是否打断并更新结果,默认为false,设置为true时会有如下效果

speechSynthesis

接下来看看语音合成

      const speakText = new SpeechSynthesisUtterance("hello world");
      speechSynthesis.speak(speakText);

在控制台输入以下代码,即可合成hellow world的语音效果

小例子

了解了上述用法,我们可以在浏览器上实现模仿自己说话的功能,代码如下

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>ASR-Node</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      #app {
        width: 1000px;
        margin: 100px auto 0;
        text-align: center;
      }
      h3 {
        margin-bottom: 20px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <h3>ASR-Bot</h3>
      <main>
        <span>发送:</span>
        <span id="send_msg"></span>
        <br />
        <span>接收:</span>
        <span id="rec_msg"></span>
      </main>
    </div>
    <script type="module">
      const speak = (str) => {
        rec_msg.textContent = str;
        const speakText = new SpeechSynthesisUtterance(str); // 转换字符
        speechSynthesis.speak(speakText); // 语音合成
      };
      const listen = () => {
        // 创建语音识别对象
        const recognition = new webkitSpeechRecognition();
        // 语音设置成中文
        recognition.lang = "zh-CN";
        // 当识别到语音时触发事件
        recognition.addEventListener("result", (event) => {
          const { results } = event;
          console.log(results);
          const len = results.length;
          const { transcript } = results[len - 1][0];
          send_msg.textContent = transcript;
          speak(transcript);
        });
        return recognition;
      };
 
      // 开始识别
      listen().start();
    </script>
  </body>
</html>

虽然放不了声音,但是效果还是很直观的:


遇到的问题

虽然在识别时使用了continuous:true属性。webkitSpeechRecognition仍然会超时自动关闭。解决方式是在其end事件钩子中执行重新识别的操作

效果展示

总结

本文带领各位认识了Web Speech API的两个对象以及常用的函数,实现了一个模仿自己说话的案例,并接入最近比较火的AI模型,以实现一个类似小爱同学的语音助手的语音对话功能。

最后,感谢你的阅读,如果文章对你有帮助,还希望支持一下作者。

在这里我也抛砖引玉,期待看到大家的进阶玩法


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
7月前
|
人工智能 安全 架构师
告别旅行规划的"需求文档地狱"!这个AI提示词库,让你像调API一样定制完美旅程
作为开发者,旅行规划如同“需求地狱”:信息碎片、需求多变、缺乏测试。本文提出一套“企业级”AI提示词库,将模糊需求转化为结构化“API请求”,实现标准化输入输出,让AI成为你的专属旅行架构师,30分钟生成专业定制方案,提升决策质量,降低90%时间成本。
753 129
|
9月前
|
人工智能 供应链 安全
AI驱动攻防升级,API安全走到关键档口
在AI与数字化转型加速背景下,API已成为企业连接内外业务的核心枢纽,但其面临的安全威胁也日益严峻。瑞数信息发布的《API安全趋势报告》指出,2024年API攻击流量同比增长162%,占所有网络攻击的78%。攻击呈现规模化、智能化、链式扩散等新特征,传统防护手段已难应对。报告建议企业构建覆盖API全生命周期的安全体系,强化资产梳理、访问控制、LLM防护、供应链管控等七大能力,提升动态防御水平,保障AI时代下的业务安全与稳定。
308 0
|
6月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
2345 18
构建AI智能体:一、初识AI大模型与API调用
|
9月前
|
人工智能 自然语言处理 算法
AI与API结合:自动解析商品描述+情感分析评论数据
AI与API深度融合正在重塑电商运营模式。通过自动解析商品描述、分析评论情感,企业可实现信息标准化、用户画像精准化及运营决策自动化。本文从技术架构、核心算法、实战案例三方面,详解AI如何驱动电商智能化升级。
|
9月前
|
人工智能 自然语言处理 API
AI与Web3.0时代:API如何定义下一代企业数据交互?
简介: 2025年,API作为企业数据交互的“通用语言”,正推动各行各业的智能化与自动化变革。从技术架构到商业价值,CTO如何把握API浪潮,构建开放生态、提升安全合规、驱动业务增长?本文深入探讨API的战略意义与实战策略,助力企业抢占未来竞争制高点。
|
9月前
|
人工智能 算法 搜索推荐
电商API的“AI革命”:全球万亿市场如何被算法重新定义?
AI+电商API正引领智能商业变革,通过智能推荐、动态定价与自动化运营三大核心场景,大幅提升转化率、利润率与用户体验。2025年,75%电商API将具备个性化能力,90%业务实现智能决策,AI与API的深度融合将成为未来电商竞争的关键基石。
|
7月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
6077 2
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
8月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
896 64
|
7月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
883 11
|
7月前
|
人工智能 API
阿里云百炼API-KEY在哪查询?如何获取阿里云AI百炼大模型的API-KEY?
阿里云百炼是阿里云推出的AI大模型平台,用户可通过其管理控制台获取API-KEY。需先开通百炼平台及大模型服务,即可创建并复制API-KEY。目前平台提供千万tokens免费额度,详细操作流程可参考官方指引。

热门文章

最新文章