voice_audio_multi/include/engine/models/demucs/frontend.h
Fabio c36510c21e
Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

48 lines
1.3 KiB
C++

#pragma once
#include "engine/models/demucs/assets.h"
#include <complex>
#include <cstddef>
#include <cstdint>
#include <vector>
namespace engine::models::demucs {
class HTDemucsFrontend {
public:
HTDemucsFrontend(const HTDemucsConfig & config, size_t fft_threads);
void prepare_chunk(std::vector<float> & chunk_planar);
const std::vector<float> & freq_input() const noexcept;
const std::vector<float> & time_input() const noexcept;
const std::vector<float> & stft_window() const noexcept;
int64_t input_samples() const noexcept;
float freq_mean() const noexcept;
float freq_std() const noexcept;
float time_mean() const noexcept;
float time_std() const noexcept;
private:
HTDemucsConfig config_;
size_t fft_threads_ = 1;
int64_t input_samples_ = 0;
int64_t padded_samples_ = 0;
int64_t stft_full_frames_ = 0;
std::vector<float> stft_window_;
std::vector<float> padded_;
std::vector<int32_t> pad_indices_;
std::vector<float> stft_framed_;
std::vector<std::complex<float>> stft_spectrum_;
std::vector<int32_t> stft_frame_indices_;
std::vector<float> freq_input_;
std::vector<float> * time_input_ = nullptr;
float freq_mean_ = 0.0f;
float freq_std_ = 1.0f;
float time_mean_ = 0.0f;
float time_std_ = 1.0f;
};
} // namespace engine::models::demucs