我有一个验证码,我想在我的 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();