var Reader = (function() { let reader = window.speechSynthesis; let current_position = 0; let original_position = 0; let to_speak = ""; function makeUtterance(str, rate) { let msg = new SpeechSynthesisUtterance(str); msg.rate = rate; msg.lang = "en-US"; msg.onboundary = ev => { if (ev.name === "word") { current_position = ev.charIndex; } } return msg; } function read(s, rate) { to_speak = s.toString(); original_position = 0; current_position = 0; let msg = makeUtterance(to_speak, rate); reader.speak(msg); } function stopRead() { reader.cancel(); } return { read: read, stopRead: stopRead }; }) ();