当前位置:首页 > JavaScript

js实现语音输入

2026-03-01 10:12:44JavaScript

实现语音输入的基本方法

使用Web Speech API中的SpeechRecognition接口可以轻松实现语音输入功能。以下是一个完整的实现示例:

// 检查浏览器是否支持语音识别
if ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window) {
  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
  const recognition = new SpeechRecognition();

  // 设置识别参数
  recognition.continuous = false;  // 是否连续识别
  recognition.interimResults = false;  // 是否返回临时结果
  recognition.lang = 'zh-CN';  // 设置语言

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

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

  // 处理错误
  recognition.onerror = (event) => {
    console.error('识别错误:', event.error);
  };
} else {
  console.error('当前浏览器不支持语音识别');
}

进阶功能实现

增加连续识别和实时反馈功能:

js实现语音输入

const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
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;
    }
  }

  console.log('临时结果:', interimTranscript);
  console.log('最终结果:', finalTranscript);
};

兼容性处理方案

针对不同浏览器提供备用方案:

function startSpeechRecognition() {
  try {
    const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
    if (!SpeechRecognition) throw new Error('API not supported');

    const recognition = new SpeechRecognition();
    // 配置和事件处理...
    recognition.start();
    return recognition;
  } catch (error) {
    console.warn('语音识别不可用:', error);
    // 可以在这里提供备用输入方式
    return null;
  }
}

语言和方言设置

支持多种语言识别:

js实现语音输入

const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();

// 支持的语言列表
const languages = {
  '中文(普通话)': 'zh-CN',
  '英文(美国)': 'en-US',
  '日语': 'ja-JP',
  '韩语': 'ko-KR'
};

// 设置语言
function setLanguage(langCode) {
  recognition.lang = langCode;
}

性能优化建议

减少资源消耗的实用技巧:

  • 在不需要时停止识别:recognition.stop()
  • 限制识别时长:设置超时自动停止
  • 合理使用连续识别模式,避免不必要的资源占用
  • 考虑使用Web Worker处理大量识别结果

用户界面集成示例

将语音输入与UI元素结合:

<button id="micButton">开始语音输入</button>
<div id="result"></div>

<script>
  const micButton = document.getElementById('micButton');
  const resultDiv = document.getElementById('result');

  micButton.addEventListener('click', () => {
    const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
    recognition.lang = 'zh-CN';

    recognition.onresult = (event) => {
      resultDiv.textContent = event.results[0][0].transcript;
    };

    recognition.start();
  });
</script>

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

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现正交

js实现正交

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