in src/features/chat-page/chat-input/speech/use-text-to-speech.ts [25:67]
public async textToSpeech(textToSpeak: string) {
if (this.isPlaying) {
this.stopPlaying();
}
const tokenObj = await GetSpeechToken();
if (tokenObj.error) {
showError(tokenObj.errorMessage);
return;
}
const speechConfig = SpeechConfig.fromAuthorizationToken(
tokenObj.token,
tokenObj.region
);
player = new SpeakerAudioDestination();
var audioConfig = AudioConfig.fromSpeakerOutput(player);
let synthesizer = new SpeechSynthesizer(speechConfig, audioConfig);
player.onAudioEnd = () => {
this.isPlaying = false;
};
synthesizer.speakTextAsync(
textToSpeak,
(result) => {
if (result.reason === ResultReason.SynthesizingAudioCompleted) {
this.isPlaying = true;
} else {
showError(result.errorDetails);
this.isPlaying = false;
}
synthesizer.close();
},
function (err) {
console.error("err - " + err);
synthesizer.close();
}
);
}