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 を使用せずに変換する方法を教えてください。