0

現在、オーディオ ファイル (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 を適用し、スペクトログラムに変換することです。ありがとう。

4

1 に答える 1

0

必要なもの:

using System.IO;

バイト配列を取得するためのこのコード

byte[] data = File.ReadAllBytes(PathToFile);

wherePathToFile.wavファイルの場所 (文字列として) です。

編集:

現在、オーディオ ファイル (2 チャンネル、44.1kHz サンプル レート、16 ビット サンプル サイズ、WAV) をこのメソッドに渡したいのですが、WAV ファイルをバイト配列に変換する方法がわかりません。

彼は、.wav ファイルからバイト配列を取得する関数を要求しましたが、音楽のデータを含むバイト配列の特定の部分を取得することについては何も言いませんでした。したがって、正しい答えに反対票を投じることは..

于 2013-06-26T10:18:06.130 に答える