
實作一個語音輸入文字輸出的工具。
可以搭配MDN
安裝/啟動
npm來安裝:npm i啟動語音
window.SpeechRecognition ,Firefox 語音轉換 window.webkitSpeechRecognition
辨識語音設定
先宣告
const recognition = new SpeechRecognition();
使用 interimResult 控制語音辨識返回是即時或完整講完
recognition.interimResult = true;
使用 lang 設定辨識的語言
文字呈現
使用 p tag 和 appendChild() 讓文字顯示上去
let p = document.createElement('p');
const words = document.querySelector('.words');
words.appendChild(p);
監聽 recognition ,啟動監聽 start() 說話測試看看 console 有沒有值跑出
recognition.addEventListener('result', e => {
console.log(e);
})
recognition.start();
之後說話,細找文字說話的紀錄會在 transcript 裡面
// e.results[0][0].transcript;
使用 Array.from , map 把資料撈出來,用 join 把資料連接起來
使用 textContent 把資料寫進畫面
p.textContent = transcript;
使用 isFinal 增加判斷,確認句子說完了沒,說完在跳下一段落
if (e.results[0].isFinal) {
p = document.createElement('p');
words.appendChild(p);
}
當 speech recognition 服務中斷時再觸發
recognition.addEventListener('end', recognition.start);
判斷特定文字產生效果
const poopScript = transcript.replace(/大便|拉屎/gi, '💩');
p.textContent = poopScript;
// p.textContent = transcript;