当前位置:首页 > JavaScript

js实现语音

2026-04-05 19:39:37JavaScript

语音识别与合成实现方法

Web Speech API

Web Speech API 是浏览器原生支持的语音技术方案,包含以下两个核心功能:

语音识别(SpeechRecognition)

const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'zh-CN';
recognition.onresult = (event) => {
  const transcript = event.results[0][0].transcript;
  console.log('识别结果:', transcript);
};
recognition.start();

语音合成(SpeechSynthesis)

const utterance = new SpeechSynthesisUtterance('你好世界');
utterance.lang = 'zh-CN';
speechSynthesis.speak(utterance);

第三方库方案

对于需要更高兼容性的场景,可以考虑以下库:

  • annyang:轻量级语音识别库

    annyang.addCommands({'你好': () => alert('你好!')});
    annyang.start({lang: 'zh-CN'});
  • Howler.js:高级音频播放控制

    const sound = new Howl({src: ['audio.mp3']});
    sound.play();

实现注意事项

  1. 浏览器兼容性检测

    if (!('webkitSpeechRecognition' in window)) {
    alert('当前浏览器不支持语音识别');
    }
  2. 用户权限处理

    navigator.permissions.query({name:'microphone'})
    .then(permissionStatus => {
     if (permissionStatus.state === 'denied') {
       showPermissionRequestUI();
     }
    });
  3. 移动端适配建议

  • 添加唤醒词检测功能
  • 优化离线识别场景
  • 处理屏幕锁定状态下的语音交互

性能优化技巧

  • 限制识别词汇范围提高准确率

    recognition.maxAlternatives = 3;
    recognition.continuous = false;
  • 预加载语音资源

    js实现语音

    const voices = speechSynthesis.getVoices();
    utterance.voice = voices.find(v => v.lang === 'zh-CN');

完整示例代码

<button id="startBtn">开始录音</button>
<script>
  document.getElementById('startBtn').addEventListener('click', () => {
    const recognition = new webkitSpeechRecognition();
    recognition.onresult = (e) => {
      const synth = window.speechSynthesis;
      const reply = new SpeechSynthesisUtterance('你说的是: '+e.results[0][0].transcript);
      synth.speak(reply);
    };
    recognition.start();
  });
</script>

标签: 语音js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…