如何在队列中播放音频TTS?
How to play audio TTS in queue?
我正在尝试通过 Azure TTS 为 twitch 聊天消息发表演说。在这种情况下,一切正常,但会同时播放消息。如何让消息按顺序播放?
<html>
<head>
<script src="comfy.min.js"></script>
</head>
<body>
<script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>
<script type="text/javascript">
function synthesizeSpeech(message) {
var speechConfig = SpeechSDK.SpeechConfig.fromSubscription("AzureKey", "AzureRegion");
speechConfig.speechSynthesisVoiceName = "en-US-Zira";
speechConfig.SpeechSynthesisLanguage = "en-US";
var synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig);
synthesizer.speakTextAsync(message); // twitch message speech
};
ComfyJS.onChat = (user, message, flags, self, extra) => {
if( flags.broadcaster === true ) {
console.log(message); //display message
synthesizeSpeech(message); // start function speech
}
}
ComfyJS.Init( "TwitchChannel" );
</script>
</body>
</html>
我认为这里的问题是 ComfyJS.onChat/synthesizeSpeech() 函数在不同的线程上被多次调用,或者至少多次调用而没有等待之前的 speakTextAsync 调用完成。
我会尝试制作“var synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig)”全局范围的变量,这样您就可以使用一个合成器来读出所有传入的消息,而不是为每个消息使用一个新的合成器信息。使用单个 tts 引擎应该会导致它们排队并按顺序呈现。
或者,您可以等待 speakTextAsync() 完成,然后再允许创建和排队另一个合成器和消息,但我认为对整个 chat/conversation 使用单个合成器实例会更有效。
布莱恩.
我正在尝试通过 Azure TTS 为 twitch 聊天消息发表演说。在这种情况下,一切正常,但会同时播放消息。如何让消息按顺序播放?
<html>
<head>
<script src="comfy.min.js"></script>
</head>
<body>
<script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>
<script type="text/javascript">
function synthesizeSpeech(message) {
var speechConfig = SpeechSDK.SpeechConfig.fromSubscription("AzureKey", "AzureRegion");
speechConfig.speechSynthesisVoiceName = "en-US-Zira";
speechConfig.SpeechSynthesisLanguage = "en-US";
var synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig);
synthesizer.speakTextAsync(message); // twitch message speech
};
ComfyJS.onChat = (user, message, flags, self, extra) => {
if( flags.broadcaster === true ) {
console.log(message); //display message
synthesizeSpeech(message); // start function speech
}
}
ComfyJS.Init( "TwitchChannel" );
</script>
</body>
</html>
我认为这里的问题是 ComfyJS.onChat/synthesizeSpeech() 函数在不同的线程上被多次调用,或者至少多次调用而没有等待之前的 speakTextAsync 调用完成。
我会尝试制作“var synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig)”全局范围的变量,这样您就可以使用一个合成器来读出所有传入的消息,而不是为每个消息使用一个新的合成器信息。使用单个 tts 引擎应该会导致它们排队并按顺序呈现。
或者,您可以等待 speakTextAsync() 完成,然后再允许创建和排队另一个合成器和消息,但我认为对整个 chat/conversation 使用单个合成器实例会更有效。
布莱恩.