正在处理16位采样音频
本文关键字:采样 音频 16位 处理 | 更新日期: 2023-09-27 18:19:52
现在我有一个音频文件(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,并将其转换为频谱图。谢谢
您需要:
using System.IO;
和这个代码得到的字节数组
byte[] data = File.ReadAllBytes(PathToFile);
其中PathToFile
是.wav
文件的位置(作为字符串)。
编辑:
现在我有一个音频文件(2个通道,44.1kHz采样率,16位采样大小,WAV)我想把它传递到这个方法中,但我不确定是否有任何方法可以把WAV文件转换成字节数组。
他要求一个函数从.wav文件中获取字节数组,但他没有说要获取包含音乐数据的字节数组的特定部分。所以向下投票的正确答案是..