nitor-tts
Version:
Browser TTS (using Web speech API) made easy
66 lines • 7.6 kB
JavaScript
export class NitorTTS {
constructor() {
this.speech = new SpeechSynthesisUtterance();
window.speechSynthesis.getVoices();
}
hasbrowserSupport() {
return this.browserSupport = 'speechSynthesis' in window && 'SpeechSynthesisUtterance' in window;
}
init(voice, lang, volume, rate, pitch) {
this.voices = window.speechSynthesis.getVoices();
if (this.voices.filter(function (v) { return v.name == voice; })[0]) {
this.speech.voice = this.voices.filter(function (v) { return v.name == voice; })[0];
}
else if (this.voices[0]) {
this.speech.voice = this.voices[0];
}
else {
throw 'Error setting voice. The voice you passed is not valid or the voices have not been loaded yet.';
}
this.speech.lang = lang;
if (volume != undefined) {
if (volume >= 0 && volume <= 1) {
this.speech.volume = volume;
}
else {
throw 'Error setting volume. Please verify your volume value is a number between 0 and 1.';
}
}
if (rate != undefined) {
if (rate >= 0 && rate <= 10) {
this.speech.rate = rate;
}
else {
throw 'Error setting rate. Please verify your volume value is a number between 0 and 10.';
}
}
if (pitch != undefined) {
if (pitch >= 0 && pitch <= 2) {
this.speech.pitch = pitch;
}
else {
throw 'Error setting pitch. Please verify your pitch value is a number between 0 and 2.';
}
}
}
speak(speechData) {
this.speech.text = speechData;
window.speechSynthesis.speak(this.speech);
}
paused() {
return speechSynthesis.paused;
}
speaking() {
return speechSynthesis.speaking;
}
pause() {
speechSynthesis.pause();
}
resume() {
speechSynthesis.resume();
}
cancel() {
speechSynthesis.cancel();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTml0b3JUVFMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uaXRvci10dHMvc3JjL2xpYi9OaXRvclRUUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQVEsUUFBUTtJQUtwQjtRQUpBLFdBQU0sR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFLdEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUEsaUJBQWlCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsSUFBSSxNQUFNLElBQUksMEJBQTBCLElBQUksTUFBTSxDQUFDO0lBQ2xHLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBUyxFQUFDLElBQVEsRUFBQyxNQUFjLEVBQUMsSUFBWSxFQUFDLEtBQWE7UUFDaEUsSUFBSSxDQUFDLE1BQU0sR0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQy9DLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBUyxDQUFzQixJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUEsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztZQUNuRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFTLENBQXNCLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JHO2FBQ0ksSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7YUFDRztZQUNGLE1BQU0sZ0dBQWdHLENBQUM7U0FDeEc7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxNQUFNLElBQUUsU0FBUyxFQUFDO1lBQ3BCLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBQyxNQUFNLENBQUM7YUFDM0I7aUJBQUk7Z0JBQ0gsTUFBTSxvRkFBb0YsQ0FBQzthQUM1RjtTQUNGO1FBQ0QsSUFBSSxJQUFJLElBQUUsU0FBUyxFQUFDO1lBQ2xCLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBQyxJQUFJLENBQUM7YUFDdkI7aUJBQUs7Z0JBQ0osTUFBTSxtRkFBbUYsQ0FBQzthQUMzRjtTQUNGO1FBQ0QsSUFBSSxLQUFLLElBQUUsU0FBUyxFQUFFO1lBQ3BCLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBQyxLQUFLLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsTUFBTSxrRkFBa0YsQ0FBQzthQUMxRjtTQUNGO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFjO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUM5QixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUs7UUFDSCxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU07UUFDSixlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU07UUFDSixlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzICBOaXRvclRUUyB7XHJcbiAgc3BlZWNoID0gbmV3IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpO1xyXG4gIGJyb3dzZXJTdXBwb3J0OmFueTtcclxuICB2b2ljZXM6YW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHdpbmRvdy5zcGVlY2hTeW50aGVzaXMuZ2V0Vm9pY2VzKCk7XHJcbiAgfVxyXG5cclxuICAgaGFzYnJvd3NlclN1cHBvcnQoKXtcclxuICAgIHJldHVybiB0aGlzLmJyb3dzZXJTdXBwb3J0ID0gJ3NwZWVjaFN5bnRoZXNpcycgaW4gd2luZG93ICYmICdTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UnIGluIHdpbmRvdztcclxuICAgfVxyXG5cclxuICAgaW5pdCh2b2ljZTphbnksbGFuZzphbnksdm9sdW1lPzpudW1iZXIscmF0ZT86bnVtYmVyLHBpdGNoPzpudW1iZXIpe1xyXG4gICAgdGhpcy52b2ljZXM9d2luZG93LnNwZWVjaFN5bnRoZXNpcy5nZXRWb2ljZXMoKTtcclxuICAgIGlmKHRoaXMudm9pY2VzLmZpbHRlcihmdW5jdGlvbih2OlNwZWVjaFN5bnRoZXNpc1ZvaWNlKSB7IHJldHVybiB2Lm5hbWUgPT0gdm9pY2V9KVswXSl7XHJcbiAgICAgIHRoaXMuc3BlZWNoLnZvaWNlPXRoaXMudm9pY2VzLmZpbHRlcihmdW5jdGlvbih2OlNwZWVjaFN5bnRoZXNpc1ZvaWNlKSB7IHJldHVybiB2Lm5hbWUgPT0gdm9pY2V9KVswXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGhpcy52b2ljZXNbMF0pe1xyXG4gICAgICB0aGlzLnNwZWVjaC52b2ljZT10aGlzLnZvaWNlc1swXTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIHRocm93ICdFcnJvciBzZXR0aW5nIHZvaWNlLiBUaGUgdm9pY2UgeW91IHBhc3NlZCBpcyBub3QgdmFsaWQgb3IgdGhlIHZvaWNlcyBoYXZlIG5vdCBiZWVuIGxvYWRlZCB5ZXQuJztcclxuICAgIH1cclxuICAgIHRoaXMuc3BlZWNoLmxhbmc9bGFuZztcclxuICAgIGlmICh2b2x1bWUhPXVuZGVmaW5lZCl7XHJcbiAgICAgIGlmICh2b2x1bWUgPj0gMCAmJiB2b2x1bWUgPD0gMSl7XHJcbiAgICAgICAgdGhpcy5zcGVlY2gudm9sdW1lPXZvbHVtZTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhyb3cgJ0Vycm9yIHNldHRpbmcgdm9sdW1lLiBQbGVhc2UgdmVyaWZ5IHlvdXIgdm9sdW1lIHZhbHVlIGlzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMS4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocmF0ZSE9dW5kZWZpbmVkKXtcclxuICAgICAgaWYgKHJhdGUgPj0gMCAmJiByYXRlIDw9IDEwKXtcclxuICAgICAgICB0aGlzLnNwZWVjaC5yYXRlPXJhdGU7XHJcbiAgICAgIH1lbHNlIHtcclxuICAgICAgICB0aHJvdyAnRXJyb3Igc2V0dGluZyByYXRlLiBQbGVhc2UgdmVyaWZ5IHlvdXIgdm9sdW1lIHZhbHVlIGlzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHBpdGNoIT11bmRlZmluZWQgKXtcclxuICAgICAgaWYgKHBpdGNoID49IDAgJiYgcGl0Y2ggPD0gMil7XHJcbiAgICAgICAgdGhpcy5zcGVlY2gucGl0Y2g9cGl0Y2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgJ0Vycm9yIHNldHRpbmcgcGl0Y2guIFBsZWFzZSB2ZXJpZnkgeW91ciBwaXRjaCB2YWx1ZSBpcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDIuJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3BlYWsoc3BlZWNoRGF0YTphbnkpe1xyXG4gICAgdGhpcy5zcGVlY2gudGV4dCA9IHNwZWVjaERhdGE7XHJcbiAgICB3aW5kb3cuc3BlZWNoU3ludGhlc2lzLnNwZWFrKHRoaXMuc3BlZWNoKTtcclxuICB9XHJcblxyXG4gIHBhdXNlZCgpe1xyXG4gICAgcmV0dXJuIHNwZWVjaFN5bnRoZXNpcy5wYXVzZWQ7XHJcbiAgfVxyXG5cclxuICBzcGVha2luZygpe1xyXG4gICAgcmV0dXJuIHNwZWVjaFN5bnRoZXNpcy5zcGVha2luZztcclxuICB9XHJcblxyXG4gIHBhdXNlKCl7XHJcbiAgICBzcGVlY2hTeW50aGVzaXMucGF1c2UoKTtcclxuICB9XHJcblxyXG4gIHJlc3VtZSgpe1xyXG4gICAgc3BlZWNoU3ludGhlc2lzLnJlc3VtZSgpO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsKCl7XHJcbiAgICBzcGVlY2hTeW50aGVzaXMuY2FuY2VsKCk7XHJcbiAgfVxyXG5cclxufSJdfQ==