5

C#を使用して.wavファイルの平均振幅を取得する方法を知っている人はいますか(外部のコマンドラインプログラムを呼び出して出力を解析することを意味する場合でも)?ありがとう!

4

3 に答える 3

3

.NET用のNAudioライブラリは最善の策のように思えます。オーディオファイルの波形にアクセスでき、ループして平均振幅の値を計算できます。

于 2009-06-30T15:05:39.250 に答える
3

これは、ステレオwavを読み込み、データを2つの配列に配置するスニップです。一部のコードを削除する必要があったため、テストされていません(モノラルに変換し、移動平均を計算します)

    /// <summary>
    ///  Read in wav file and put into Left and right array
    /// </summary>
    /// <param name="fileName"></param>
    private void ReadWavfiles(string fileName)
    {
        byte[] fa = File.ReadAllBytes(fileName);

        int startByte = 0;

        // look for data header
        {
            var x = 0;
            while (x < fa.Length)
            {
                if (fa[x]     == 'd' && fa[x + 1] == 'a' && 
                    fa[x + 2] == 't' && fa[x + 3] == 'a')
                {
                    startByte = x + 8;
                    break;
                }
                x++;
            }
        }

        // Split out channels from sample
        var sLeft = new short[fa.Length / 4];
        var sRight = new short[fa.Length / 4];

        {
            var x = 0;
            var length = fa.Length;
            for (int s = startByte; s < length; s = s + 4)
            {
                sLeft[x] = (short)(fa[s + 1] * 0x100 + fa[s]);
                sRight[x] = (short)(fa[s + 3] * 0x100 + fa[s + 2]);
                x++;
            }
        }

        // do somthing with the wav data in sLeft and sRight
    }
于 2009-06-30T15:41:42.873 に答える
1

通常、二乗平均平方根法は、sin(x)のような信号の「平均」振幅を計算するために使用されます。

于 2009-06-30T15:03:54.700 に答える