From 8229c208352534560528ca0224514d0c8c912322 Mon Sep 17 00:00:00 2001 From: Kodai Aoyama Date: Sun, 25 Aug 2024 23:39:45 +0900 Subject: [PATCH] =?UTF-8?q?Amivoice=E3=81=AE=E3=83=AD=E3=82=B0=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E8=A8=AD=E5=AE=9A=E3=82=92=E5=8F=8D=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/migrations/001.sql | 2 ++ src-tauri/src/module/sqlite.rs | 8 +++++ .../src/module/transcription_amivoice.rs | 17 +++++++-- .../molecules/SettingAmiVoiceLogging.tsx | 36 +++++++++++++++++++ src/components/organisms/SettingsMain.tsx | 6 +++- 5 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/components/molecules/SettingAmiVoiceLogging.tsx diff --git a/src-tauri/migrations/001.sql b/src-tauri/migrations/001.sql index b3227ac..371a87b 100644 --- a/src-tauri/migrations/001.sql +++ b/src-tauri/migrations/001.sql @@ -52,6 +52,8 @@ VALUES("settingModel", "gpt-4o-mini"); INSERT INTO settings(setting_name, setting_status) VALUES("settingAmiVoiceModel", "general"); INSERT INTO settings(setting_name, setting_status) +VALUES("settingAmiVoiceLogging", "off"); +INSERT INTO settings(setting_name, setting_status) VALUES("settingAILanguage", "None"); INSERT INTO settings(setting_name, setting_status) VALUES( diff --git a/src-tauri/src/module/sqlite.rs b/src-tauri/src/module/sqlite.rs index 7e5a8be..e831855 100644 --- a/src-tauri/src/module/sqlite.rs +++ b/src-tauri/src/module/sqlite.rs @@ -116,6 +116,14 @@ impl Sqlite { ); } + pub fn select_amivoice_logging(&self) -> Result { + return self.conn.query_row( + "SELECT setting_status FROM settings WHERE setting_name = \"settingAmiVoiceLogging\"", + params![], + |row| Ok(row.get_unwrap(0)), + ); + } + pub fn select_ai_resource(&self) -> Result { return self.conn.query_row( "SELECT setting_status FROM settings WHERE setting_name = \"settingResource\"", diff --git a/src-tauri/src/module/transcription_amivoice.rs b/src-tauri/src/module/transcription_amivoice.rs index 688167c..8bc2fe5 100644 --- a/src-tauri/src/module/transcription_amivoice.rs +++ b/src-tauri/src/module/transcription_amivoice.rs @@ -20,6 +20,7 @@ pub struct TranscriptionAmivoice { note_id: u64, token: String, model: String, + logging: String, } impl TranscriptionAmivoice { @@ -27,12 +28,14 @@ impl TranscriptionAmivoice { let sqlite = Sqlite::new(); let token = sqlite.select_amivoice_token().unwrap(); let model = sqlite.select_amivoice_model().unwrap(); + let logging = sqlite.select_amivoice_logging().unwrap(); Self { app_handle, sqlite, note_id, token, model, + logging, } } @@ -71,8 +74,13 @@ impl TranscriptionAmivoice { file_path: String, token: String, model: String, + logging: String, ) -> Result> { - let url = "https://acp-api.amivoice.com/v1/nolog/recognize"; + let url = if logging == "on" { + "https://acp-api.amivoice.com/v1/recognize" + } else { + "https://acp-api.amivoice.com/v1/nolog/recognize" + }; let client = Client::new(); let mut file = File::open(file_path).await?; @@ -151,7 +159,12 @@ impl TranscriptionAmivoice { fn convert(&mut self) -> Result<(), rusqlite::Error> { let vosk_speech = self.sqlite.select_vosk(self.note_id); return vosk_speech.and_then(|speech| { - let result = Self::request(speech.wav, self.token.clone(), self.model.clone()); + let result = Self::request( + speech.wav, + self.token.clone(), + self.model.clone(), + self.logging.clone(), + ); if result.is_ok() { let updated = self diff --git a/src/components/molecules/SettingAmiVoiceLogging.tsx b/src/components/molecules/SettingAmiVoiceLogging.tsx new file mode 100644 index 0000000..5b1057e --- /dev/null +++ b/src/components/molecules/SettingAmiVoiceLogging.tsx @@ -0,0 +1,36 @@ +import { ChangeEvent } from "react"; +import { useRecoilState } from 'recoil'; +import { settingKeyState } from "../../store/atoms/settingKeyState"; + +const SettingAmiVoiceLogging = (): JSX.Element => { + const settingLoggings = ["on", "off"] as const; + const modelNameMapper = (model: typeof settingLoggings[number])=>{ + switch(model){ + case "on": + return "有効" + case "off": + return "無効" + } + } + const [settingKey, setSettingKey] = useRecoilState(settingKeyState("settingAmiVoiceLogging")) + + const change = (e: ChangeEvent) => { + const settingKey = e.target.value + setSettingKey(settingKey) + } + + return ( +
+

ログ保存

+
+ +
+
+ ) +} + +export { SettingAmiVoiceLogging } diff --git a/src/components/organisms/SettingsMain.tsx b/src/components/organisms/SettingsMain.tsx index c2612ee..39015f3 100644 --- a/src/components/organisms/SettingsMain.tsx +++ b/src/components/organisms/SettingsMain.tsx @@ -22,6 +22,7 @@ import { ModelDownloadHonyaku13BButton } from "../molecules/ModelDownloadHonyaku import { ModelDownloadHonyaku13BProgress } from "../molecules/ModelDownloadHonyaku13BProgress" import { SettingProcesses } from "../molecules/SettingProcesses" import { SettingOnlines } from "../molecules/SettingOnlines" +import { SettingAmiVoiceLogging } from "../molecules/SettingAmiVoiceLogging" const SettingsMain = (): JSX.Element => { const settingLanguage = useRecoilValue(settingLanguageState); @@ -622,7 +623,10 @@ const SettingsMain = (): JSX.Element => {
- +
+ +
+ }