本地免费版本语音唤醒功能
发布日期:2025/6/18 7:56:15 浏览量:
本地免费版本语音唤醒功能
<script>
const listenBtn = document.getElementById(’listenBtn’);
const statusEl = document.getElementById(’status’);
// 检查浏览器支持
if (!(’webkitSpeechRecognition’ in window)) {
statusEl.textContent = ’浏览器不支持语音识别,请使用Chrome或Edge’;
} else {
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
window.voiceRecognition = recognition; // 暴露给父页面
// 配置识别参数
recognition.continuous = true;
recognition.interimResults = false;
recognition.lang = ’zh-CN’;
recognition.maxAlternatives = 1;
// 自动启动监听
function startListening() {
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
stream.getTracks().forEach(track => track.stop());
recognition.start();
statusEl.textContent = "嗨!我在等你呼唤我哦:\"你好,小九\"";
window.voiceRecognitionActive = true;
})
.catch(error => {
let errorMsg = ’麦克风访问失败: ’;
if (error.name === ’NotAllowedError’) {
errorMsg += ’请允许麦克风权限’;
} else {
errorMsg += error.message;
}
statusEl.textContent = errorMsg;
window.voiceRecognitionActive = false;
});
}
// 延迟1秒启动,确保页面加载完成
setTimeout(startListening, 1000);
// 识别结果处理
recognition.onresult = (event) => {
const transcript = event.results[event.results.length-1][0].transcript;
console.log(`识别到语音: ${transcript}`);
const wakePhrases = [’你好小九’, ’你好,小九’, ’你好,小酒’, ’好小酒’, ’你好呀,小酒’, ’好呀,小酒’];
const isWakeWord = wakePhrases.some(phrase => transcript.includes(phrase));
if (isWakeWord) {
statusEl.textContent = ’已唤醒,正在启动数字人...’;
// 通知父页面启动数字人
window.parent.postMessage(’wake_word_detected’, ’*’);
recognition.stop();
window.voiceRecognitionActive = false;
}
};
// 错误处理 - 忽略"no-speech"错误
recognition.onerror = (event) => {
if (event.error === ’no-speech’) {
return; // 忽略未检测到语音的错误
}
let errorMsg = ’语音识别错误: ’;
switch(event.error) {
case ’audio-capture’:
errorMsg += ’麦克风不可用’;
break;
case ’not-allowed’:
errorMsg += ’麦克风访问被拒绝’;
break;
default:
errorMsg += event.error;
}
statusEl.textContent = errorMsg;
window.voiceRecognitionActive = false;
};
// 识别结束 - 自动重新启动
recognition.onend = () => {
// 如果不是因为唤醒词而停止,则重新启动
if (!statusEl.textContent.includes(’已唤醒’) && window.voiceRecognitionActive) {
setTimeout(() => {
try {
recognition.start();
} catch (error) {
console.error(’语音识别重启失败:’, error);
startListening();
}
}, 500);
}
};
// 暴露停止方法给父页面
window.stopVoiceRecognition = function() {
try {
recognition.stop();
statusEl.textContent = ’语音监听已关闭’;
window.voiceRecognitionActive = false;
} catch (e) {
console.log(’停止语音识别时出错:’, e);
}
};
}
// 监听父页面消息
window.addEventListener(’message’, function(event) {
if (event.data === ’stop_listening’) {
window.stopVoiceRecognition();
}
});
</script>
马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 联系人:石先生/雷先生