voice_audio_multi/include/engine/community_models/inflect_v2/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

43 lines
1.2 KiB
C++

#pragma once
#include <cstdint>
#include <filesystem>
#include <memory>
#include <string>
#include <vector>
namespace engine::models::inflect_v2 {
struct InflectV2FrontendOutput {
std::string normalized_text;
std::string phoneme_text;
std::vector<int32_t> token_ids;
};
class InflectV2Frontend {
public:
InflectV2Frontend(
std::filesystem::path espeak_library_path = {},
std::filesystem::path espeak_data_path = {});
~InflectV2Frontend();
InflectV2Frontend(InflectV2Frontend &&) noexcept;
InflectV2Frontend & operator=(InflectV2Frontend &&) noexcept;
InflectV2Frontend(const InflectV2Frontend &) = delete;
InflectV2Frontend & operator=(const InflectV2Frontend &) = delete;
InflectV2FrontendOutput encode(const std::string & text) const;
static std::string normalize(const std::string & text);
static std::vector<int32_t> tokens_from_phonemes(
const std::string & phoneme_text);
static std::vector<std::string> split_text(
const std::string & text,
int64_t limit = 280);
static double boundary_pause_seconds(const std::string & chunk);
private:
struct State;
std::unique_ptr<State> state_;
};
} // namespace engine::models::inflect_v2