Azure Cognitive Services文本转语音:如何停止服务器端音频输出?
解决Azure文本转语音服务器端扬声器输出问题
- 问题原因:直接使用仅带
SpeechConfig的构造函数创建SpeechSynthesizer时,SDK默认会将合成的音频输出到系统扬声器,这在Web服务器环境中会引发不必要的延迟。 - 解决方案:创建
SpeechSynthesizer时,传入AudioConfig.FromNullOutput()配置,明确禁用音频设备输出,仅保留合成后的音频字节数据。
修改后的完整代码:
var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); speechConfig.SpeechSynthesisVoiceName = "fa-IR-FaridNeural"; speechConfig.OutputFormat = OutputFormat.Detailed; // 配置空输出,禁用扬声器播放 using (var audioConfig = AudioConfig.FromNullOutput()) using (var speechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig)) { var speechSynthesisResult = await speechSynthesizer.SpeakTextAsync(inp); return Convert.ToBase64String(speechSynthesisResult.AudioData); }
关键说明
AudioConfig.FromNullOutput()会让SDK跳过音频设备的输出流程,只生成并返回音频字节数组,完全避免服务器端的音频播放操作。- 需将
audioConfig纳入using语句块,保证资源被正确释放,避免内存泄漏。
内容的提问来源于stack exchange,提问作者MG123
相关产品推荐
相关产品推荐

