位置: 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组件标签)

  • 苹果product red是什么意思

    苹果product red是什么意思

  • 电脑左单引号怎么打(电脑左双引号)

    电脑左单引号怎么打(电脑左双引号)

  • 十进制数90转换成无符号二进制数是(16进制转换二进制计算器)

    十进制数90转换成无符号二进制数是(16进制转换二进制计算器)

  • 请进入pc版卖家页面处理是什么意思(建议您进入pc版卖家中心)

    请进入pc版卖家页面处理是什么意思(建议您进入pc版卖家中心)

  • 打印机被列队阻止怎么解决(打印机队列阻塞)

    打印机被列队阻止怎么解决(打印机队列阻塞)

  • 双击微信头像会抖,对方知道吗(双击微信头像会怎样)

    双击微信头像会抖,对方知道吗(双击微信头像会怎样)

  • 苹果ios14系统什么时候发布

    苹果ios14系统什么时候发布

  • 小米手机没有声音显示耳机模式(小米手机没有声音怎么解决)

    小米手机没有声音显示耳机模式(小米手机没有声音怎么解决)

  • 快手注销以后身份证还可以绑定其他账号吗(快手注销以后身份证什么时间可以起号)

    快手注销以后身份证还可以绑定其他账号吗(快手注销以后身份证什么时间可以起号)

  • 换手机电池对手机有影响吗(换手机电池对手机性能有影响吗)

    换手机电池对手机有影响吗(换手机电池对手机性能有影响吗)

  • 手机中的单卡是什么意思(单卡手机双卡解决方案)

    手机中的单卡是什么意思(单卡手机双卡解决方案)

  • 智慧屏和电视的区别(智慧屏和电视的哪个护眼模式好)

    智慧屏和电视的区别(智慧屏和电视的哪个护眼模式好)

  • 手机怎么刷机教程(手机怎么刷机教学视频)

    手机怎么刷机教程(手机怎么刷机教学视频)

  • 微盘为什么下载不了了(微盘点击下载没反应)

    微盘为什么下载不了了(微盘点击下载没反应)

  • app验证应用无反应(app验证了还是打不开)

    app验证应用无反应(app验证了还是打不开)

  • 双频gps定位是什么意思(双频gps定位是什么)

    双频gps定位是什么意思(双频gps定位是什么)

  • mate20和荣耀20的区别(华为mate20与荣耀20对比哪个更好)

    mate20和荣耀20的区别(华为mate20与荣耀20对比哪个更好)

  • word文档照片如何排版(word文档照片如何调整位置)

    word文档照片如何排版(word文档照片如何调整位置)

  • oppoa9x什么时候上市(oppoa9x什么时候更新coloros11)

    oppoa9x什么时候上市(oppoa9x什么时候更新coloros11)

  • 云空间怎么使用(换手机了云空间怎么使用)

    云空间怎么使用(换手机了云空间怎么使用)

  • 微软 Win11 安卓子系统安装 Google Play 商店详细教程(windos11安卓)

    微软 Win11 安卓子系统安装 Google Play 商店详细教程(windos11安卓)

  • DSMain.exe是什么进程?DSMain.exe是病毒吗?DSMain.exe程序文件及常见问题介绍(dsm是什么文件)

    DSMain.exe是什么进程?DSMain.exe是病毒吗?DSMain.exe程序文件及常见问题介绍(dsm是什么文件)

  • 从奎雷英山口看到的 Leum na Luirginn湖和Cleat湖,英国斯凯岛 (© Sebastian Wasek/Sime/eStock Photo)

    从奎雷英山口看到的 Leum na Luirginn湖和Cleat湖,英国斯凯岛 (© Sebastian Wasek/Sime/eStock Photo)

  • axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值(axios请求设置超时时间)

    axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值(axios请求设置超时时间)

  • python中的列表和元组(python中的列表和元祖有什么区别)

    python中的列表和元组(python中的列表和元祖有什么区别)

  • 小微企业减半征收印花税代码
  • 法律会计审计咨询合同需要缴纳印花税吗
  • 软件研发阶段和开发阶段如何区分
  • 其他应付款借方余额怎么调整
  • 混凝土开票的型号规格
  • 法定盈余公积和法定公积金一样吗
  • 应收代位追偿款有没有明细科目
  • 高新企业如何结转成本
  • 个体户查账征收怎么交税?
  • 管理费用是进项还是销项
  • 自己开发app能享受医保吗
  • 商品混凝土的增值税费率
  • 金融企业三大使命是什么
  • 加工产品不一定有合理损耗
  • 罚款费用报销单怎么写
  • 建筑业开票内容
  • 对公账号钱怎么拿出来
  • 未开发土地可否转给子公司
  • 金税盘需要报税吗
  • 小规模手撕发票申报填在哪
  • 自行生产的存货转固定资产怎么做账
  • win10 20h2更新时间久
  • win11怎么调整任务栏位置
  • saproxy.exe - saproxy是什么进程 有什么用
  • 费用报销单正确填写格式
  • 计提职工薪酬怎么算
  • 小规模开普票后怎么报增值税
  • 税务部门罚没收入计入什么科目
  • 代金券消费怎么做分录
  • 在php中,字符串有哪些表示形式
  • 个体公司转账给私人
  • PHP:curl_setopt_array()的用法_cURL函数
  • 小规模纳税人缴税标准是什么
  • 房屋修理费用
  • 房地产开发公司组织架构
  • 路由器怎么才能用
  • A meerkat in Namibia (© Danita Delimont/Offset by Shutterstock)
  • php的数据类型主要有哪几种
  • php零基础教程
  • 在建工程计提减值准备计入什么科目
  • 运费发票如何入账
  • 发财树怎么修剪枝叶视频教程
  • PHP:imagegammacorrect()的用法_GD库图像处理函数
  • php删除语句
  • php反转字符串方法
  • 银行汇票的记载事项有哪些
  • php使用什么开发工具
  • zentaophp框架
  • javascript背景图片怎么导入
  • viwer.js
  • vue3.0实战项目
  • php常用的打印函数
  • 车辆保险会计怎么做分录
  • 转账有手续费没有
  • 增值税发票认证在哪里
  • 个人独资企业只有收入没有成本和费用
  • mysql用户授权信息保存在哪里
  • 暂估成本账务处理
  • 公对公转账在手机上怎么操作
  • 公司发放加班补贴怎么做账
  • 奖金做预发年底会发吗
  • 日用品办公用品的经营范围
  • 支付土地租金计入什么科目里面
  • 农产品增值税公式
  • 分包抵扣金额
  • 企业负担的差旅费
  • 银行承兑汇票能拆分背书吗
  • 企业会计准则和小企业准则的区别
  • 银行存款日记账填写样本图
  • MYSQL数据库应用
  • 远程桌面修改默认端口
  • 远程控制安全
  • linux小技巧
  • linux ssh gui
  • node的fs模块
  • jquerycdn
  • javascript密码框
  • 诺诺开票软件怎么领用发票
  • 公司投资款可否取回
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设