Прямо сейчас у меня есть аудиофайл (2 канала, частота дискретизации 44,1 кГц, размер выборки 16 бит, WAV). Я хотел бы передать его в этот метод, но я не уверен в каком-либо способе конвертировать WAV файл в массив байтов.Обработка звука 16 бит аудио
/// <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 на нем, как показано в коде, и преобразование его в спектрограмму. Благодарю.
Возможно, вы захотите ознакомиться с этим http://stackoverflow.com/questions/8754111/how-to-read-the-data-in-a-wav-file -to-an-array – MisterMetaphor
Привет, спасибо. Я посмотрел на него и выяснил, что я предполагаю только получить массив байтов, содержащий блок данных. На стороне примечания, пример дал возврат двойника. Как я могу изменить его на массив байтов, чтобы передать его в мой метод здесь. Пожалуйста, поправьте меня, если я где-то ошибаюсь. –
попробуйте файл libsoundfile или один из многих онлайн-ссылок, которые объясняют, как читать данные из wav-файла. –