Получение частоты звука с микрофона

234
25 апреля 2018, 04:00

Есть задача получать частоту звука с микрофона для дальнейших преобразований на C#. Подобное уже делал на Python с numpy, но тут как то не клеится...

private void write(byte[] angles, int byte_len)
{
    Complex[] _fftBuffer = new Complex[byte_len];
    var _m = (int)Math.Log(byte_len, 2.0);
    for (var n=0; n < byte_len; n++)
    {
        var r = angles[n];
        var i = 0;
        _fftBuffer[n].X = (float)(r * FastFourierTransform.HammingWindow(n, byte_len));
        _fftBuffer[n].Y = i;
    }
    FastFourierTransform.FFT(true, _m, _fftBuffer);
    float[] fft_x = new float[_fftBuffer.Length];
    for (var i=0; i<_fftBuffer.Length; i++)
    {
        fft_x[i] = Math.Abs(_fftBuffer[i].X);
    }
    int i_peak = fft_x.ToList().IndexOf(fft_x.Max());
    for (var i = 0; i < _fftBuffer.Length; i++)
    {
        fft_x[i] = (float)Math.Log(Math.Abs(_fftBuffer[i].X));
    }
    ///var i_peak = fft_x.Max();
    var i_interp = parabolic(fft_x, i_peak);
    float freq = byte_len * i_interp / angles.Length;
    Console.WriteLine("Debug stop");
    ///this.port.Write(this.first_command, 0, 8);
    ///this.port.Write(this.get_comand(0.0f, 0.0f), 0, 32);

}
private float parabolic(float[] f, int peak)
{
    var xv = 0.5f * (f[peak-1] - f[peak+1])/(f[peak-1]-2*f[peak] + f[peak+1]) + peak;
    return xv;
}

Это что на С# сделал. Сделано так, ибо так же было на Python. В конечном итоге работает, но неправильно - частота получается одна и та же (+- пара герц), но по идее там должны быть абсолютно другие частоты - передаем данные с помощью звука.

Помогите разобраться, что в коде может быть не так?

READ ALSO
C# WinAPI Чтение содержимого SysListView32

C# WinAPI Чтение содержимого SysListView32

Данный код предназначен для получения содержимого SysListView32Значения каждого элемента в каждом столбце

284
Как включить source-map для css в приложении create-react-app?

Как включить source-map для css в приложении create-react-app?

Переношу шаблон в CRAСтили ведут себя не вполне правильно

210
При дебаге в VS-2015 asp.net mvc скрипт не сохраняется

При дебаге в VS-2015 asp.net mvc скрипт не сохраняется

Есть скрипт на jsОн подключается в представлении

201
Обработка адреса сайта

Обработка адреса сайта

Добрый вечерЕсть такое условие:

175