use std::path::Path;
use crate::inference::{ExecutionMode, ModelLoadError, ensure_ort_ready};
use super::{EmbeddingModel, multi_mask_model_path, split_fbank_model_path, split_tail_model_path};
mod sessions;
use sessions::LoadedSessions;
impl EmbeddingModel {
pub(super) fn split_backend_available(model_path: &Path) -> bool {
let split_fbank_path = split_fbank_model_path(model_path);
let split_tail_path = split_tail_model_path(model_path, 1);
let has_multi_mask = multi_mask_model_path(model_path, 1).is_some_and(|path| path.exists());
split_fbank_path.exists() && (split_tail_path.exists() || has_multi_mask)
}
pub fn with_mode_and_config(
model_path: impl AsRef<Path>,
mode: ExecutionMode,
config: &crate::pipeline::RuntimeConfig,
) -> Result<Self, ModelLoadError> {
mode.validate()?;
ensure_ort_ready()?;
let model_path = model_path.as_ref();
LoadedSessions::load(model_path, mode, config)?.into_model(model_path, mode)
}
}