// sherpa-onnx/csrc/piper-phonemize-lexicon.h // // Copyright (c) 2022-2023 Xiaomi Corporation #ifndef SHERPA_ONNX_CSRC_PIPER_PHONEMIZE_LEXICON_H_ #define SHERPA_ONNX_CSRC_PIPER_PHONEMIZE_LEXICON_H_ #include #include #include #include "sherpa-onnx/csrc/offline-tts-frontend.h" #include "sherpa-onnx/csrc/offline-tts-kokoro-model-meta-data.h" #include "sherpa-onnx/csrc/offline-tts-matcha-model-meta-data.h" #include "sherpa-onnx/csrc/offline-tts-vits-model-meta-data.h" namespace sherpa_onnx { class PiperPhonemizeLexicon : public OfflineTtsFrontend { public: PiperPhonemizeLexicon(const std::string &tokens, const std::string &data_dir, const OfflineTtsVitsModelMetaData &vits_meta_data); PiperPhonemizeLexicon(const std::string &tokens, const std::string &data_dir, const OfflineTtsMatchaModelMetaData &matcha_meta_data); PiperPhonemizeLexicon(const std::string &tokens, const std::string &data_dir, const OfflineTtsKokoroModelMetaData &kokoro_meta_data); template PiperPhonemizeLexicon(Manager *mgr, const std::string &tokens, const std::string &data_dir, const OfflineTtsVitsModelMetaData &vits_meta_data); template PiperPhonemizeLexicon(Manager *mgr, const std::string &tokens, const std::string &data_dir, const OfflineTtsMatchaModelMetaData &matcha_meta_data); template PiperPhonemizeLexicon(Manager *mgr, const std::string &tokens, const std::string &data_dir, const OfflineTtsKokoroModelMetaData &kokoro_meta_data); std::vector ConvertTextToTokenIds( const std::string &text, const std::string &voice = "") const override; private: std::vector ConvertTextToTokenIdsVits( const std::string &text, const std::string &voice = "") const; std::vector ConvertTextToTokenIdsMatcha( const std::string &text, const std::string &voice = "") const; std::vector ConvertTextToTokenIdsKokoro( const std::string &text, const std::string &voice = "") const; private: // map unicode codepoint to an integer ID std::unordered_map token2id_; OfflineTtsVitsModelMetaData vits_meta_data_; OfflineTtsMatchaModelMetaData matcha_meta_data_; OfflineTtsKokoroModelMetaData kokoro_meta_data_; bool is_matcha_ = false; bool is_kokoro_ = false; }; } // namespace sherpa_onnx #endif // SHERPA_ONNX_CSRC_PIPER_PHONEMIZE_LEXICON_H_