当前位置:首页 > JavaScript

js实现声控

2026-02-01 15:37:40JavaScript

使用 Web Speech API 实现声控

Web Speech API 是浏览器原生支持的语音识别和合成接口,无需额外库即可实现声控功能。以下是一个基础实现示例:

// 创建语音识别对象
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'zh-CN'; // 设置语言为中文

// 开始识别
recognition.start();

// 监听识别结果
recognition.onresult = (event) => {
  const transcript = event.results[0][0].transcript;
  console.log('识别结果:', transcript);

  // 执行声控指令
  if (transcript.includes('打开')) {
    document.getElementById('targetElement').style.display = 'block';
  }
};

// 错误处理
recognition.onerror = (event) => {
  console.error('识别错误:', event.error);
};

增强功能实现

为提高识别准确性和交互体验,可添加以下优化:

// 连续识别模式
recognition.continuous = true;
recognition.interimResults = true;

// 实时反馈
recognition.onresult = (event) => {
  let interimTranscript = '';
  let finalTranscript = '';

  for (let i = event.resultIndex; i < event.results.length; i++) {
    const transcript = event.results[i][0].transcript;
    if (event.results[i].isFinal) {
      finalTranscript += transcript;
    } else {
      interimTranscript += transcript;
    }
  }

  document.getElementById('feedback').innerText = interimTranscript;
};

语音合成反馈

实现系统语音反馈增强交互:

function speak(text) {
  const utterance = new SpeechSynthesisUtterance(text);
  utterance.lang = 'zh-CN';
  speechSynthesis.speak(utterance);
}

// 在指令执行后调用
speak('指令已执行');

兼容性处理

检测浏览器支持情况并提供备用方案:

if (!('webkitSpeechRecognition' in window) && !('SpeechRecognition' in window)) {
  alert('您的浏览器不支持语音识别API');
} else {
  // 正常初始化代码
}

权限管理

现代浏览器要求用户明确授权麦克风权限:

navigator.permissions.query({ name: 'microphone' }).then(permissionStatus => {
  permissionStatus.onchange = () => {
    if (permissionStatus.state === 'granted') {
      recognition.start();
    }
  };
});

实际应用示例

结合具体场景的完整实现:

js实现声控

const voiceCommands = {
  '刷新页面': () => location.reload(),
  '返回首页': () => window.location.href = '/',
  '搜索': (query) => {
    const searchQuery = query.replace('搜索', '').trim();
    window.open(`https://www.baidu.com/s?wd=${encodeURIComponent(searchQuery)}`);
  }
};

recognition.onresult = (event) => {
  const transcript = event.results[0][0].transcript.trim();

  for (const [command, action] of Object.entries(voiceCommands)) {
    if (transcript.startsWith(command)) {
      action(transcript);
      break;
    }
  }
};

标签: js
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…