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

  • vivoy66更改存储位置吗(vivoy67l怎么更改储存路径)

    vivoy66更改存储位置吗(vivoy67l怎么更改储存路径)

  • 京东评价自己可以删除吗(京东里面自己的评价在哪里能找到)

    京东评价自己可以删除吗(京东里面自己的评价在哪里能找到)

  • 微信收款不报金额只响为什么(微信收款不报金额只响)

    微信收款不报金额只响为什么(微信收款不报金额只响)

  • 苹果放大器照片在哪里(苹果放大器照片怎么导出)

    苹果放大器照片在哪里(苹果放大器照片怎么导出)

  • OTG数据线有什么用

    OTG数据线有什么用

  • 全民k歌耳机返听失效(全民k歌耳机返听怎么听不见)

    全民k歌耳机返听失效(全民k歌耳机返听怎么听不见)

  • 苹果x单卡还是双卡(苹果x是单卡是双卡)

    苹果x单卡还是双卡(苹果x是单卡是双卡)

  • 抖音修改几次名字会被降权(抖音改名次数有限制吗)

    抖音修改几次名字会被降权(抖音改名次数有限制吗)

  • 标题幻灯片版式怎么设置(标题幻灯片版式的标题占位符)

    标题幻灯片版式怎么设置(标题幻灯片版式的标题占位符)

  • 苹果手机亮度调到最高还是很暗(苹果手机亮度调不了是什么问题)

    苹果手机亮度调到最高还是很暗(苹果手机亮度调不了是什么问题)

  • 本机进入ott模式怎么办(本机进入OTT模式怎么解除)

    本机进入ott模式怎么办(本机进入OTT模式怎么解除)

  • 微信上传的身份证照片在哪里可以看(微信上传的身份证过期了还能付款吗)

    微信上传的身份证照片在哪里可以看(微信上传的身份证过期了还能付款吗)

  • ledt5和t8的区别(ledt8灯管怎么接线图解)

    ledt5和t8的区别(ledt8灯管怎么接线图解)

  • 快手互粉对账号有影响吗(快手互粉影响权重吗)

    快手互粉对账号有影响吗(快手互粉影响权重吗)

  • 银河奇异果能看央视直播吗(银河奇异果能看世界杯吗)

    银河奇异果能看央视直播吗(银河奇异果能看世界杯吗)

  • oppoa5支持5g网络吗(oppo a5支不支持5g网络)

    oppoa5支持5g网络吗(oppo a5支不支持5g网络)

  • vivo1818ca是什么型号(vivo1818a是什么型号)

    vivo1818ca是什么型号(vivo1818a是什么型号)

  • 抖音注销了还能重新注册吗(抖音注销了还能恢复原来的视频)

    抖音注销了还能重新注册吗(抖音注销了还能恢复原来的视频)

  • 多选是ctrl加什么(ctrl加啥多选)

    多选是ctrl加什么(ctrl加啥多选)

  • 安卓手机如何去除锁屏广告(安卓手机如何去水印)

    安卓手机如何去除锁屏广告(安卓手机如何去水印)

  • 小影怎么取消自动续费(如何关闭小影自动续费)

    小影怎么取消自动续费(如何关闭小影自动续费)

  • 7200机械硬盘读写速度(7200机械硬盘读取只有70多M)

    7200机械硬盘读写速度(7200机械硬盘读取只有70多M)

  • 联想Y400电脑装WIN7无法重装系统的解决方法(联想y400怎么装win10)

    联想Y400电脑装WIN7无法重装系统的解决方法(联想y400怎么装win10)

  • 【博主推荐】html好看的个人主页(附源码)(良心推荐博主)

    【博主推荐】html好看的个人主页(附源码)(良心推荐博主)

  • 实现H5和小程序之间相互跳转(h5与小程序交互)

    实现H5和小程序之间相互跳转(h5与小程序交互)

  • Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器(ai绘图软件教程)

    Ai绘画工具有哪些?推荐这7款效果惊艳的AI绘画神器(ai绘图软件教程)

  • 个体工商户要报工商年报吗?
  • 什么情况下税务会监管
  • 材料费用发票的记账凭证
  • 企业如何进行纳税申报
  • 退个税app操作
  • 疫情捐款收据有什么用吗
  • 个税累计免征额
  • 维修企业主营项目有哪些
  • 委托加工消费税纳税义务发生时间
  • 融资租赁是怎么操作的
  • 股权内部转让交增值税吗
  • 房地产行业增值税筹划
  • 公司对公租车保险的规定
  • 资产的税务处理要注意什么
  • 虚开增值税专用发票罪判决书
  • 小规模定期定额申报
  • 转让合同债权
  • 小规模开电子发票模板
  • 增值税专用发票和普通发票的区别
  • 为什么增值税不影响利润
  • 对公账户上扣缴的税怎么做分录?
  • 法定盈余公积金转增资本不超过25%
  • 增值税普通发票需要交税吗
  • 增值税季度不超过30万
  • 利用退休人员避孕措施
  • 收取赔偿金开具什么发票
  • profiler.exe - profiler是什么进程 有什么用
  • 读会计没有考到证 能出来干什么
  • 车辆维修费可以抵扣进项吗
  • 专家评审费是否需要发票
  • 认缴注册是什么意思
  • php编程入门指南
  • codeigniter 教程
  • 公司法人变更账户没有改有影响吗
  • 哥德堡的港口
  • 所得税 季报
  • 员工旅游的费用可以税前扣除吗
  • 新所得税会计准则
  • 用户登录php
  • 环境检测费计入什么科目
  • cvpr best
  • 增值税普通发票和专用发票有什么区别
  • 公司发放给员工的出差补助需要合并计算个税吗
  • 公司的账面现金怎么算
  • scrapy csdn
  • curl抓包
  • 循环语句例题及解析
  • 间接费用允许调整吗
  • 以前年度损益调整结转到本年利润吗
  • 企业年金举例说明
  • 公司购买食品如何入账科目
  • 银行存款日记账电子表格模板
  • 个人所得税9月初申报哪个月的
  • sql server分为哪两类
  • 电子退库收入怎么入账
  • 确认收入结转成本可以写在一张凭证上吗
  • 运输公司车辆保养记录表格
  • 纳税申报财务报表怎么撤销
  • 利润表季度表怎么填
  • win7升级win10之后视频解码能力变弱
  • scardsvr32.exe - scardsvr32是什么进程 有什么用
  • 怎么判断电脑windows几
  • windows关机音乐
  • linux批量清空文件内容
  • Unity3D Editor类(Inspector) 编写经验总结
  • javascript中的函数
  • node链接数据库
  • nodejs json数据库
  • eclipse开发安卓app实例
  • unity区域光怎么做
  • pm2启动nodejs
  • jquery validate表单校验长度
  • node.js express中app.param的用法详解
  • Unity3D游戏开发引擎
  • android xml文件有哪几种布局方式
  • python模拟登陆并抓取
  • jquery 图片裁剪
  • bootstrap4 教程
  • 深圳国税电子税务局网上办税服务厅
  • 如何查询汽车发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设