gpt4 book ai didi

c++ - 从 FFT 样本计算频率?

转载 作者:行者123 更新时间:2023-11-28 06:16:03 26 4
gpt4 key购买 nike

我在虚幻引擎 4 中使用以下代码来捕获麦克风输入并获得生成的 FFT。

我无法根据此数据计算频率。

我试过找出最大振幅并将其作为频率,但这似乎不正确。

// 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;
}

最佳答案

我没有看到要在您的代码片段中执行傅里叶变换。无论如何,使用以平均采样频率 R 给定 N 个样本的 DFT,对应于 bin k 的频率是 k· R/2N

关于c++ - 从 FFT 样本计算频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com