#pragma once #include "engine/models/dots_tts/assets.h" #include "engine/framework/sampling/torch_random.h" #include #include #include #include namespace engine::models::dots_tts { struct DotsLatentMatrix { std::vector values; int64_t frames = 0; int64_t dims = 0; }; class DotsLatentCodec { public: explicit DotsLatentCodec(std::shared_ptr assets); DotsLatentMatrix sample_from_encoder_latents( const std::vector & latents, int64_t channels, int64_t frames, uint64_t seed, uint64_t offset_blocks, const engine::sampling::TorchCudaSamplingPolicy & sampling_policy) const; DotsLatentMatrix normalize(const DotsLatentMatrix & input) const; DotsLatentMatrix denormalize(const DotsLatentMatrix & input) const; private: std::shared_ptr assets_; std::vector mean_; std::vector std_; }; } // namespace engine::models::dots_tts