Рассчитать частоту по образцу БПФ?

Я использую приведенный ниже код в Unreal Engine 4 для захвата микрофонного ввода и получения результирующего БПФ.

У меня проблемы с вычислением частоты на основе этих данных.

Я попытался найти максимальную амплитуду и принять ее за частоту, но это не так.

// Additional includes:
#include "Voice.h"#include "OnlineSubsystemUtils.h"
// New class member:
TSharedPtr<class IVoiceCapture> voiceCapture;

// Initialisation:
voiceCapture = FVoiceModule::Get().CreateVoiceCapture();
voiceCapture->Start();

// Capturing samples:
uint32 bytesAvailable = 0;
EVoiceCaptureState::Type captureState = voiceCapture->GetCaptureState(bytesAvailable);
if (captureState == EVoiceCaptureState::Ok && bytesAvailable > 0)
{
uint8 buf[maxBytes];
memset(buf, 0, maxBytes);
uint32 readBytes = 0;
voiceCapture->GetVoiceData(buf, maxBytes, readBytes);

uint32 samples = readBytes / 2;
float* sampleBuf = new float[samples];

int16_t sample;
for (uint32 i = 0; i < samples; i++)
{
sample = (buf[i * 2 + 1] << 8) | buf[i * 2];
sampleBuf[i] = float(sample) / 32768.0f;
}

// Do fun stuff here

delete[] sampleBuf;
}

0

Решение

Я не вижу преобразования Фурье в вашем фрагменте кода. В любом случае, используя ДПФ N выборки со средней частотой дискретизации р, частота, соответствующая мусорному ведру К является K · R / 2N

1

Другие решения


По вопросам рекламы [email protected]