Я исследовал и нашел этот способ, похожий на ответ Джона Калберера:
public async Task<ActionResult> Index()
{
Task<FileContentResult> task = Task.Run(() =>
{
using (var synth = new SpeechSynthesizer())
{
synth.SelectVoice("Microsoft Sabina Desktop");
using (var stream = new MemoryStream())
{
synth.SetOutputToWaveStream(stream);
synth.Speak("hola mundo");
byte[] bytes = stream.GetBuffer();
return File(bytes, "audio/x-wav");
}
}
});
return await task;
}
В этом случае я использую испанский голос, но, конечно, вы можете выбрать свой голос или избежатьsynth.SelectVoice
и использовать предопределенный