Один из способов обойти проблему с правами на диск - не сохранять аудио на диск.Для этого вы должны преобразовать вывод в объект потока, который может быть возвращен через веб-страницу, HTTP-обработчик или действие MVC.К сожалению, «SetOutputToAudioStream» возвращает только необработанный звук PCM.
Для вывода других кодировок, таких как µ-law (mu-law, u-law, ulaw), вам необходимо получить доступ к закрытымМетод SetOutputStream с использованием отражения.Ниже приведен фрагмент кода, который выполняет это и возвращает байтовый массив:
using System.Reflection;
/* Beginning Code */
byte outputWavBytes;
MemoryStream outputWav = new MemoryStream()
using (SpeechSynthesizer synth = new SpeechSynthesizer())
{
var mi = synth.GetType().GetMethod("SetOutputStream", BindingFlags.Instance | BindingFlags.NonPublic);
var fmt = new SpeechAudioFormatInfo(EncodingFormat.ULaw, 8000, 8, 1, 20, 2, null)
mi.Invoke(synth, new object[] { outputWav, fmt, true, true });
synth.Speak("This is a test to stream a different encoding.");
outputWav.Seek(0, SeekOrigin.Begin);
outputWavBytes = outputWav.GetBuffer();
}
/* End Code */