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
JavaScript
/* 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();
}
}
}