2012-05-31 8 views
1

Я хочу получить частоту и амплитуду из волнового файла с помощью C#. Я пробовал naudio и FFT, но результат ничего. не могли бы вы мне помочь, пожалуйста.получить частоту и амплитуду из волнового файла

NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName)); 

     byte[] buffer = new byte[16384]; 
     int read = 0; 
     double[] _fft; 
     while (wave.Position < wave.Length) 
     { 
      read = wave.Read(buffer, 0, 16384); 
      _fft = FourierTransform.FFTDb(ref buffer); 
     } 

не ругайте, если где-то не так. Я новичок.

+0

Изменить ваш вопрос с куском кода, который ничего не привел. –

+0

Возможно, это помогает http://www.codeproject.com/Articles/19590/WAVE-File-Processor-in-C –

ответ

0

Вы можете использовать Bass Audio Library. Он имеет обертки .NET, и вы можете получить максимальную амплитуду и частоту дискретизации.

+0

К сожалению, это тоже мне не помогло :( – Farid

0

Наиболее удобны для речи: использовать двойную FFT, то есть Кепстра, FFT (logfft (образец))), чтобы найти голос шаг

, но это не причина, по которой я отправляю здесь .. google по-прежнему ссылается здесь на другой вопрос: «Как получить частоту дискретизации» файла .WAV.

Это легко. Для записи с NAudio, этот вопрос был дан ответ Марк Хит в 2014 году .. это моя версия, разделите byterate размером выборки в байтах, чтобы получить частоту дискретизации,

using (var reader = new WaveFileReader(fileName)) 
      { 
       byterate = reader.WaveFormat.AverageBytesPerSecond; 

      } 

How to read Bit rate of .wav file in C#