AI models shared registry + Code cleanup + Better async handling + Some fixes, etc
This commit is contained in:
parent
a8ff3442ff
commit
520b98143f
62 changed files with 1683 additions and 1239 deletions
|
|
@ -1,115 +1,17 @@
|
|||
use jarvis_core::{db, DB};
|
||||
use crate::AppState;
|
||||
|
||||
#[tauri::command]
|
||||
pub fn db_read(state: tauri::State<'_, AppState>, key: &str) -> String {
|
||||
let settings = state.db.read();
|
||||
|
||||
match key {
|
||||
"selected_microphone" => settings.microphone.to_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),
|
||||
"vad" => format!("{:?}", settings.vad),
|
||||
"gain_normalizer" => settings.gain_normalizer.to_string(),
|
||||
"language" => settings.language.to_string(),
|
||||
"api_key__picovoice" => settings.api_keys.picovoice.clone(),
|
||||
"api_key__openai" => settings.api_keys.openai.clone(),
|
||||
_ => String::new(),
|
||||
}
|
||||
state.settings.read(key).unwrap_or_default()
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn db_write(state: tauri::State<'_, AppState>, key: &str, val: &str) -> bool {
|
||||
let snapshot = {
|
||||
let mut settings = state.db.write();
|
||||
|
||||
match key {
|
||||
"selected_microphone" => {
|
||||
if let Ok(v) = val.parse::<i32>() {
|
||||
// info!("MICROPHONE changed: {}", v);
|
||||
settings.microphone = v;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
"assistant_voice" => {
|
||||
settings.voice = val.to_string();
|
||||
}
|
||||
"selected_wake_word_engine" => {
|
||||
match val.to_lowercase().as_str() {
|
||||
"rustpotter" => settings.wake_word_engine = jarvis_core::config::structs::WakeWordEngine::Rustpotter,
|
||||
"vosk" => settings.wake_word_engine = jarvis_core::config::structs::WakeWordEngine::Vosk,
|
||||
"porcupine" => settings.wake_word_engine = jarvis_core::config::structs::WakeWordEngine::Porcupine,
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
"selected_intent_recognition_engine" => {
|
||||
match val.to_lowercase().as_str() {
|
||||
"intentclassifier" => settings.intent_recognition_engine = jarvis_core::config::structs::IntentRecognitionEngine::IntentClassifier,
|
||||
"embeddingclassifier" => settings.intent_recognition_engine = jarvis_core::config::structs::IntentRecognitionEngine::EmbeddingClassifier,
|
||||
_ => 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();
|
||||
}
|
||||
"noise_suppression" => {
|
||||
match val.to_lowercase().as_str() {
|
||||
"none" => settings.noise_suppression = jarvis_core::config::structs::NoiseSuppressionBackend::None,
|
||||
"nnnoiseless" => settings.noise_suppression = jarvis_core::config::structs::NoiseSuppressionBackend::Nnnoiseless,
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
"vad" => {
|
||||
match val.to_lowercase().as_str() {
|
||||
"none" => settings.vad = jarvis_core::config::structs::VadBackend::None,
|
||||
"energy" => settings.vad = jarvis_core::config::structs::VadBackend::Energy,
|
||||
"nnnoiseless" => settings.vad = jarvis_core::config::structs::VadBackend::Nnnoiseless,
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
"gain_normalizer" => {
|
||||
match val.to_lowercase().as_str() {
|
||||
"true" => settings.gain_normalizer = true,
|
||||
"false" => settings.gain_normalizer = false,
|
||||
_ => return false,
|
||||
}
|
||||
}
|
||||
"language" => {
|
||||
settings.language = val.to_string();
|
||||
}
|
||||
"api_key__picovoice" => {
|
||||
settings.api_keys.picovoice = val.to_string();
|
||||
}
|
||||
"api_key__openai" => {
|
||||
settings.api_keys.openai = val.to_string();
|
||||
}
|
||||
_ => return false,
|
||||
match state.settings.write(key, val) {
|
||||
Ok(()) => true,
|
||||
Err(e) => {
|
||||
log::warn!("db_write('{}', '{}'): {}", key, val, e);
|
||||
false
|
||||
}
|
||||
|
||||
settings.clone()
|
||||
};
|
||||
|
||||
// save to disk
|
||||
if let Err(e) = db::save_settings(&snapshot) {
|
||||
info!("SETTINGS NOT SAVED");
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,20 +25,12 @@ pub fn get_current_language() -> String {
|
|||
pub fn set_language(state: tauri::State<'_, AppState>, lang: &str) -> HashMap<String, String> {
|
||||
// update i18n
|
||||
i18n::set_language(lang);
|
||||
|
||||
// also save to db
|
||||
{
|
||||
let mut settings = state.db.write();
|
||||
settings.language = lang.to_string();
|
||||
|
||||
if let Err(e) = state.settings.write("language", lang) {
|
||||
log::error!("Failed to save language setting: {}", e);
|
||||
}
|
||||
|
||||
// save to disk
|
||||
let snapshot = state.db.read().clone();
|
||||
if let Err(e) = jarvis_core::db::save_settings(&snapshot) {
|
||||
log::error!("Failed to save settings: {}", e);
|
||||
}
|
||||
|
||||
// return new translations
|
||||
|
||||
// return new translations
|
||||
i18n::get_all_translations()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue