SpeechSynthesizer в C # создает WAV, который имеет 22 кГц ... должен быть 16 кГц - PullRequest
4 голосов
/ 13 апреля 2010

Моему приложению C # необходимо преобразовать текст в файл wav и вставить его в вызов Skype.Код, который создает файл WAV ниже.Проблема в том, что файл имеет частоту дискретизации 22 кГц, а Skype принимает только 16 кГц.

Есть ли способ отрегулировать эту настройку?

using (System.IO.FileStream stream = System.IO.File.Create("message.wav"))
{

System.Speech.Synthesis.SpeechSynthesizer speechEngine = new System.Speech.Synthesis.SpeechSynthesizer();

 speechEngine.SetOutputToWaveStream(stream);
 speechEngine.Speak(number);
 stream.Flush();
}

1 Ответ

4 голосов
/ 13 апреля 2010

SetOutputToWaveFile() имеет перегрузку, которая принимает параметр SpeechAudioFormatInfo, который можно использовать для установки частоты дискретизации. Не вижу ни одного для SetOutputToWaveStream(), как ни странно, но , так как вы все равно пишете в файл, это должно работать.

Edit:

Как указывает @Hans, правильная перегрузка SetOutputToAudioStream() для записи в поток.

...