首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NAudio.Lame

使用NAudio.Lame
EN

Stack Overflow用户
提问于 2018-08-04 19:42:06
回答 1查看 1.1K关注 0票数 1

我是C#的新手,学得很开心。我已经为自己构建了一个文本到语音控制台应用程序,我对它非常满意。

因为我是新手,但是从学习中获得了巨大的兴趣,我不能在不学习如何使用的情况下通过wjdavis5跳过这篇文章中的代码。

“Install-Package NAudio.Lame代码片段:我的方法显然返回一个byte[] -我有一个单独的保存到磁盘的b/c方法,我认为它使单元测试更容易。

代码语言:javascript
复制
public static byte[] ConvertWavToMp3(byte[] wavFile)
{

    using(var retMs = new MemoryStream())
    using (var ms = new MemoryStream(wavFile))
    using(var rdr = new WaveFileReader(ms))
    using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128))
    {
        rdr.CopyTo(wtr);
        return retMs.ToArray();
    }
}

来自这篇文章:

change format from wav to mp3 in memory stream in NAudio

我基本上理解其中的语法,但我太新手了,以至于我很难理解如何将wavFile放入该方法中。

这显然是我正在努力解决的基本C#问题,这是我第一次被迫问这个问题,但我必须要知道!

看看这段漂亮的代码!

干杯安德鲁

EN

回答 1

Stack Overflow用户

发布于 2018-08-07 22:36:53

代码语言:javascript
复制
using System;
using System.Text;
using System.IO;
using System.Speech.Synthesis;
using System.Speech.AudioFormat;
using NAudio.Wave;
using NAudio.Lame;

namespace Lame_Mp3_Test
{
   class Program
   {

    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);
        }

     }



    static void Main(string[] args)
      {



        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, "c:\\test\\mytest.mp3");
        }
     }
  }

}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51685230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档