Nie moja odpowiedź, skopiuj pastę z How do can I use LAME to encode an wav to an mp3 c#
Najłatwiej w .NET 4.0:
używać visual studio Nuget Package konsolę Manager:
Install-Package NAudio.Lame
kod Snip: wyślij mowę do strumienia pamięci, a następnie zapisz jako 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);
}
}
Próbowałem tego samego kodu, działa idealnie w lokalnym, ale nie można utworzyć pliku mp3 na serwerze. Czy masz pojęcie, jakiej konfiguracji potrzebujemy na serwerze? –
musisz zainstalować kilka bibliotek dll na serwerze, aby urządzenie działało na przykład czy umieściłeś libmp3lame.32.dll i libmp3lame.64.dll w tym samym folderze co twój exe? – Cel
Tak, mam je, mam je również w folderze Bin i katalogu głównym. Ale kiedy uruchomię tę aplikację na serwerze, utworzę plik mp3 o wielkości 2kb, zawsze niezależny od bardzo dużego wpisanego tekstu i mp3 nie gra. Myślę, że ze względu na pewne problemy na serwerze nie można poprawnie utworzyć mp3. –