#pragma once #include "engine/framework/tokenizers/sentencepiece.h" #include "engine/models/stable_audio/assets.h" #include "engine/models/stable_audio/types.h" #include #include #include #include namespace engine::models::stable_audio { struct StableAudioTokenBatch { int64_t batch = 0; int64_t tokens = 0; std::vector input_ids; std::vector attention_mask; }; struct StableAudioConditioningBatch { StableAudioTokenBatch prompt_tokens; StableAudioTokenBatch negative_prompt_tokens; std::vector normalized_seconds; std::vector seconds_fourier_features; }; class StableAudioConditionerInputs { public: explicit StableAudioConditionerInputs(std::shared_ptr assets); StableAudioConditioningBatch build(const StableAudioRequest & request) const; private: StableAudioTokenBatch tokenize_prompts(const std::vector & prompts) const; std::vector normalized_seconds(const std::vector & durations) const; std::vector seconds_fourier_features(const std::vector & normalized) const; std::shared_ptr assets_; std::vector t5_pieces_; }; } // namespace engine::models::stable_audio