我使用naudio在c#中编写了一个快速波形文件规范化器。
目前它锁定线程并创建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);
}
}
答案 0 :(得分:3)
您需要在音频缓冲区中进行数学运算以规范化信号。规范化步骤将是:
一个。像你一样读取音频缓冲区。 (虽然,我更喜欢大块阅读。)
byte[] bytesBuffer = new byte[reader.Length];
reader.Read( bytesBuffer, 0, bytesBuffer.Length );
湾计算乘数值。有不同的方法来计算价值。我不知道你是怎么计算但看起来它的值是32768 / sm。我将乘数表示为“mul”。
℃。现在迭代缓冲区并将值乘以乘数。
for ( int i = 0; i < bytesBuffer.Length; i++ )
{
bytesBuffer[i] = bytesBuffer[i] * mul;
}
d。最后,将样本写入文件。
writer.WriteSamples( bytesBuffer, 0, bytesBuffer.Length );