void PlaySound(string link, int WaveOutDeviceId) { using (Stream ms = new MemoryStream()) { using (Stream stream = WebRequest.Create(link).GetResponse().GetResponseStream()) { byte[] buffer = new byte[4096]; int read; while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } } ms.Position = 0; using (WaveStream mf = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms)))) using (var wo = new WaveOutEvent()) { wo.DeviceNumber = WaveOutDeviceId; PitchProvider = new SmbPitchShiftingSampleProvider(mf.ToSampleProvider().ToMono()); PitchProvider.PitchFactor = Pitch; wo.Init(PitchProvider); wo.Volume = VoiceVolume; wo.Play(); while (wo.PlaybackState == PlaybackState.Playing) { PitchProvider.PitchFactor = Pitch; wo.Volume = VoiceVolume; Thread.Sleep(500); } } } }