wav 文件的快速标准化器无法按预期工作

Quick normalizer for wav files not working as intended

我使用 naudio 在 c# 中编写了一个快速 wave 文件规范器。

目前它锁定了线程并创建了 1 KB 的文件。 sm是文件的最高峰

using (WaveFileReader reader = new WaveFileReader(aktuellerPfad))
{
    using (WaveFileWriter writer = new WaveFileWriter("temp.wav", reader.WaveFormat))
    {
        byte[] bytesBuffer = new byte[reader.Length];
        int read = reader.Read(bytesBuffer, 0, bytesBuffer.Length);
        writer.WriteSample(read *32768/sm);
    }
}

您需要在音频缓冲区中进行数学运算以标准化信号。标准化步骤为:

一个。像你一样读取音频缓冲区。 (虽然,我更喜欢分块阅读)。

    byte[] bytesBuffer = new byte[reader.Length];
    reader.Read( bytesBuffer, 0, bytesBuffer.Length );

b。计算乘数。有不同的方法来计算价值。我不知道你是怎么计算的,但它看起来是 32768/sm。我将乘数表示为 "mul".

c。现在遍历缓冲区并将该值乘以乘数。

  for ( int i = 0; i < bytesBuffer.Length; i++ )
  {
      bytesBuffer[i] = bytesBuffer[i] * mul;
  }

d。最后,将示例写入文件。

writer.WriteSamples( bytesBuffer, 0, bytesBuffer.Length );