public static byte[] EncodeCwav(byte[] wavData) { if (!ThirdPartyTools.CtrWaveConveter.Present) return EmptyData; using (var sourceStream = new MemoryStream(wavData)) // using (var tempBcwav = new TempFile("bcwav")) using (var tempWav = new TempFile("wav")) // { using (var tempWavStream = File.Open(tempWav.FilePath, FileMode.Create)) { if (Settings.Default.EXP_ResampleWav) { var nwf = new WaveFormat(22050, 8, 1); //22Khz Mono PCM8 var wr = new WaveFileReader(sourceStream); var conv = new WaveFormatConversionStream(nwf, wr); conv.CopyTo(tempWavStream); } else { sourceStream.CopyTo(tempWavStream); } tempWavStream.Flush(true); } try { var psi = new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = true, WindowStyle = ProcessWindowStyle.Hidden, FileName = ThirdPartyTools.CtrWaveConveter.Path, Arguments = $"-o \"{tempBcwav.FilePath}\" \"{tempWav.FilePath}\"" }; var process = Process.Start(psi); process.WaitForExit(); using (var tempBcwavStream = File.Open(tempBcwav.FilePath, FileMode.Open)) { byte[] converted = new byte[tempBcwavStream.Length]; tempBcwavStream.Read(converted, 0, converted.Length); return converted; } } catch { return EmptyData; } } }