Azure Text-To-Speech输出语言异常:JavaScript SDK设置不生效求助
解决Azure JavaScript Speech SDK语音合成语言设置不生效问题
确认SDK版本
确保使用最新稳定版的Azure Speech SDK,旧版本可能存在语言设置的兼容性bug。通过npm更新:npm update microsoft-cognitiveservices-speech-sdk严格遵循初始化顺序
语言和语音名称的设置必须在创建SpeechSynthesizer实例前完成,直接修改已初始化实例的属性不会生效。如果需要动态切换语言,必须销毁旧实例并重新创建:const speechConfig = SpeechSDK.SpeechConfig.fromSubscription("你的订阅密钥", "你的区域"); // 先配置语言与语音,再实例化合成器 speechConfig.speechSynthesisLanguage = "fr-FR"; speechConfig.speechSynthesisVoiceName = "fr-FR-AlainNeural"; const synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig); // 验证实例的实际配置(而非仅打印设置变量) console.log(synthesizer.speechSynthesisLanguage); console.log(synthesizer.speechSynthesisVoiceName);验证语音资源可用性
确认指定的语音名称在你的Azure语音资源所在区域可用,部分语音仅支持特定区域。可以通过以下代码获取区域支持的语音列表:async function checkAvailableVoices() { const speechConfig = SpeechSDK.SpeechConfig.fromSubscription("你的订阅密钥", "你的区域"); const synthesizer = new SpeechSDK.SpeechSynthesizer(speechConfig); const voices = await synthesizer.getVoicesAsync("fr-FR"); console.log(voices); synthesizer.close(); } checkAvailableVoices();如果返回列表中没有目标语音,需切换区域或选择其他可用语音。
正确使用setServiceProperty方法
若通过该方法设置语言,需使用正确的属性ID与参数通道:speechConfig.setServiceProperty( SpeechSDK.PropertyId.SpeechServiceConnection_SynthLanguageId, "fr-FR", SpeechSDK.ServicePropertyChannel.UriQueryParameter );排查代码覆盖问题
检查后续代码是否存在覆盖语言设置的逻辑,例如创建合成器后又调用setSpeechSynthesisLanguage,或使用了其他默认配置的合成器实例。
内容的提问来源于stack exchange,提问作者Spixz
相关产品推荐
相关产品推荐

