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

浏览器 实时监听音量 实时语音识别 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.lryc.cn/news/584685.html

相关文章:

  • [特殊字符] ROM 和 RAM 知识点系统总结
  • C++中的左值、右值与std::move()
  • selenium中find_element()用法进行元素定位
  • 实时风险监控系统工具设计原理:2025异常检测算法与自动化响应机制
  • QT解析文本框数据——详解
  • 重新配置电脑中的环境变量
  • 安装VMware详细步骤
  • CIEDE2000 色差公式C++及MATLAB实现
  • Ansible:强大的自动部署工具
  • 国内如何考取Oracle大师
  • 解决问题的“测地线”:关于第一性原理与其他系统思考框架
  • HTTP 错误 500.19 - 打开 IIS 网页时出现内部服务器错误
  • 学习软件测试的第十四天(移动端)
  • 数据库操作核心知识点整理
  • 网安系列【15】之Docker未授权访问漏洞
  • 需求不稳定对项目进度影响大,如何进行变更控制
  • 显卡GPU的架构和工作原理
  • Rail开发日志_2
  • EasyCVR视频汇聚平台国标接入设备TCP主动播放失败排查指南
  • 【2025/07/10】GitHub 今日热门项目
  • 学习笔记(32):matplotlib绘制简单图表-数据分布图
  • STM32中DMA(直接存储器访问)详解
  • linux系统---ISCSI存储服务
  • python基础25_某大网校(下)处理json数据以及保存题库
  • 遥感影像图像分割-地物提取模型训练与大图直接推理流程
  • AI翻唱——So-VITS-SVC
  • ARM环境上 openEuler扩展根盘并扩展到根分区中
  • MySQL数据库调优
  • C++ 中最短路算法的详细介绍(加强版)
  • 【养老机器人】核心技术