C# で NAudio を使用して、wave ファイルを 48,000、8 ビット、モノラルに変換しています。変換されたデータをバイト配列に格納しています。私のコードは以下です。正常に動作しますが、新しい wave ファイル データは署名されていないため、署名する必要があります。
WaveFormat target = new WaveFormat(48000, 8, 1);
WaveStream stream = new WaveFileReader(this.FilePath);
WaveFormatConversionStream conv = new WaveFormatConversionStream(target, stream);
this.ConvertedData = new byte[conv.Length];
conv.Position = 0;
conv.Read(this.ConvertedData, 0, Convert.ToInt32(conv.Length));
stream.Dispose();
conv.Dispose();
データが変換された後にバイト配列をループして、各バイトから 128 を減算してみました。これは、このサイトで見つけた解決策です。
for (int i = 0; i < end; i++)
{
signed = (int)this.ConvertedData[i] - 128;
this.Data[i] = (byte)signed;
}
この種の方法は機能しますが、絶対確実というわけではなく、もっと良い方法があるはずです。どんな提案でも大歓迎です。ありがとう。