0

我有一个验证码,我想在我的 Web 应用程序 (MVC .net) 中使用 system.speech 将验证码转换为语音。

所以我的应用程序在我的 html 页面中调用它:

[HttpGet]
public async Task<FileResult> PlayCaptcha()
{
        if (Session["__Captcha"] == null)
        {
            System.IO.File.WriteAllText(@"D:\b.txt", "b");
            return null;
        }
        var captcha = Session["__Captcha"].ToString();
        var bytes = await new TextToSpeech().ReadNumberOneByOne(captcha);
        return File(bytes, "audio/x-wav");
}

这是我的 system.speech

 public async Task<byte[]> ReadNumberOneByOne(string number)
        {
            Task<byte[]> task = Task.Run(() =>
            {
                using (var synth = new SpeechSynthesizer())
                using (var stream = new MemoryStream())
                {
                    synth.SetOutputToDefaultAudioDevice();
                    synth.SetOutputToWaveStream(stream);
                    PromptBuilder talk = new PromptBuilder();
                    synth.SelectVoiceByHints(VoiceGender.Male, VoiceAge.Adult);
                    synth.Volume = 100;
                    synth.Rate = -7;
                    talk.AppendTextWithHint(number, SayAs.SpellOut);
                    synth.Speak(talk);
                    byte[] bytes = stream.GetBuffer();
                    return bytes;
                }
            });

            return await task;
        }

但是您可以看到我的服务器没有任何音频输出设备

在此处输入图像描述

我跟踪了代码,发现问题出在这一行:

                synth.SetOutputToDefaultAudioDevice();
4

0 回答 0