diff --git a/src-tauri/app.db.temp.1682532589 b/src-tauri/app.db.temp.1682532589 deleted file mode 100644 index 330cf05..0000000 --- a/src-tauri/app.db.temp.1682532589 +++ /dev/null @@ -1 +0,0 @@ -[{"assistant_voice":"\"jarvis-remake\"","selected_microphone":"\"0\"","api_key__picovoice":"\"Hl7tfFyDT+S6fLhcT2nngK2qXsbhAwMsrVVp0Y9G0A2IfLlsPTm9eg==\"","api_key__openai":"\"\""},{}] \ No newline at end of file diff --git a/src-tauri/commands/browser/ahk/Run browser.ahk b/src-tauri/commands/browser/ahk/Run browser.ahk index ffbd042..5f4d141 100644 --- a/src-tauri/commands/browser/ahk/Run browser.ahk +++ b/src-tauri/commands/browser/ahk/Run browser.ahk @@ -3,4 +3,11 @@ SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. -Run C:/Program Files (x86)/Google/Chrome/Application/chrome.exe \ No newline at end of file +RegRead, BrowserKeyName, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice, Progid +RegRead, BrowserFullCommand, HKEY_CLASSES_ROOT, %BrowserKeyName%\shell\open\command +StringGetPos, pos, BrowserFullCommand, ",,1 +pos := --pos +StringMid, BrowserPathandEXE, BrowserFullCommand, 2, %pos% +Run, % BrowserPathandEXE + + diff --git a/src-tauri/commands/browser/ahk/Run browser.exe b/src-tauri/commands/browser/ahk/Run browser.exe index 5b6c6ff..7bf6453 100644 Binary files a/src-tauri/commands/browser/ahk/Run browser.exe and b/src-tauri/commands/browser/ahk/Run browser.exe differ diff --git a/src-tauri/libpv_recorder.dll b/src-tauri/libpv_recorder.dll new file mode 100644 index 0000000..c3f4dbc Binary files /dev/null and b/src-tauri/libpv_recorder.dll differ diff --git a/src-tauri/picovoice/keywords/alexa_windows.ppn b/src-tauri/picovoice/keywords/alexa_windows.ppn new file mode 100644 index 0000000..5e58ac9 Binary files /dev/null and b/src-tauri/picovoice/keywords/alexa_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/americano_windows.ppn b/src-tauri/picovoice/keywords/americano_windows.ppn new file mode 100644 index 0000000..160e7b2 Binary files /dev/null and b/src-tauri/picovoice/keywords/americano_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/blueberry_windows.ppn b/src-tauri/picovoice/keywords/blueberry_windows.ppn new file mode 100644 index 0000000..4ff1c32 Binary files /dev/null and b/src-tauri/picovoice/keywords/blueberry_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/bumblebee_windows.ppn b/src-tauri/picovoice/keywords/bumblebee_windows.ppn new file mode 100644 index 0000000..e25665f Binary files /dev/null and b/src-tauri/picovoice/keywords/bumblebee_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/computer_windows.ppn b/src-tauri/picovoice/keywords/computer_windows.ppn new file mode 100644 index 0000000..24bc79e Binary files /dev/null and b/src-tauri/picovoice/keywords/computer_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/grapefruit_windows.ppn b/src-tauri/picovoice/keywords/grapefruit_windows.ppn new file mode 100644 index 0000000..3c11353 Binary files /dev/null and b/src-tauri/picovoice/keywords/grapefruit_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/grasshopper_windows.ppn b/src-tauri/picovoice/keywords/grasshopper_windows.ppn new file mode 100644 index 0000000..21720c1 Binary files /dev/null and b/src-tauri/picovoice/keywords/grasshopper_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/hey barista_windows.ppn b/src-tauri/picovoice/keywords/hey barista_windows.ppn new file mode 100644 index 0000000..fc548d1 Binary files /dev/null and b/src-tauri/picovoice/keywords/hey barista_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/hey google_windows.ppn b/src-tauri/picovoice/keywords/hey google_windows.ppn new file mode 100644 index 0000000..73868a7 Binary files /dev/null and b/src-tauri/picovoice/keywords/hey google_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/hey siri_windows.ppn b/src-tauri/picovoice/keywords/hey siri_windows.ppn new file mode 100644 index 0000000..73c660f Binary files /dev/null and b/src-tauri/picovoice/keywords/hey siri_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/jarvis_windows.ppn b/src-tauri/picovoice/keywords/jarvis_windows.ppn new file mode 100644 index 0000000..6afe976 Binary files /dev/null and b/src-tauri/picovoice/keywords/jarvis_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/ok google_windows.ppn b/src-tauri/picovoice/keywords/ok google_windows.ppn new file mode 100644 index 0000000..01d225f Binary files /dev/null and b/src-tauri/picovoice/keywords/ok google_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/pico clock_windows.ppn b/src-tauri/picovoice/keywords/pico clock_windows.ppn new file mode 100644 index 0000000..bd36be5 Binary files /dev/null and b/src-tauri/picovoice/keywords/pico clock_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/picovoice_windows.ppn b/src-tauri/picovoice/keywords/picovoice_windows.ppn new file mode 100644 index 0000000..8ce42f3 Binary files /dev/null and b/src-tauri/picovoice/keywords/picovoice_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/porcupine_windows.ppn b/src-tauri/picovoice/keywords/porcupine_windows.ppn new file mode 100644 index 0000000..ab1bce5 Binary files /dev/null and b/src-tauri/picovoice/keywords/porcupine_windows.ppn differ diff --git a/src-tauri/picovoice/keywords/terminator_windows.ppn b/src-tauri/picovoice/keywords/terminator_windows.ppn new file mode 100644 index 0000000..598f00c Binary files /dev/null and b/src-tauri/picovoice/keywords/terminator_windows.ppn differ diff --git a/src-tauri/picovoice/lib/android/arm64-v8a/libpv_porcupine.so b/src-tauri/picovoice/lib/android/arm64-v8a/libpv_porcupine.so new file mode 100644 index 0000000..05eeaf4 Binary files /dev/null and b/src-tauri/picovoice/lib/android/arm64-v8a/libpv_porcupine.so differ diff --git a/src-tauri/picovoice/lib/android/armeabi-v7a/libpv_porcupine.so b/src-tauri/picovoice/lib/android/armeabi-v7a/libpv_porcupine.so new file mode 100644 index 0000000..a680d96 Binary files /dev/null and b/src-tauri/picovoice/lib/android/armeabi-v7a/libpv_porcupine.so differ diff --git a/src-tauri/picovoice/lib/android/x86/libpv_porcupine.so b/src-tauri/picovoice/lib/android/x86/libpv_porcupine.so new file mode 100644 index 0000000..a6f97b7 Binary files /dev/null and b/src-tauri/picovoice/lib/android/x86/libpv_porcupine.so differ diff --git a/src-tauri/picovoice/lib/android/x86_64/libpv_porcupine.so b/src-tauri/picovoice/lib/android/x86_64/libpv_porcupine.so new file mode 100644 index 0000000..46bf24c Binary files /dev/null and b/src-tauri/picovoice/lib/android/x86_64/libpv_porcupine.so differ diff --git a/src-tauri/picovoice/lib/common/porcupine_params.pv b/src-tauri/picovoice/lib/common/porcupine_params.pv new file mode 100644 index 0000000..11743f3 Binary files /dev/null and b/src-tauri/picovoice/lib/common/porcupine_params.pv differ diff --git a/src-tauri/picovoice/lib/common/porcupine_params_ru.pv b/src-tauri/picovoice/lib/common/porcupine_params_ru.pv new file mode 100644 index 0000000..fb0c733 Binary files /dev/null and b/src-tauri/picovoice/lib/common/porcupine_params_ru.pv differ diff --git a/src-tauri/picovoice/lib/linux/x86_64/libpv_porcupine.so b/src-tauri/picovoice/lib/linux/x86_64/libpv_porcupine.so new file mode 100644 index 0000000..e4243be Binary files /dev/null and b/src-tauri/picovoice/lib/linux/x86_64/libpv_porcupine.so differ diff --git a/src-tauri/picovoice/lib/linux/x86_64/libpv_recorder.so b/src-tauri/picovoice/lib/linux/x86_64/libpv_recorder.so new file mode 100644 index 0000000..65a39ec Binary files /dev/null and b/src-tauri/picovoice/lib/linux/x86_64/libpv_recorder.so differ diff --git a/src-tauri/picovoice/lib/mac/arm64/libpv_porcupine.dylib b/src-tauri/picovoice/lib/mac/arm64/libpv_porcupine.dylib new file mode 100644 index 0000000..f196f48 Binary files /dev/null and b/src-tauri/picovoice/lib/mac/arm64/libpv_porcupine.dylib differ diff --git a/src-tauri/picovoice/lib/mac/arm64/libpv_recorder.dylib b/src-tauri/picovoice/lib/mac/arm64/libpv_recorder.dylib new file mode 100644 index 0000000..82b1d4a Binary files /dev/null and b/src-tauri/picovoice/lib/mac/arm64/libpv_recorder.dylib differ diff --git a/src-tauri/picovoice/lib/mac/x86_64/libpv_porcupine.dylib b/src-tauri/picovoice/lib/mac/x86_64/libpv_porcupine.dylib new file mode 100644 index 0000000..8a1ade7 Binary files /dev/null and b/src-tauri/picovoice/lib/mac/x86_64/libpv_porcupine.dylib differ diff --git a/src-tauri/picovoice/lib/mac/x86_64/libpv_recorder.dylib b/src-tauri/picovoice/lib/mac/x86_64/libpv_recorder.dylib new file mode 100644 index 0000000..0f798bf Binary files /dev/null and b/src-tauri/picovoice/lib/mac/x86_64/libpv_recorder.dylib differ diff --git a/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll b/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll new file mode 100644 index 0000000..4d1e0ff Binary files /dev/null and b/src-tauri/picovoice/lib/windows/amd64/libpv_porcupine.dll differ diff --git a/src-tauri/picovoice/lib/windows/amd64/libpv_recorder.dll b/src-tauri/picovoice/lib/windows/amd64/libpv_recorder.dll new file mode 100644 index 0000000..c3f4dbc Binary files /dev/null and b/src-tauri/picovoice/lib/windows/amd64/libpv_recorder.dll differ diff --git a/src-tauri/src/config.rs b/src-tauri/src/config.rs index bd0b18b..0bb70b2 100644 --- a/src-tauri/src/config.rs +++ b/src-tauri/src/config.rs @@ -9,6 +9,7 @@ use std::env::current_dir; // }; pub const COMMANDS_PATH: &str = "commands/"; +pub const KEYWORDS_PATH: &str = "picovoice/keywords/"; pub const DB_FILE_NAME: &str = "app.db"; pub const APP_VERSION: Option<&str> = option_env!("CARGO_PKG_VERSION"); diff --git a/src-tauri/src/tauri_commands/db.rs b/src-tauri/src/tauri_commands/db.rs index d612ba8..8283778 100644 --- a/src-tauri/src/tauri_commands/db.rs +++ b/src-tauri/src/tauri_commands/db.rs @@ -2,11 +2,11 @@ use crate::DB; #[tauri::command] pub fn db_read(key: &str) -> String { - if let Some(value) = DB.lock().unwrap().get(key) { - value - } else { - String::from("") + if let Some(value) = DB.lock().unwrap().get::(key) { + return value } + + String::from("") } #[tauri::command] diff --git a/src-tauri/src/tauri_commands/listener.rs b/src-tauri/src/tauri_commands/listener.rs index 04c3098..0c021c9 100644 --- a/src-tauri/src/tauri_commands/listener.rs +++ b/src-tauri/src/tauri_commands/listener.rs @@ -1,6 +1,7 @@ use porcupine::{BuiltinKeywords, Porcupine, PorcupineBuilder}; use pv_recorder::RecorderBuilder; use std::sync::atomic::{AtomicBool, Ordering}; +use std::path::Path; use crate::events::Payload; use tauri::Manager; @@ -47,32 +48,39 @@ pub fn start_listening(app_handle: tauri::AppHandle) -> Result { // vars let porcupine: Porcupine; - let picovoice_api_key: String; + let mut picovoice_api_key: String = String::from(""); let selected_microphone: i32; let mut start = SystemTime::now(); // Retrieve API key from DB if let Some(pkey) = DB.lock().unwrap().get::("api_key__picovoice") { - picovoice_api_key = pkey; - } else { + if !pkey.is_empty() { + picovoice_api_key = pkey; + } + } + + if picovoice_api_key.is_empty() { return Err("Picovoice API key is not set!".into()); } // Create instance of Porcupine with the given API key - if let Ok(pinstance) = - PorcupineBuilder::new_with_keywords(picovoice_api_key, &[BuiltinKeywords::Jarvis]) - .sensitivities(&[1.0f32]) // max sensitivity possible - .init() - { - // porcupine successfully initialized with the valid API key - porcupine = pinstance; - } else { - // something went wrong - return Err( - "Porcupine error: either API key is not valid or there is no internet connection" - .into(), - ); + match PorcupineBuilder::new_with_keyword_paths(picovoice_api_key, &[Path::new(config::KEYWORDS_PATH).join("jarvis_windows.ppn")]) + .sensitivities(&[1.0f32]) // max sensitivity possible + .init() { + Ok(pinstance) => { + // porcupine successfully initialized with the valid API key + println!("Porcupine successfully initialized with the valid API key ..."); + porcupine = pinstance; + } + Err(e) => { + println!("Porcupine error: either API key is not valid or there is no internet connection"); + println!("Error details: {}", e); + return Err( + "Porcupine error: either API key is not valid or there is no internet connection" + .into(), + ); + } } // Retrieve microphone index diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 538ae59..75a28a6 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -40,10 +40,12 @@ "commands", "sound", "vosk/model_small", + "picovoice", "libvosk.dll", "libstdc++-6.dll", "libwinpthread-1.dll", - "libgcc_s_seh-1.dll" + "libgcc_s_seh-1.dll", + "libpv_recorder.dll" ] }, "security": {