当前位置: 首页 > backend >正文

浏览器 实时监听音量 实时语音识别 vue js

一、需求

        最近前端需要实现实时语音识别的功能, 但如果24小时不停识别会消耗很多资源,所以我写了一段代码来监听音量, 当音量大于阈值开启录音, 当音量连续小于阈值3秒停止录音, 由于是命令识别,我加了一个条件,若已经录音10秒也会自动停止录音。

二、代码

let isDoing = false;  // 是否正在录音let doingTime = 0;      // 本次录音时长let doingNone = 0;      // 录音无声时长let maxTime = 10;     // 自定义最大录音时长let stopTime = 3;     // 自定义连续3秒无声断开let startVolume = 80; // 自定义达到80音量开始录音// 获取麦克风流并创建音频上下文const stream = await navigator.mediaDevices.getUserMedia({ audio: true });const audioContext = new AudioContext();const analyser = audioContext.createAnalyser();const microphone = audioContext.createMediaStreamSource(stream);// 连接分析节点microphone.connect(analyser);analyser.fftSize = 256;const bufferLength = analyser.frequencyBinCount;const dataArray = new Uint8Array(bufferLength);// 实时计算音量function getVolume() {analyser.getByteFrequencyData(dataArray);let sum = 0;for (let i = 0; i < bufferLength; i++) {sum += dataArray[i];}const avgVolume = sum / bufferLength;return avgVolume.toFixed(2);}try {setInterval(() => {console.log(`开始检测`);let volume = getVolume(); // 开始检测if (volume > startVolume) {doingNone = 0;if (isDoing) {doingTime = doingTime + 1;if (doingTime > maxTime) {//todo 超过10秒结束录音}}else {doingTime = 0;//todo 调用开始录音方法}}else if(isDoing) {doingNone = doingNone + 1;if (doingNone > stopTime) {//todo 超过3秒无声音结束录音}}}, 1000)} catch (error) {console.error('麦克风访问错误:', error)}

http://www.xdnf.cn/news/15072.html

相关文章:

  • 人大金仓教程
  • 【基础架构】——软件系统复杂度的来源(低成本、安全、规模)
  • 【基于大模型 + FAISS 的本地知识库与智能 PPT 生成系统:从架构到实现】
  • chatgpt是怎么诞生的,详解GPT1到GPT4的演化之路及相关背景知识
  • WebGPU了解
  • 二、深度学习——损失函数
  • AI技术如何重塑你的工作与行业?——实战案例解析与效率提升路径
  • 华为OD机试_2025 B卷_观看文艺汇演问题(Python,100分)(附详细解题思路)
  • Java零基础笔记09(Java编程核心:面向对象编程高级练习:支付模块)
  • 【01】MFC入门到精通—— MFC新建基于对话框的项目 介绍(工作界面、资源视图 、类视图)
  • 前端开发流程设计详解
  • AMIS全栈低代码开发
  • python Gui界面小白入门学习
  • 数据一致性解决方案总结
  • Java结构型模式---装饰者模式
  • 【通识】NodeJS基础
  • jmeter做跨线程组
  • 【LeetCode207.课程表】以及变式
  • Redis数据淘汰策略
  • 从0开始学习R语言--Day42--LM检验
  • 旅游管理实训室建设的关键要点探讨
  • uniapp中使用uView-plus踩坑记录
  • 数据结构基础准备:包装类 泛型 泛型的上界 密封类
  • 脑电分析入门指南:信号处理、特征提取与机器学习
  • 主流大模型Agent框架 AutoGPT详解
  • 深度学习模型在C++平台的部署
  • vue2 echarts中国地图、在地图上标注经纬度及标注点
  • 伪装计算器软件,隐藏手机隐私文件
  • 精准医疗,AR 锚定球囊扩张导管为健康护航​
  • 暑假读书笔记第五天