当前位置:首页 > HTML

在h5中实现语音输入

2026-01-13 22:45:00HTML

使用Web Speech API实现语音输入

Web Speech API是浏览器原生支持的语音识别接口,无需额外插件。以下为关键实现代码:

// 创建语音识别对象
const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = 'zh-CN'; // 设置语言
recognition.interimResults = true; // 返回临时结果

// 绑定结果处理事件
recognition.onresult = (event) => {
  const transcript = Array.from(event.results)
    .map(result => result[0])
    .map(result => result.transcript)
    .join('');
  document.getElementById('output').value = transcript;
};

// 开始/停止语音输入
document.getElementById('startBtn').addEventListener('click', () => recognition.start());
document.getElementById('stopBtn').addEventListener('click', () => recognition.stop());

兼容性处理方案

目前Chrome、Edge等基于Chromium的浏览器支持最佳,需注意:

  • iOS Safari需要用户主动触发(如点击事件)
  • 部分浏览器需添加前缀(webkitSpeechRecognition)
  • 始终检查API可用性:
if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {
  alert('当前浏览器不支持语音识别');
}

增强用户体验的技巧

添加视觉反馈指示录音状态:

.recording {
  animation: pulse 1.5s infinite;
}
@keyframes pulse {
  0% { opacity: 1; }
  50% { opacity: 0.5; }
  100% { opacity: 1; }
}

处理常见错误情况:

recognition.onerror = (event) => {
  console.error('识别错误:', event.error);
  if(event.error === 'not-allowed') {
    alert('请允许麦克风权限');
  }
};

备选第三方方案

当需要更高精度或跨浏览器支持时,可考虑:

  • 科大讯飞开放平台WebAPI
  • 百度语音识别SDK
  • Azure Cognitive Services

这些方案通常需要申请API密钥,但能提供更好的识别准确率和附加功能。

在h5中实现语音输入

标签: 语音
分享给朋友: