#pragma once #include "engine/models/omnivoice/assets.h" #include "engine/models/omnivoice/tokenizer_text.h" #include "engine/models/omnivoice/types.h" #include #include #include #include namespace engine::models::omnivoice { class OmniVoicePromptBuilder { public: OmniVoicePromptBuilder(std::shared_ptr assets, const OmniVoiceTextTokenizer & tokenizer); OmniVoicePrompt build(const OmniVoiceRequest & request) const; int64_t frame_rate() const; int64_t estimate_target_tokens( std::string_view text, const std::optional & ref_text, const std::optional & ref_audio_tokens, float speed) const; std::vector chunk_text_punctuation( std::string_view text, int64_t chunk_len, std::optional min_chunk_len = 3) const; private: std::shared_ptr assets_; const OmniVoiceTextTokenizer & tokenizer_; }; } // namespace engine::models::omnivoice