Skip to content

Instantly share code, notes, and snippets.

@Kennyl
Last active October 30, 2017 03:26
Show Gist options
  • Save Kennyl/a22f5074b5a56d6a093bfd6d7be92ce9 to your computer and use it in GitHub Desktop.
Save Kennyl/a22f5074b5a56d6a093bfd6d7be92ce9 to your computer and use it in GitHub Desktop.
SpeechSynthesisUtterance Example for HTML
// <script src="tts.js"></script> embed in html
// tts_content_tag_id is the ElementID that to be read
// tts_lang is lang of speak
// tts_icon_in_tagname (h1) where is tts icon to place with
// yue is zh-HK
// Mandarin is zh
var tts_content_tag_id = '_tl_editor';
var tts_lang = 'zh-HK';
var tts_pitch = 0.7;
var tts_rate = 1.1;
var tts_icon_in_tagname = 'h1';
var tts = function() {
a = document.createElement('a');
a.id = 'tts';
a.innerText = ' ' + String.fromCharCode(55357, 56803);
document.getElementsByTagName(tts_icon_in_tagname)[0].appendChild(a);
document.getElementById('tts').addEventListener('click', speak);
}
function p(){
speechSynthesis.pause();
document.getElementById('tts').removeEventListener('click', p);
document.getElementById('tts').addEventListener('click', r);
}
function r(){
speechSynthesis.resume();
document.getElementById('tts').removeEventListener('click', r);
document.getElementById('tts').addEventListener('click', p);
}
function speak(text, callback) {
text = document.getElementById(tts_content_tag_id).innerText;
// dialogue = text.split(tts_wordbreak_punctuation);
matches = text.match(/.{1,30000}/mg);
matches.forEach(function(e){
var t = new SpeechSynthesisUtterance(e);
t.lang = tts_lang;
t.pitch = tts_pitch;
t.rate = tts_rate;
speechSynthesis.speak(t);
// msg = t;
// msg.onstart = function (event) {console.log("started");};
// msg.onend = function(event) {console.log('Finished in ' + event.elapsedTime + ' seconds.');};
// msg.onerror = function(event){console.log('Errored ' + event);}
// msg.onpause = function (event){console.log('paused ' + event);}
// msg.onboundary = function (event){console.log('onboundary ' + event);}
});
// for (var i = 0; i < matches.length; i++) {
// var t = new SpeechSynthesisUtterance(matches[i]);
// console.log(matches[i]);
// t.lang = tts_lang;
// t.pitch = tts_pitch ;
// t.rate = tts_rate ;
// speechSynthesis.speak(t);
// // msg = t ;
// // msg.onstart = function (event) {console.log("started");};
// // msg.onend = function(event) {console.log('Finished in ' + event.elapsedTime + ' seconds.');};
// // msg.onerror = function(event){console.log('Errored ' + event);}
// // msg.onpause = function (event){console.log('paused ' + event);}
// // msg.onboundary = function (event){console.log('onboundary ' + event);}
// }
emoji = String.fromCharCode(9199);
document.getElementById('tts').innerHTML = ' ' + emoji;
document.getElementById('tts').removeEventListener('click', speak);
document.getElementById('tts').addEventListener('click', p);
}
document.addEventListener("DOMContentLoaded", tts);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment