NAudio Фильтр нижних частот

Я написал код, который записывает звук с микрофона, а затем воспроизводит звук через динамики. Я хотел бы реализовать фильтр нижних частот в байте e.Buffer [], чтобы уменьшить шум от микрофона.

Немного предыстории: я намерен использовать этот код для создания программы VOIP. Клиент отправит отфильтрованный массив e.Buffer другому клиенту, который затем воспроизведет звук.

class Program
{
    public static int inputdevicenumber;
    public static WaveFormat waveformat = new WaveFormat(44100, 16, 1);
    static BufferedWaveProvider bufferedWaveProvider = new BufferedWaveProvider(waveformat);
    static WaveOutEvent waveOut = new WaveOutEvent();

    static void Main(string[] args)
    {
        WaveInEvent waveIn = new WaveInEvent();

        int waveInDevices = WaveIn.DeviceCount;
        for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++)
        {
            WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice);
            Console.WriteLine("Device {0}: {1}, {2} channels", waveInDevice, deviceInfo.ProductName, deviceInfo.Channels);
        }

        string Reply = Console.ReadLine();
        inputdevicenumber = Convert.ToInt32(Reply);

        NAUDIO_Capture();
        NAudio_Play();

        Console.ReadKey();

    }

    static void NAUDIO_Capture()
    {
        WaveInEvent waveIn = new WaveInEvent();

        waveIn.BufferMilliseconds = 20;
        waveIn.DeviceNumber = inputdevicenumber;
        waveIn.WaveFormat = waveformat;
        waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable);
        waveIn.StartRecording();
    }

    static void NAudio_Play()
    {
        bufferedWaveProvider.DiscardOnBufferOverflow = true;
        waveOut.Init(bufferedWaveProvider);
        waveOut.Play();
    }

    static void waveIn_DataAvailable(object sender, WaveInEventArgs e)
    {
        bufferedWaveProvider.AddSamples(e.Buffer, 0, e.BytesRecorded);
    }
}

person Simon    schedule 08.03.2017    source источник


Ответы (1)


Взгляните на класс Equalizer в NAudio. Демонстрация WPF, чтобы увидеть, как можно использовать класс BiQuadFilter для применения фильтра.

person Mark Heath    schedule 10.03.2017