vosk model selection in GUI

This commit is contained in:
Priler 2026-01-05 03:38:04 +05:00
parent 36acacf259
commit cab53abcbe
14 changed files with 323 additions and 40 deletions

View file

@ -10,6 +10,7 @@ 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_vosk_model" => settings.vosk_model.clone(),
"speech_to_text_engine" => format!("{:?}", settings.speech_to_text_engine),
"api_key__picovoice" => settings.api_keys.picovoice.clone(),
"api_key__openai" => settings.api_keys.openai.clone(),
@ -49,6 +50,9 @@ pub fn db_write(state: tauri::State<'_, AppState>, key: &str, val: &str) -> bool
_ => return false,
}
}
"selected_vosk_model" => {
settings.vosk_model = val.to_string();
}
"api_key__picovoice" => {
settings.api_keys.picovoice = val.to_string();
}

View file

@ -0,0 +1,21 @@
use jarvis_core::{vosk_models, DB};
use serde::Serialize;
#[derive(Serialize)]
pub struct VoskModel {
pub name: String,
pub language: String,
pub size: String,
}
#[tauri::command]
pub fn list_vosk_models() -> Vec<VoskModel> {
vosk_models::scan_vosk_models()
.into_iter()
.map(|m| VoskModel {
name: m.name,
language: m.language,
size: m.size,
})
.collect()
}