diff --git a/crates/jarvis-app/src/main.rs b/crates/jarvis-app/src/main.rs index e728283..9f26262 100644 --- a/crates/jarvis-app/src/main.rs +++ b/crates/jarvis-app/src/main.rs @@ -99,8 +99,8 @@ fn main() -> Result<(), String> { // init intent-recognition engine let rt = tokio::runtime::Runtime::new().expect("Failed to create tokio runtime"); rt.block_on(async { - if intent::init(COMMANDS_LIST.get().unwrap()).await.is_err() { - error!("Failed to initialize intent classifier"); + if let Err(e) = intent::init(COMMANDS_LIST.get().unwrap()).await { + error!("Failed to initialize intent classifier: {}", e); app::close(1); } }); diff --git a/crates/jarvis-core/src/config.rs b/crates/jarvis-core/src/config.rs index e1d21f3..4b88b1e 100644 --- a/crates/jarvis-core/src/config.rs +++ b/crates/jarvis-core/src/config.rs @@ -157,7 +157,7 @@ pub const VOSK_SPEECH_PARTIAL_WORDS: bool = false; pub const INTENT_CLASSIFIER_MIN_CONFIDENCE: f64 = 0.75; // embedding classifier -pub const EMBEDDING_MIN_CONFIDENCE: f64 = 0.60; +pub const EMBEDDING_MIN_CONFIDENCE: f64 = 0.70; // AUDIO PROCESSING DEFAULTS pub const DEFAULT_NOISE_SUPPRESSION: NoiseSuppressionBackend = NoiseSuppressionBackend::None; diff --git a/crates/jarvis-core/src/intent.rs b/crates/jarvis-core/src/intent.rs index 4925617..041aca1 100644 --- a/crates/jarvis-core/src/intent.rs +++ b/crates/jarvis-core/src/intent.rs @@ -7,6 +7,8 @@ use crate::{JCommandsList, commands::JCommand, config}; use once_cell::sync::OnceCell; use crate::config::structs::IntentRecognitionEngine; +use crate::DB; + static IRE_TYPE: OnceCell = OnceCell::new(); pub async fn init(commands: &Vec) -> Result<(), String> { @@ -15,14 +17,19 @@ pub async fn init(commands: &Vec) -> Result<(), String> { } // already initialized // set default ire type - IRE_TYPE.set(config::DEFAULT_INTENT_RECOGNITION_ENGINE).unwrap(); + // IRE_TYPE.set(config::DEFAULT_INTENT_RECOGNITION_ENGINE).unwrap(); + + // store current ire type + IRE_TYPE + .set(DB.get().unwrap().read().intent_recognition_engine) + .unwrap(); // load given recorder match IRE_TYPE.get().unwrap() { IntentRecognitionEngine::IntentClassifier => { - info!("Initializing IRE backend."); + info!("Initializing IntentClassifier IRE backend."); intentclassifier::init(&commands).await?; - info!("IRE backend initialized."); + info!("IntentClassifier IRE backend initialized."); }, IntentRecognitionEngine::EmbeddingClassifier => { info!("Initializing EmbeddingClassifier IRE backend."); diff --git a/crates/jarvis-core/src/intent/embeddingclassifier.rs b/crates/jarvis-core/src/intent/embeddingclassifier.rs index d71fc87..a4f49c7 100644 --- a/crates/jarvis-core/src/intent/embeddingclassifier.rs +++ b/crates/jarvis-core/src/intent/embeddingclassifier.rs @@ -48,6 +48,8 @@ pub fn init(commands: &[JCommandsList]) -> Result<(), String> { } } + // info!("{}", model_dir.display()); + let user_model = UserDefinedEmbeddingModel { onnx_file: std::fs::read(model_dir.join("model.onnx")) .map_err(|e| format!("Failed to read model.onnx: {}", e))?, @@ -194,6 +196,8 @@ pub fn classify(text: &str) -> Result<(String, f64), String> { } } + debug!("Embedding classify: '{}' -> '{}' ({:.2}%)", text, best_id, best_score * 100.0); + Ok((best_id, best_score)) } diff --git a/resources/models/paraphrase-multilingual-MiniLM-L12-v2-onnx-Q/model_optimized.onnx b/resources/models/paraphrase-multilingual-MiniLM-L12-v2-onnx-Q/model.onnx similarity index 100% rename from resources/models/paraphrase-multilingual-MiniLM-L12-v2-onnx-Q/model_optimized.onnx rename to resources/models/paraphrase-multilingual-MiniLM-L12-v2-onnx-Q/model.onnx