LoquendoBot/src/js/voiceQueue.js

49 lines
1.2 KiB
JavaScript

let SelectedVoice = '';
let Encoding = '';
let counter = 0;
// wrap in promise
const speak = (textObject) => new Promise((resolve) => {
// say.setEncoding(Encoding);
counter += 1;
let savePath = '';
if (envInfo.env) {
savePath = path.join(envInfo.path, './sounds/tts/internal_audio_' + counter + '.mp3')
} else {
savePath = path.join(__dirname, '../sounds/tts/internal_audio_' + counter + '.mp3')
}
say.export(textObject.filtered, SelectedVoice, 1, savePath, (err) => {
if (err) {
console.error(err);
} else {
sound.playAudio({ "path": savePath, "message": textObject });
}
resolve('finished');
});
});
// queue system
class SayQueue {
constructor() {
this.messages = [];
this.status = 0;
}
async shift() {
this.status = 1;
while (this.messages.length > 0) {
await speak(this.messages.shift(), SelectedVoice, 1);
}
this.status = 0;
}
add(message, selectedVoice) {
this.messages.push(message);
SelectedVoice = selectedVoice;
if (this.status === 0) { this.shift(); }
}
}
const sayQueue = new SayQueue();
module.exports = sayQueue;