如何处理WAV文件的增益?

时间:2019-01-16 18:20:57

标签: c# .net wav

我有一个wav文件,我想试一下声音片段的增益(在较柔和的区域增强,在其他区域减小。我需要对1k +个文件进行处理)并将其保存回磁盘。 / p>

.NET似乎没有声音库,而且我找不到的音频库似乎都没有对此的控件(Accord,Naudio,SDL2,SharpDX;尽管我只是看不到自己的声音)寻找)。我还研究了WAV格式,尝试直接对字节流进行处理,但是我找不到比数据块是左右对样本更具体的东西。

因此,在访问.wav文件时,如何在每个样本的基础上调整响度?如果可能的话,我还希望有一个解决方案,使我也可以无缝处理其他声音文件格式。

1 个答案:

答案 0 :(得分:0)

NAudio似乎能提供您想要的东西

  

ISampleProvider

     

IWaveProvider的优势在于它可以用来表示   任何格式的音频。它可以用于16,24或32位PCM音频,以及   即使是压缩音频(MP3,G.711等)。但是如果你表演   对音频进行任何类型的信号处理或分析,   您可能希望音频为32位IEEE浮点数   格式。尝试读取浮点值可能会很痛苦   C#中的一个字节[]。

     

因此ISampleProvider定义了一个接口,其中所有样本均为32   位浮点数

public interface ISampleProvider { 
    WaveFormat WaveFormat { get; } 
    int Read(float[] buffer, int offset, int.count); 
}

https://github.com/naudio/NAudio/blob/master/Docs/WaveProviders.md#isampleprovider

创建自定义SampleProvider,该自定义SampleProvider在构造函数中采用输入SampleProvider。使用输入的Sample Provider获取样本,乘以您的收益: 输出样本=增益x输入样本

使用WaveFileWriter.CreateWaveFile将customSampleProvider.ToWaveProvider()输入适当的参数,以输出回wav文件。