// sherpa-onnx/csrc/offline-tts-impl.cc // // Copyright (c) 2023 Xiaomi Corporation #include "sherpa-onnx/csrc/offline-tts-impl.h" #include #include #if __ANDROID_API__ >= 9 #include "android/asset_manager.h" #include "android/asset_manager_jni.h" #endif #if __OHOS__ #include "rawfile/raw_file_manager.h" #endif #include "sherpa-onnx/csrc/offline-tts-kokoro-impl.h" #include "sherpa-onnx/csrc/offline-tts-matcha-impl.h" #include "sherpa-onnx/csrc/offline-tts-vits-impl.h" namespace sherpa_onnx { std::vector OfflineTtsImpl::AddBlank(const std::vector &x, int32_t blank_id /*= 0*/) const { // we assume the blank ID is 0 std::vector buffer(x.size() * 2 + 1, blank_id); int32_t i = 1; for (auto k : x) { buffer[i] = k; i += 2; } return buffer; } std::unique_ptr OfflineTtsImpl::Create( const OfflineTtsConfig &config) { if (!config.model.vits.model.empty()) { return std::make_unique(config); } else if (!config.model.matcha.acoustic_model.empty()) { return std::make_unique(config); } return std::make_unique(config); } template std::unique_ptr OfflineTtsImpl::Create( Manager *mgr, const OfflineTtsConfig &config) { if (!config.model.vits.model.empty()) { return std::make_unique(mgr, config); } else if (!config.model.matcha.acoustic_model.empty()) { return std::make_unique(mgr, config); } return std::make_unique(mgr, config); } #if __ANDROID_API__ >= 9 template std::unique_ptr OfflineTtsImpl::Create( AAssetManager *mgr, const OfflineTtsConfig &config); #endif #if __OHOS__ template std::unique_ptr OfflineTtsImpl::Create( NativeResourceManager *mgr, const OfflineTtsConfig &config); #endif } // namespace sherpa_onnx