位置: IT常识 - 正文

基于Web Speech API给ChatGPT加上语音功能,距离MOSS又近了一步(基于网络创新形成的大数据的最突出特征是什么?( ))

编辑:rootadmin
基于Web Speech API给ChatGPT加上语音功能,距离MOSS又近了一步

目录

前言

起步

实现过程

webkitSpeechRecognition

speechSynthesis

小例子

遇到的问题

效果展示

总结


前言

推荐整理分享基于Web Speech API给ChatGPT加上语音功能,距离MOSS又近了一步(基于网络创新形成的大数据的最突出特征是什么?( )),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:基于重大误解实施的民事法律行为,基于网页的客服系统,基于网页的客服系统,基于网络创新形成的大数据的最突出特征是什么?( ),基于中国国情的中国式现代化具有哪些特色,基于网页的客服系统,基于核心素养下的大单元教学设计,基于专业性的家校双向互动,需要家长的学校教育参与,内容如对您有帮助,希望把文章链接给更多的朋友!

去年写了两篇关于接入ChatGPT的文章:微信接入ChatGPT,使用Node+ChatGPT+Wechaty做一个微信机器人_DieHunter1024的博客-CSDN博客

站在巨人的肩膀上,用Node+ChatGPT模块实现一个接口_DieHunter1024的博客-CSDN博客

我自己也把微信小号接入了ChatGPT,同事们直呼过瘾,每天在群里聊得风生水起

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

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

起步

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

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

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

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

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

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

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

基于Web Speech API给ChatGPT加上语音功能,距离MOSS又近了一步(基于网络创新形成的大数据的最突出特征是什么?( ))

如果打开了麦克风,但是说话没有反应的,大概率是因为识别服务没请求到,需要挂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>ChatGPT-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>

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

实现完毕后,我们就可以在语音识别完成和语音合成之前这两个节点对接ChatGPT接口(代码比较多,就不贴出来了,有兴趣可以直接下载源码)

遇到的问题

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

效果展示

总结

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

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

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

源码:chatGPT-ASR: ChatGPT接入语音识别与合成的功能

本文链接地址:https://www.jiuchutong.com/zhishi/298601.html 转载请保留说明!

上一篇:【深度估计】单目深度估计(深度计算公式)

