Registre la entrada de NAudio WaveIn y la salida a NAudio WaveOut

Quiero poder recibir información de un dispositivo de micrófono a través de NAudio.WaveIn, y luego enviar esa entrada exacta a un dispositivo de salida a través de NAudio.WaveOut.

¿Cómo haría esto?

Aquí está el código que me funcionó:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using NAudio.Wave; using NAudio.CoreAudioApi; namespace WindowsFormsApplication1 { public partial class Form4 : Form { private BufferedWaveProvider bwp; WaveIn wi; WaveOut wo; public Form4() { InitializeComponent(); wo = new WaveOut(); wi = new WaveIn(); wi.DataAvailable += new EventHandler(wi_DataAvailable); bwp = new BufferedWaveProvider(wi.WaveFormat); bwp.DiscardOnBufferOverflow = true; wo.Init(bwp); wi.StartRecording(); wo.Play(); } void wi_DataAvailable(object sender, WaveInEventArgs e) { bwp.AddSamples(e.Buffer, 0, e.BytesRecorded); } } } 

La mejor manera sería usar un BufferedWaveProvider como entrada para WaveOut. Luego, en la callback DataAvailable de WaveIn, suministre los datos registrados a BufferedWaveProvider

 void DataAvailable(object sender, WaveInEventArgs args) { bufferedWaveProvider.AddSamples(args.Buffer, 0, args.BytesRecorded); } 

Debe tener en cuenta que los tamaños de búfer predeterminados provocarán un retraso notable, por lo que si esperaba una latencia baja, es posible que deba experimentar un poco con los tamaños de búfer para ver qué tan bajo puede obtenerla.