UNPKG

nitor-tts

Version:

Browser TTS (using Web speech API) made easy

66 lines 7.6 kB
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==