js实现语音
语音识别(Speech Recognition)
在JavaScript中实现语音识别可以通过Web Speech API完成。该API提供SpeechRecognition接口,允许浏览器捕获并转换语音为文本。
// 创建语音识别对象
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);
};
// 错误处理
recognition.onerror = (event) => {
console.error('识别错误:', event.error);
};
语音合成(Speech Synthesis)
通过SpeechSynthesis接口可将文本转换为语音播放。支持调整语速、音调和音量。

// 创建语音合成对象
const utterance = new SpeechSynthesisUtterance('你好,这是语音合成示例');
utterance.lang = 'zh-CN'; // 设置语言
utterance.rate = 1.0; // 语速(0.1-10)
utterance.pitch = 1.0; // 音调(0-2)
// 播放语音
window.speechSynthesis.speak(utterance);
兼容性处理
不同浏览器可能需要前缀:
- Chrome/Safari:
webkitSpeechRecognition - Firefox/Edge:直接使用
SpeechRecognition
建议初始化时做兼容性判断:

const recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
if (!recognition) {
alert('该浏览器不支持语音识别');
}
实时连续识别
通过设置continuous和interimResults可实现实时监听:
recognition.continuous = true; // 持续识别
recognition.interimResults = true; // 返回中间结果
recognition.onresult = (event) => {
let interimTranscript = '';
let finalTranscript = '';
for (let i = 0; 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);
};
语音控制命令
结合语音识别可实现语音控制功能:
recognition.onresult = (event) => {
const command = event.results[0][0].transcript.toLowerCase();
if (command.includes('打开')) {
document.getElementById('light').style.backgroundColor = 'yellow';
} else if (command.includes('关闭')) {
document.getElementById('light').style.backgroundColor = 'gray';
}
};
注意事项
- 浏览器可能需要用户授权麦克风权限
- HTTPS环境下功能更可靠,部分浏览器在HTTP下限制API使用
- 中文识别需设置
lang为zh-CN或zh-TW






