some fixes + gliner first implementation

This commit is contained in:
Priler 2026-02-11 07:21:50 +05:00
parent b9d5f41bbd
commit a8ff3442ff
36 changed files with 1079 additions and 73 deletions

View file

@ -85,6 +85,9 @@ fn main() {
// vosk
tauri_commands::list_vosk_models,
// gliner
tauri_commands::list_gliner_models,
// i18n
tauri_commands::get_translations,
tauri_commands::translate,

View file

@ -10,6 +10,8 @@ pub fn db_read(state: tauri::State<'_, AppState>, key: &str) -> String {
"assistant_voice" => settings.voice.clone(),
"selected_wake_word_engine" => format!("{:?}", settings.wake_word_engine),
"selected_intent_recognition_engine" => format!("{:?}", settings.intent_recognition_engine),
"selected_slot_extraction_engine" => format!("{:?}", settings.slot_extraction_engine),
"selected_gliner_model" => settings.gliner_model.clone(),
"selected_vosk_model" => settings.vosk_model.clone(),
"speech_to_text_engine" => format!("{:?}", settings.speech_to_text_engine),
"noise_suppression" => format!("{:?}", settings.noise_suppression),
@ -54,6 +56,16 @@ pub fn db_write(state: tauri::State<'_, AppState>, key: &str, val: &str) -> bool
_ => return false,
}
}
"selected_slot_extraction_engine" => {
match val.to_lowercase().as_str() {
"none" => settings.slot_extraction_engine = jarvis_core::config::structs::SlotExtractionEngine::None,
"gliner" => settings.slot_extraction_engine = jarvis_core::config::structs::SlotExtractionEngine::GLiNER,
_ => return false,
}
}
"selected_gliner_model" => {
settings.gliner_model = val.to_string();
}
"selected_vosk_model" => {
settings.vosk_model = val.to_string();
}

View file

@ -1,4 +1,4 @@
use jarvis_core::{vosk_models, DB};
use jarvis_core::{vosk_models, gliner_models};
use serde::Serialize;
#[derive(Serialize)]
@ -8,6 +8,12 @@ pub struct VoskModel {
pub size: String,
}
#[derive(Serialize)]
pub struct GlinerVariant {
pub display_name: String,
pub value: String,
}
#[tauri::command]
pub fn list_vosk_models() -> Vec<VoskModel> {
vosk_models::scan_vosk_models()
@ -18,4 +24,15 @@ pub fn list_vosk_models() -> Vec<VoskModel> {
size: m.size,
})
.collect()
}
}
#[tauri::command]
pub fn list_gliner_models() -> Vec<GlinerVariant> {
gliner_models::scan_gliner_variants()
.into_iter()
.map(|m| GlinerVariant {
display_name: m.display_name,
value: m.value,
})
.collect()
}