3

WAV ファイルからの行データの取得が完了しました。これで、DataRate や SamplingPerBits などの WAV ファイルに関する情報がわかりました。

そして、WAV ファイルを読み込んだ後、いくつかの種類のデータ型があります: 16 ビット - []Int16、8 ビット - []byte。

[]Int16 を []float に変換しようとしています!

NAudio.wave 関数 Wave16ToFloatProvider() を見つけました。

Converting 16 bit to 32-nit floating point を見てきました。しかし、WaveFileWriter を記述する必要がないため、これについては理解できませんでした。だから私はWaveFileWriterなしでやろうとしました。これが私のコードです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using NAudio;
using NAudio.Wave;

namespace WaveREader
{
    class WaveReader
    {
        WaveFileReader reader = new WaveFileReader("wavetest.wav");
        IWaveProvider stream32 = new Wave16ToFloatProvider(reader);
        byte[] buffer = new byte[8192];
        float[] DATASIXTEEN;
        for (int i = 0; i < buffer.Length; i++)
        {
            DATASIXTEEN = new float[buffer.Length];
            DATASIXTEEN[i] = stream32.Read(buffer, 0, buffer.Length);
        }
    }
}

この部分が間違っていると思いますDATASIXTEEN[i] = stream32.Read(buffer, 0, buffer.Length);が、修正方法がわかりません。

Wave16ToFloatProvider を使ったコードやアドバイスをいただけないでしょうか。

または、Wave16ToFloatProvider を使用せずに変換する方法を教えてください。

4

1 に答える 1