Как сохранить текст в речь как WAV с Microsoft SAPI? - PullRequest
6 голосов
/ 08 июня 2009

Мне нужно превратить текст в речь, а затем сохранить его как файл wav.

Ответы [ 3 ]

11 голосов
/ 08 июня 2009

Следующий код C # использует пространство имен System.Speech в .Net Framework. Перед использованием его необходимо обратиться к пространству имен, поскольку Visual Studio на него не ссылается автоматически.

        SpeechSynthesizer ss = new SpeechSynthesizer();
        ss.Volume = 100;
        ss.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);
        ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav");
        ss.Speak("Hello World");

Надеюсь, это актуально и полезно.

4 голосов
/ 08 июня 2009

И как я нашел, как изменить формат вывода, мы кодируем что-то вроде этого:

SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(6, AudioBitsPerSample.Sixteen, AudioChannel.Mono);

//Same code comes here 

ss.SetOutputToWaveFile(@"C:\MyAudioFile.wav",info);

Это довольно легко и понятно.

Круто .net

3 голосов
/ 08 июня 2009

Это из нескольких минут игры, так что будьте бдительны. Хорошо сработало для меня. Я заметил, что 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();
        }
    }
...