本地免費(fèi)版本語音喚醒功能
發(fā)布日期:2025/6/18 7:56:15 瀏覽量:
本地免費(fèi)版本語音喚醒功能
<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; // 暴露給父頁面
// 配置識別參數(shù)
recognition.continuous = true;
recognition.interimResults = false;
recognition.lang = ’zh-CN’;
recognition.maxAlternatives = 1;
// 自動啟動監(jiān)聽
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 = ’麥克風(fēng)訪問失敗: ’;
if (error.name === ’NotAllowedError’) {
errorMsg += ’請?jiān)试S麥克風(fēng)權(quán)限’;
} else {
errorMsg += error.message;
}
statusEl.textContent = errorMsg;
window.voiceRecognitionActive = false;
});
}
// 延遲1秒啟動,確保頁面加載完成
setTimeout(startListening, 1000);
// 識別結(jié)果處理
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 = ’已喚醒,正在啟動數(shù)字人...’;
// 通知父頁面啟動數(shù)字人
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 += ’麥克風(fēng)不可用’;
break;
case ’not-allowed’:
errorMsg += ’麥克風(fēng)訪問被拒絕’;
break;
default:
errorMsg += event.error;
}
statusEl.textContent = errorMsg;
window.voiceRecognitionActive = false;
};
// 識別結(jié)束 - 自動重新啟動
recognition.onend = () => {
// 如果不是因?yàn)閱拘言~而停止,則重新啟動
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 = ’語音監(jiān)聽已關(guān)閉’;
window.voiceRecognitionActive = false;
} catch (e) {
console.log(’停止語音識別時出錯:’, e);
}
};
}
// 監(jiān)聽父頁面消息
window.addEventListener(’message’, function(event) {
if (event.data === ’stop_listening’) {
window.stopVoiceRecognition();
}
});
</script>
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生