簡體   English   中英

處理16位樣本音頻

[英]Processing 16bit sample audio

現在,我有一個音頻文件(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文件中獲取字節數組的函數,他沒有說要獲取包含音樂數據的字節數組的特定部分。 因此,否決正確答案是..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM