2010-04-12 11 views
4

Мое приложение C# должно скрывать текст в wav-файле и вводить его в Skype-вызов. Код, создающий wav-файл, приведен ниже. Проблема в том, что файл имеет частоту дискретизации 22 кГц, и Skype принимает только 16 кГц.SpeechSynthesizer в C# создает wav, который имеет 22 кГц ... должен быть 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(); 
} 

ответ

4

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

Edit:

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

+1

SetOutputToAudioStream() является альтернативой. –

+0

@ Ханс, я вижу. Странно, что они не были согласованы в их именах ... 'SetOutputToAudioFile()' для неволнового формата или перегруженного 'SetOutputToWaveStream()'. Обновленный ответ. :) – Tanzelax

+0

Идеальное решение. У меня есть файлы wav в правильном формате! – screenshot345

 Смежные вопросы

  • Нет связанных вопросов^_^