UNPKG

web-speech-profanity

Version:

Web Speech API adapter to use Cognitive Services Speech Services for both speech-to-text and text-to-speech service.

43 lines (32 loc) 1.13 kB
/* eslint no-await-in-loop: "off" */ export default class { constructor(audioContext) { this.audioContext = audioContext; } pause() { this.audioContext && this.audioContext.suspend(); this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('pause')); } resume() { this.audioContext && this.audioContext.resume(); this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('resume')); } async start(queue) { let utterance; while ((utterance = queue.shift())) { this.playingUtterance = utterance; await utterance.play(this.audioContext); this.playingUtterance = null; } } stop() { this.playingUtterance && this.playingUtterance.stop(); if (this.audioContext.state === 'suspended') { // Play -> Pause -> Cancel (stop) // This would generate these events: "start", "pause", "end" // Without this code, the "end" event will not emit until resume() is called // Cancelling an unstarted utterance will not emit any "start" or "end" event this.audioContext.resume(); } } }