不需要的音频强度降低



我有一个带有以下c#代码的c#windows窗体项目,该项目使用NAudio库的BiQuadFilter类来实现低通滤波器。我面临的问题是,声音的强度也随着频率的下降而下降,因此音量几乎听不见。我该怎么解决这个问题?

我的代码:

    private ISampleProvider sourceProvider;
    private BiQuadFilter[] filters;
    private int channels,cutOffFreq;
    //Constructor
    public MyFilter(ISampleProvider sourceProvider,int cutOffFreq)
    {
        this.sourceProvider = sourceProvider;
        this.cutOffFreq = cutOffFreq;
        channels = sourceProvider.WaveFormat.Channels;
        filters = new BiQuadFilter[channels];
        CreateFilters();
    }
    private void CreateFilters()
    {
        for (int n = 0; n < channels; n++)
            if (filters[n] == null)
                filters[n] = BiQuadFilter.LowPassFilter(44100, cutOffFreq, 1);
            else
                filters[n].SetLowPassFilter(44100, cutOffFreq, 1);
    }
    public WaveFormat WaveFormat { get { return sourceProvider.WaveFormat; } }
    public int Read(float[] buffer, int offset, int count)
    {
        int samplesRead = sourceProvider.Read(buffer, offset, count);
        for (int i = 0; i < samplesRead; i++)
            buffer[offset + i] = filters[(i % channels)].Transform(buffer[offset + i]);
        return samplesRead;
    }

这就是我使用它的方式:

    waveOut.Init(new MyFilter(new AudioFileReader(path + "\Audio_Tracks\" + topic + "\" + currentTrack + ".wav"), 750));
    waveOut.Play();

我不知道你的源材料是什么,但一个截止频率仅为750Hz的低通滤波器可能会从你的原始信号中截取很多。一般来说,过滤器会让事情变得更安静。之后放大声音(例如,将每个样本变换后乘以增益因子)。

最新更新