我是C#的新手,学得很开心。我已经为自己构建了一个文本到语音控制台应用程序,我对它非常满意。
因为我是新手,但是从学习中获得了巨大的兴趣,我不能在不学习如何使用的情况下通过wjdavis5跳过这篇文章中的代码。
“Install-Package NAudio.Lame代码片段:我的方法显然返回一个byte[] -我有一个单独的保存到磁盘的b/c方法,我认为它使单元测试更容易。
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#问题,这是我第一次被迫问这个问题,但我必须要知道!
看看这段漂亮的代码!
干杯安德鲁
发布于 2018-08-07 22:36:53
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");
}
}
}}
https://stackoverflow.com/questions/51685230
复制相似问题