Мне нужно превратить текст в речь, а затем сохранить его как wav-файл.Как сохранить текст в речь как wav с помощью Microsoft SAPI?
ответ
Следующий код C# использует пространство имен System.Speech в инфраструктуре .Net. Перед использованием необходимо указать пространство имен, так как Visual Studio не ссылается на него автоматически.
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.Volume = 100;
ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav");
ss.Speak("Hello World");
Надеюсь, это актуально и полезно.
Это из-за нескольких минут игры, так что предостерегайте emptor. Работала хорошо для меня. Я заметил, что SpFileStream (который не реализует IDisposable, поэтому try/finally) предпочитает абсолютные пути к относительным. C#.
SpFileStream fs = null;
try
{
SpVoice voice = new SpVoice();
fs = new SpFileStream();
fs.Open(@"c:\hello.wav", SpeechStreamFileMode.SSFMCreateForWrite, false);
voice.AudioOutputStream = fs;
voice.Speak("Hello world.", SpeechVoiceSpeakFlags.SVSFDefault);
}
finally
{
if (fs != null)
{
fs.Close();
}
}
Спасибо вам за внимание. – Tarik
И как я нашел для того, как изменить формат вывода, мы закодировать что-то вроде этого:
SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
//Same code comes here
ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info);
Это довольно просто и понятно.
Cool .net
Привет, перед этим мне нужно импортировать некоторую dll, потому что System.Speech недоступен в моем проекте, хотя я добавил, используя «using System.Speech». – Tarik
@Mackenzie: это лучший ответ, чем мой, поскольку он использует родные классы .net, а не обманывает COM. –
@atarikg: Ссылка на сборку System.Speech. –