h5实现语音输入
使用Web Speech API实现语音输入
HTML5的Web Speech API提供了语音识别功能,可以在网页中实现语音输入。以下是一个完整的实现方法:
<!DOCTYPE html>
<html>
<head>
<title>语音输入示例</title>
</head>
<body>
<button id="startBtn">开始语音输入</button>
<p id="result"></p>
<script>
const startBtn = document.getElementById('startBtn');
const result = document.getElementById('result');
// 检查浏览器是否支持语音识别
if ('webkitSpeechRecognition' in window) {
const recognition = new webkitSpeechRecognition();
recognition.continuous = false;
recognition.interimResults = false;
recognition.lang = 'zh-CN'; // 设置语言为中文
startBtn.addEventListener('click', () => {
recognition.start();
result.textContent = "正在聆听...";
});
recognition.onresult = (event) => {
const transcript = event.results[0][0].transcript;
result.textContent = transcript;
};
recognition.onerror = (event) => {
result.textContent = "发生错误: " + event.error;
};
} else {
result.textContent = "您的浏览器不支持语音识别";
}
</script>
</body>
</html>
实现多语言支持
通过修改lang属性可以支持不同语言的语音输入:

// 英语(美国)
recognition.lang = 'en-US';
// 日语
recognition.lang = 'ja-JP';
// 西班牙语
recognition.lang = 'es-ES';
添加实时反馈功能
可以启用interimResults来获取实时识别结果:

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;
}
}
result.innerHTML = `<span style="color:gray">${interimTranscript}</span><br>${finalTranscript}`;
};
处理浏览器兼容性
不同浏览器对Web Speech API的实现有差异,需要做兼容处理:
const SpeechRecognition = window.SpeechRecognition ||
window.webkitSpeechRecognition ||
null;
if (SpeechRecognition) {
const recognition = new SpeechRecognition();
// 其余代码...
} else {
alert("您的浏览器不支持语音识别");
}
注意事项
- 语音识别功能需要用户授权麦克风权限
- 某些浏览器可能只支持HTTPS环境下的语音识别
- 识别准确度受环境噪音、发音清晰度等因素影响
- 移动设备上可能因省电模式限制后台语音识别
增强用户体验的建议
添加视觉反馈表明正在录音:
#startBtn.recording {
background-color: red;
color: white;
}
recognition.onstart = () => {
startBtn.classList.add('recording');
};
recognition.onend = () => {
startBtn.classList.remove('recording');
};
以上实现方法提供了基本的语音输入功能,可以根据实际需求进一步扩展和完善。