下一篇:何为 Vue3 组件标注 TS 类型,看这篇文章就够了!(vue组件标签)

  • 荣耀分屏怎样打开(荣耀分屏怎么调大小)

    荣耀分屏怎样打开(荣耀分屏怎么调大小)

  • 在表格里怎么在一行里打两行字(在表格里怎么在多行字中加入括号)

    在表格里怎么在一行里打两行字(在表格里怎么在多行字中加入括号)

  • vivo NEX 3s的屏幕多大(vivonex3s的屏幕分辨率是多少)

    vivo NEX 3s的屏幕多大(vivonex3s的屏幕分辨率是多少)

  • 华为手机微博开启相机权限在哪设置(华为手机微博通知提醒怎么设置)

    华为手机微博开启相机权限在哪设置(华为手机微博通知提醒怎么设置)

  • 魅族17防水防尘等级(魅族18pro防尘防水)

    魅族17防水防尘等级(魅族18pro防尘防水)

  • oled屏幕氧化变紫(oled屏幕变色现象)

    oled屏幕氧化变紫(oled屏幕变色现象)

  • 抖音开通小店后怎么上传商品(抖音开通小店后怎么开通橱窗)

    抖音开通小店后怎么上传商品(抖音开通小店后怎么开通橱窗)

  • 照片mb和kb是什么意思(照片中mb和kb哪个大)

    照片mb和kb是什么意思(照片中mb和kb哪个大)

  • 复制身份证为什么出现E+

    复制身份证为什么出现E+

  • aux输入是什么意思(aux输入还是输出)

    aux输入是什么意思(aux输入还是输出)

  • 怎么在抖音直播间点赞(怎么在抖音直播电视剧)

    怎么在抖音直播间点赞(怎么在抖音直播电视剧)

  • 无法解析服务器域名(无法解析服务器的名称或地址是怎么回事)

    无法解析服务器域名(无法解析服务器的名称或地址是怎么回事)

  • 微信视频抖动是什么原因(微信视频抖动是什么意思)

    微信视频抖动是什么原因(微信视频抖动是什么意思)

  • 微信群发消息别人看不到怎么回事(微信群发消息别人能看出来吗)

    微信群发消息别人看不到怎么回事(微信群发消息别人能看出来吗)

  • 微信删了好友怎么看聊天记录(微信删了好友怎么加回来吗)

    微信删了好友怎么看聊天记录(微信删了好友怎么加回来吗)

  • ps怎么复制路径(ps怎么复制路径旋转)

    ps怎么复制路径(ps怎么复制路径旋转)

  • 微信是一种网站吗(微信是社交网站吗)

    微信是一种网站吗(微信是社交网站吗)

  • 支付宝生日权益在哪领(支付宝我的生日有什么福利)

    支付宝生日权益在哪领(支付宝我的生日有什么福利)

  • opp0手机如何关机(oppo手机怎么关)

    opp0手机如何关机(oppo手机怎么关)

  • 手机瀑布屏是什么意思(瀑布屏是啥)

    手机瀑布屏是什么意思(瀑布屏是啥)

  • 华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

    华为升降摄像头怎么用(华为升降摄像头怎么关闭声音)

  • 苹果机发热正常吗(苹果手机发烫正常)

    苹果机发热正常吗(苹果手机发烫正常)

  • 建设银行app怎么销户(建设银行app怎么查开户行)

    建设银行app怎么销户(建设银行app怎么查开户行)

  • 小米9的防触碰在哪设置(小米9防触摸屏怎么设置)

    小米9的防触碰在哪设置(小米9防触摸屏怎么设置)

  • 租车app具备哪些功能(租车用的app)

    租车app具备哪些功能(租车用的app)

  • 企业所得税当年销售收入
  • 什么是税法要素
  • 小规模纳税人劳务费税率1%
  • 反写不了是为什么
  • 废机油处理多少钱一吨
  • 应付利润借方有余额怎么处理
  • 无形资产按几年摊
  • 海关入库成功下一步干嘛
  • 分公司企业所得税汇总缴纳还是单独缴纳
  • 现金流量表中支付的税费包括哪些
  • 生活服务费发票 经营范围
  • 专票红冲账务处理
  • 一般纳税人兼营不同税率
  • 职工工资保险费账务处理怎么做?
  • 电影院场地出租价格
  • 无合同销售收入怎么算
  • 增值税可以抵扣企业所得税吗
  • 期末余额全部转出的有哪些
  • 对于税收会计记账科目应该如何设置?
  • 在外省预交企业所得税
  • 农产品没有进项税怎么算
  • 税控服务费抵扣增值税
  • 住房公积金个人缴费比例
  • 工资晚发一个月个税怎么申报的
  • 与工程有关的差旅费是否可以计入在建工程呢?
  • 资产减值损失是什么类科目
  • 应收账款坏账收回会计处理
  • 租赁架子公司购车合法吗
  • 自制原始凭证需要复核
  • 应付票据发生与偿还怎么计算?
  • 没有发票的固定资产可以折旧吗
  • 公司购车要交哪些税
  • 固定资产确认的标准有哪些
  • windows11怎么添加打印机驱动
  • 红冲暂估需要附件吗
  • 公司吸收合并股权
  • 玩游戏的显示器要高刷还是高分辨率
  • 材料分配的四个步骤
  • 招待费增值税能抵扣吗
  • 福利费可以抵扣进项吗?
  • yii2 页面底部加载css和js的技巧
  • php利用数组完成党员信息表
  • window cuda
  • python分布式执行框架Ray的介绍
  • 跨月更正申报会扣信用分么
  • 施工企业会计科目
  • 去国外参加展会办什么签证
  • 非营利组织相关论文
  • 异地工程可以在公司所在地缴纳税款吗
  • 进项税额被转出怎么做账
  • 体检费用开发票给公司怎么开
  • 年底所得税的会计分录
  • 固定资产折旧怎么算
  • 固定资产公司
  • select语句中的select*说明
  • sql解析框架
  • sql事务的例子
  • winxp系统停止服务
  • WINDOWS操作系统内置的GUEST
  • u启动开机启动快捷键
  • win10系统哪款好
  • vmware中安装centos7
  • win7如何整理磁盘
  • opengl帧缓冲
  • div显示边框线
  • 天干地支在择时中的应用初探
  • 批处理重命名文件名
  • unity资源包管理器
  • npm安装nodemodules
  • socket python
  • Tasharen Fog of War v1.0战争迷雾插件的使用(含Unity5.0Bug解决)
  • 基于python的
  • 减免所得税额怎样计算
  • 云南省税务局网址
  • 印花税没有做税种认定
  • 下载重庆税务官方app
  • 西乡塘区税务局电话
  • 发现个人所得税被物业挂职
  • 青岛市地方税务局关于发票
  • 企业演讲稿 英文
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设