6

現在、NAudio を使用してサウンドをキャプチャしていますが、wav ファイルのみが作成されます。ファイルを保存する前に、mp3 にエンコードする方法を探しています。LAME を見つけましたが、lame_enc.dll ファイルを追加しようとすると、「参照を追加できませんでした。ファイルにアクセスできること、および有効なアセンブリまたは COM コンポーネントであることを確認してください」と表示されます。どんな助けでも大歓迎です。

4

3 に答える 3

11

.Net 4.0 で最も簡単な方法:

Visual Studio の Nuget パッケージ マネージャー コンソールを使用します。

Install-Package NAudio.Lame

コード スニップ: 音声をメモリ ストリームに送信し、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);
    }
}
于 2014-05-30T04:36:33.187 に答える