簡體   English   中英

如何處理WAV文件的增益?

[英]How do I manipulate gain on a wav file?

我有一個wav文件,我想試一下聲音片段的增益(在較軟的區域中增強,在其他區域中減小。我需要將其保存為1k +個文件)並將其保存回磁盤。

.NET似乎沒有聲音庫,而且我找不到的音頻庫似乎都沒有對此的控件(Accord,Naudio,SDL2,SharpDX;盡管我只是看不到自己在尋找什么) 。 我還研究了WAV格式,嘗試直接對字節流進行處理,但是除了數據塊是左右對樣本之外,我找不到其他更具體的東西。

因此,通過訪問.wav文件,如何在每個樣本的基礎上調整響度? 如果可能的話,我還希望有一個解決方案,讓我也可以無縫處理其他聲音文件格式。

NAudio似乎提供您想要的東西

ISampleProvider

IWaveProvider的優勢在於它可以用來表示任何格式的音頻。 它可用於16,24或32位PCM音頻,甚至可用於壓縮音頻(MP3,G.711等)。 但是,如果您要對音頻執行任何類型的信號處理或分析,則很有可能希望音頻采用32位IEEE浮點格式。 嘗試從C#中的byte []中讀取浮點值可能會很痛苦。

因此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。 使用輸入樣本提供者獲取樣本,乘以您的增益:輸出樣本=增益x輸入樣本

使用WaveFileWriter.CreateWaveFile將customSampleProvider.ToWaveProvider()輸入適當的參數,以輸出回wav文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM