+
95
-

回答

可以在播放声音的时候当检测到麦克风声音有人声的时候中断播放,识别人声为文字,完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>中文语音识别示例</title>
</head>
<body>
<h1>中文语音识别中断示例</h1>
<div>
    <button id="startButton">开始识别</button>
    <button id="stopButton">停止识别</button>
</div>
<div id="result"></div>

<script>
// 获取页面元素
const startButton = document.getElementById('startButton');
const stopButton = document.getElementById('stopButton');
const resultDiv = document.getElementById('result');
let utterance = new SpeechSynthesisUtterance('速度快放假上来看打,飞机酸辣粉几十块基辅罗斯看发蓝色,科技放开色精菲利克斯,荆防颗粒束带结发了库设计分离可,及示例快递费记录啥看,到放假了考试的解放路卡时间到了可.');


// 创建语音识别对象
const recognition = new webkitSpeechRecognition(); // 在 Chrome 中使用 webkitSpeechRecognition
recognition.lang = 'zh-CN'; // 设置识别语言为中文简体

// 设置连续识别
recognition.continuous = true;
recognition.interimResults = true;

// 开始识别按钮点击事件
startButton.addEventListener('click', () => {
   
    startrecong();
});
function startrecong(){
     recognition.start();
    resultDiv.innerHTML = '正在识别...';
    speechSynthesis.speak(utterance);
}

// 停止识别按钮点击事件
stopButton.addEventListener('click', () => {
    recognition.stop();
    resultDiv.innerHTML = '已停止识别';
});

// 处理识别结果
recognition.onresult = (event) => {
    let result = '';
    
    
    for (let i = event.resultIndex; i < event.results.length; i++) {
        if (event.results[i].isFinal) {
            result += event.results[i][0].transcript;
        } else {
           // result += event.results[i][0].transcript;
        }
    }
    if(result!=""){
        console.log(result)
           speechSynthesis.cancel();
           console.log("识别有人说话,中断声音播放")
    }
    resultDiv.innerHTML = result;
};

// 处理识别错误
recognition.onerror = (event) => {
    resultDiv.innerHTML = '发生错误:' + event.error;
};
/*recognition.onend = (event) => {
    resultDiv.innerHTML = '结束:' ;
    startrecong();
};*/
</script>
</body>
</html>

网友回复

我知道答案,我要回答