現在、オーディオ ファイル (2 チャンネル、44.1kHz サンプル レート、16 ビット サンプル サイズ、WAV) をこのメソッドに渡したいのですが、WAV ファイルをバイト配列に変換する方法がわかりません。
/// <summary>
/// Process 16 bit sample
/// </summary>
/// <param name="wave"></param>
public void Process(ref byte[] wave)
{
_waveLeft = new double[wave.Length / 4];
_waveRight = new double[wave.Length / 4];
if (_isTest == false)
{
// Split out channels from sample
int h = 0;
for (int i = 0; i < wave.Length; i += 4)
{
_waveLeft[h] = (double)BitConverter.ToInt16(wave, i);
_waveRight[h] = (double)BitConverter.ToInt16(wave, i + 2);
h++;
}
}
else
{
// Generate artificial sample for testing
_signalGenerator = new SignalGenerator();
_signalGenerator.SetWaveform("Sine");
_signalGenerator.SetSamplingRate(44100);
_signalGenerator.SetSamples(16384);
_signalGenerator.SetFrequency(5000);
_signalGenerator.SetAmplitude(32768);
_waveLeft = _signalGenerator.GenerateSignal();
_waveRight = _signalGenerator.GenerateSignal();
}
// Generate frequency domain data in decibels
_fftLeft = FourierTransform.FFTDb(ref _waveLeft);
_fftRight = FourierTransform.FFTDb(ref _waveRight);
}
編集こんにちは、混乱して申し訳ありません。私は現在、音声シグナリングに慣れていないので、何を取得したいのかについての私の説明は間違っています。このメソッドが正しく機能するには、wav ファイルのみでデータ チャンクのバイト配列を渡す必要があると思います。最終結果は、コードに示されているように fft を適用し、スペクトログラムに変換することです。ありがとう。