#pragma once #include "engine/models/vevo2/assets.h" #include "engine/models/vevo2/types.h" #include #include #include #include namespace engine::assets { enum class TensorStorageType; } namespace engine::core { class ExecutionContext; } namespace engine::models::vevo2 { struct Vevo2VocosWeights; struct Vevo2VocosGraph; class Vevo2VocosRuntime final { public: Vevo2VocosRuntime( const Vevo2Assets & assets, engine::core::ExecutionContext & execution_context, size_t weight_context_bytes, size_t graph_context_bytes, engine::assets::TensorStorageType matmul_weight_storage_type, engine::assets::TensorStorageType conv_weight_storage_type); ~Vevo2VocosRuntime(); runtime::AudioBuffer decode(const Vevo2MelSequence & mel) const; private: Vevo2VocoderConfig config_; engine::core::ExecutionContext & execution_context_; size_t graph_context_bytes_ = 0; std::shared_ptr weight_source_; std::shared_ptr weights_; mutable std::unique_ptr graph_; std::string name_; }; } // namespace engine::models::vevo2