You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Text to Speech服务(C#)无发声无报错问题求助

Azure文本转语音(TTS)无响应问题排查

我按照官方文档用C#实现Microsoft Azure文本转语音服务,输入文本后程序既不发声,也没有任何错误提示,运行后输入内容无任何反应。相关代码如下:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{

static string speechKey = "";
static string speechRegion = "";

static void OutputSpeechSynthesisResult(SpeechSynthesisResult speechSynthesisResult, string text)
{
    switch (speechSynthesisResult.Reason)
    {
        case ResultReason.SynthesizingAudioCompleted:
            Console.WriteLine($"Speech synthesized for text: [{text}]");
            break;
        case ResultReason.Canceled:
            var cancellation = SpeechSynthesisCancellationDetails.FromResult(speechSynthesisResult);
            Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

            if (cancellation.Reason == CancellationReason.Error)
            {
                Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
                Console.WriteLine($"CANCELED: ErrorDetails=[{cancellation.ErrorDetails}]");
                Console.WriteLine($"CANCELED: Did you set the speech resource key and region values?");
            }
            break;
        default:
            break;
    }
}
async static Task Main(string[] args)
{
    var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);      

    // The language of the voice that speaks.
    speechConfig.SpeechSynthesisVoiceName = "en-US-JennyNeural"; 

    using (var speechSynthesizer = new SpeechSynthesizer(speechConfig))
    {
        // Get text from the console and synthesize to the default speaker.
        Console.WriteLine("Enter some text that you want to speak >");
        string text = Console.ReadLine();
        var speechSynthesisResult = await speechSynthesizer.SpeakTextAsync(text);
        OutputSpeechSynthesisResult(speechSynthesisResult, text);
    }

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}
}

解决步骤

  • 补全密钥和区域:代码中speechKey和speechRegion为空字符串,必须填入Azure语音资源的有效密钥和对应区域(例如eastus),否则服务无法完成认证,会导致无响应。
  • 确认资源状态:登录Azure门户,检查语音资源是否处于正常运行状态,未被禁用且额度充足。
  • 检查音频设备:验证系统默认音频输出设备能正常播放声音,排除硬件或系统音频设置问题。
  • 增强日志输出:在OutputSpeechSynthesisResult方法的default分支添加日志,避免遗漏未处理的结果状态:
    default:
        Console.WriteLine($"未处理的结果状态: {speechSynthesisResult.Reason}");
        break;
    
  • 显式指定音频输出:尝试显式绑定默认音频设备,修改SpeechSynthesizer初始化代码:
    using var audioConfig = AudioConfig.FromDefaultSpeakerOutput();
    using (var speechSynthesizer = new SpeechSynthesizer(speechConfig, audioConfig))
    
  • 排查网络问题:确保程序能正常访问Azure语音服务端点,可尝试测试网络连通性。

内容的提问来源于stack exchange,提问作者hamzah jazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:40:31