C# Save text to speech to MP3 file

前端 未结 3 765
有刺的猬
有刺的猬 2021-02-13 17:20

I am wondering if there is a way to save text to speech data to an mp3 or Wav file format to be played back at a later time?

SpeechSynthesizer reader = new Speec         


        
3条回答
  •  感情败类
    2021-02-13 17:43

    Not my answer, copy paste from How do can I use LAME to encode an wav to an mp3 c#


    Easiest way in .Net 4.0:

    Use the visual studio Nuget Package manager console:

    Install-Package NAudio.Lame
    

    Code Snip: Send speech to a memory stream, then save as mp3:

    //reference System.Speech
    using System.Speech.Synthesis; 
    using System.Speech.AudioFormat;
    
    //reference Nuget Package NAudio.Lame
    using NAudio.Wave;
    using NAudio.Lame; 
    
    
    using (SpeechSynthesizer reader = new SpeechSynthesizer()) {
        //set some settings
        reader.Volume = 100;
        reader.Rate = 0; //medium
    
        //save to memory stream
        MemoryStream ms = new MemoryStream();
        reader.SetOutputToWaveStream(ms);
    
        //do speaking
        reader.Speak("This is a test mp3");
    
        //now convert to mp3 using LameEncoder or shell out to audiograbber
        ConvertWavStreamToMp3File(ref ms, "mytest.mp3");
    }
    
    public static void ConvertWavStreamToMp3File(ref MemoryStream ms, string savetofilename) {
        //rewind to beginning of stream
        ms.Seek(0, SeekOrigin.Begin);
    
        using (var retMs = new MemoryStream())
        using (var rdr = new WaveFileReader(ms))
        using (var wtr = new LameMP3FileWriter(savetofilename, rdr.WaveFormat, LAMEPreset.VBR_90)) {
            rdr.CopyTo(wtr);
        }
    }
    

提交回复
热议问题