這次的內容是利用SpeechRecognition API去透過麥克風輸入語音辨識,將辨識後的字打在網頁的筆記上
作品實做
window.SpeechRecognition =
window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.interimResults = true; //即時輸出辨識的內容
recognition.lang = "zh-TW"; //設定偵測語言
let p = document.createElement("p");
const words = document.querySelector(".words");
words.appendChild(p);
recognition.addEventListener("result", (e) => {
const transcript = Array.from(e.results)
.map((result) => result[0]) //obj[0]為偵測內容
.map((result) => result.transcript) //obj[0]的屬性transcript
.join("");
console.log(transcript);
const poopScript = transcript.replace(/熊貓|貓熊|花花/gi, "🐼");
p.textContent = poopScript; //設定p元素內容
if (e.results[0].isFinal) {
p = document.createElement("p");
words.appendChild(p);
}
});
recognition.addEventListener("end", recognition.start);//當語音辨識結識後再次執行語音辨識接取下一段內容
recognition.start();//網頁開啟時執行
transcript
屬性為我們偵測到的文字內容
poopScript
我設定了關鍵詞,假設transcript
內容符合熊貓|貓熊|花花其一,則會將該字符轉為🐼
if (e.results[0].isFinal)
這段扣是在說, 偵測到當上一段語音結束之後會再次創建新的空白p元素接取語音內容,以形成不同的段落,達到分段顯示的效果。
[ Alex 宅幹嘛 ] 👨💻 深入淺出 Javascript30 快速導覽 | Day 20:Speech Detection
JS30