Проблемы хостинга с использованием SpeechLib - PullRequest
0 голосов
/ 20 марта 2012

Привет! Я занимаюсь разработкой веб-проекта на c # и использую VS2010. Я использую SpeechLib, которая преобразует текст в речь. Локально на моем компьютере все работает хорошо, но при размещении веб-страницы страница не работает и выдается ошибка 500.

Как указано в другом старом посте ( ссылка ), проблема, похоже, заключается в том, что эта библиотека пытается записать временный файл в папку без необходимых разрешений. Проблема не решена.

Как я могу решить эту проблему? Спасибо!

1 Ответ

1 голос
/ 20 марта 2012

Один из способов обойти проблему с правами на диск - не сохранять аудио на диск.Для этого вы должны преобразовать вывод в объект потока, который может быть возвращен через веб-страницу, 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 */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...