La mejor manera sería usar un BufferedWaveProvider como entrada para WaveOut. Luego, en la devolución de llamada DataAvailable de WaveIn, suministrar los datos grabados en el BufferedWaveProvider
void DataAvailable(object sender, WaveInEventArgs args)
{
bufferedWaveProvider.AddSamples(args.Buffer, 0, args.BytesRecorded);
}
Necesita ser consciente de que los tamaños de búfer predeterminado dará como resultado un retraso notable, por lo que si usted esperaba una baja latencia que pueda necesitar experimentar un poco con tamaños de búfer para ver qué tan bajo puede obtenerlo.