How to save text-to-speech as a wav with Microsoft SAPI?
Asked Answered
B

3

7

I need to turn a text into speech and then save it as wav file.

Biathlon answered 8/6, 2009 at 5:17 Comment(0)
R
13

The following C# code uses the System.Speech namespace in the .Net framework. It is necessary to reference the namespace before using it, because it is not automatically referenced by Visual Studio.

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

I hope this is relevant and helpful.

Receiptor answered 8/6, 2009 at 5:42 Comment(3)
Hi, before that I need to import some dll, because System.Speech is not available in my project even though I added by using "using System.Speech".Biathlon
@Mackenzie: this is a better answer than mine, as it uses .net native classes rather than mucking around with COM.Convalesce
@atarikg: Reference the System.Speech assembly.Convalesce
C
5

This is from a few moments' play, so caveat emptor. Worked well for me. I did notice that SpFileStream (which doesn't implement IDisposable, thus the try/finally) prefers absolute paths to relative. 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();
        }
    }
Convalesce answered 8/6, 2009 at 5:37 Comment(0)
B
5

And as I've found for how to change output format, we code something like this :

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

//Same code comes here 

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

That's pretty easy and comprehensible.

Cool .net

Biathlon answered 8/6, 2009 at 6:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.