From 9d620e98343c720ed280f9d01cdef34bee54552f Mon Sep 17 00:00:00 2001
From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com>
Date: Wed, 13 Nov 2024 12:35:09 +0900
Subject: [PATCH] [Update] Config Page: Transcription Tab. Add
SelectedTranscriptionEngine.
---
locales/en.json | 5 ++-
.../transcription/Transcription.jsx | 32 ++++++++++++++++++-
src-ui/logics/configs/index.js | 1 +
.../useSelectedTranscriptionEngine.js | 24 ++++++++++++++
src-ui/logics/useReceiveRoutes.js | 5 +++
src-ui/store.js | 1 +
6 files changed, 64 insertions(+), 4 deletions(-)
create mode 100644 src-ui/logics/configs/transcription/useSelectedTranscriptionEngine.js
diff --git a/locales/en.json b/locales/en.json
index 56835543..f3399a70 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -203,9 +203,8 @@
"desc": "It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs.",
"error_message": "You can set a number equal to or greater than 0."
},
- "use_whisper_feature": {
- "label": "Use Whisper Model As Transcription",
- "desc": "In some languages, the accuracy of speech recognition may improve. During speech recognition usage, CPU usage increases, so please consider your PC specs before using this feature."
+ "select_transcription_engine": {
+ "label": "Select Transcription Engine"
},
"whisper_weight_type": {
"label": "Select Whisper Model",
diff --git a/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx b/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
index 162e20b9..9d11bd9f 100644
--- a/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
+++ b/src-ui/app/config_page/setting_section/setting_box/transcription/Transcription.jsx
@@ -12,6 +12,7 @@ import {
useSpeakerPhraseTimeout,
useSpeakerMaxWords,
+ useSelectedTranscriptionEngine,
useWhisperWeightTypeStatus,
useSelectedWhisperWeightType,
} from "@logics_configs";
@@ -20,6 +21,7 @@ import {
EntryContainer,
WordFilterContainer,
DownloadModelsContainer,
+ RadioButtonContainer,
} from "../_templates/Templates";
export const Transcription = () => {
@@ -27,7 +29,7 @@ export const Transcription = () => {
<>
-
+
>
);
};
@@ -233,6 +235,34 @@ const SpeakerMaxWords_Box = () => {
};
+
+const TranscriptionEngine_Container = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
+
+const TranscriptionEngine_Box = () => {
+ const { t } = useTranslation();
+ const { currentSelectedTranscriptionEngine, setSelectedTranscriptionEngine } = useSelectedTranscriptionEngine();
+
+ return (
+
+ );
+};
+
const WhisperWeightType_Box = () => {
const { t } = useTranslation();
const {
diff --git a/src-ui/logics/configs/index.js b/src-ui/logics/configs/index.js
index 4a3399ee..989621c2 100644
--- a/src-ui/logics/configs/index.js
+++ b/src-ui/logics/configs/index.js
@@ -31,6 +31,7 @@ export { useSpeakerRecordTimeout } from "./transcription/useSpeakerRecordTimeout
export { useSpeakerPhraseTimeout } from "./transcription/useSpeakerPhraseTimeout";
export { useSpeakerMaxWords } from "./transcription/useSpeakerMaxWords";
+export { useSelectedTranscriptionEngine } from "./transcription/useSelectedTranscriptionEngine";
export { useWhisperWeightTypeStatus } from "./transcription/useWhisperWeightTypeStatus";
export { useSelectedWhisperWeightType } from "./transcription/useSelectedWhisperWeightType";
diff --git a/src-ui/logics/configs/transcription/useSelectedTranscriptionEngine.js b/src-ui/logics/configs/transcription/useSelectedTranscriptionEngine.js
new file mode 100644
index 00000000..43f0b6ab
--- /dev/null
+++ b/src-ui/logics/configs/transcription/useSelectedTranscriptionEngine.js
@@ -0,0 +1,24 @@
+import { useStore_SelectedTranscriptionEngine } from "@store";
+import { useStdoutToPython } from "@logics/useStdoutToPython";
+
+export const useSelectedTranscriptionEngine = () => {
+ const { asyncStdoutToPython } = useStdoutToPython();
+ const { currentSelectedTranscriptionEngine, updateSelectedTranscriptionEngine, pendingSelectedTranscriptionEngine } = useStore_SelectedTranscriptionEngine();
+
+ const getSelectedTranscriptionEngine = () => {
+ pendingSelectedTranscriptionEngine();
+ asyncStdoutToPython("/get/data/selected_transcription_engine");
+ };
+
+ const setSelectedTranscriptionEngine = (selected_transcription_engine) => {
+ pendingSelectedTranscriptionEngine();
+ asyncStdoutToPython("/set/data/selected_transcription_engine", selected_transcription_engine);
+ };
+
+ return {
+ currentSelectedTranscriptionEngine,
+ getSelectedTranscriptionEngine,
+ updateSelectedTranscriptionEngine,
+ setSelectedTranscriptionEngine,
+ };
+};
\ No newline at end of file
diff --git a/src-ui/logics/useReceiveRoutes.js b/src-ui/logics/useReceiveRoutes.js
index c194062e..6f1a4df4 100644
--- a/src-ui/logics/useReceiveRoutes.js
+++ b/src-ui/logics/useReceiveRoutes.js
@@ -48,6 +48,7 @@ import {
useDeepLAuthKey,
useCTranslate2WeightTypeStatus,
useSelectedCTranslate2WeightType,
+ useSelectedTranscriptionEngine,
useSelectedWhisperWeightType,
useWhisperWeightTypeStatus,
useOverlaySettings,
@@ -129,6 +130,7 @@ export const useReceiveRoutes = () => {
downloadedCTranslate2WeightType,
} = useCTranslate2WeightTypeStatus();
+ const { updateSelectedTranscriptionEngine } = useSelectedTranscriptionEngine();
const { updateSelectedWhisperWeightType } = useSelectedWhisperWeightType();
const {
updateDownloadedWhisperWeightTypeStatus,
@@ -351,6 +353,9 @@ export const useReceiveRoutes = () => {
"/get/data/speaker_max_phrases": updateSpeakerMaxWords,
"/set/data/speaker_max_phrases": updateSpeakerMaxWords,
+ "/get/data/selected_transcription_engine": updateSelectedTranscriptionEngine,
+ "/set/data/selected_transcription_engine": updateSelectedTranscriptionEngine,
+
"/get/data/whisper_weight_type": updateSelectedWhisperWeightType,
"/set/data/whisper_weight_type": updateSelectedWhisperWeightType,
diff --git a/src-ui/store.js b/src-ui/store.js
index 84d364f3..4fd682fc 100644
--- a/src-ui/store.js
+++ b/src-ui/store.js
@@ -201,6 +201,7 @@ export const { atomInstance: Atom_SpeakerMaxWords, useHook: useStore_SpeakerMaxW
export const { atomInstance: Atom_SelectedWhisperWeightType, useHook: useStore_SelectedWhisperWeightType } = createAtomWithHook("", "SelectedWhisperWeightType");
export const { atomInstance: Atom_WhisperWeightTypeStatus, useHook: useStore_WhisperWeightTypeStatus } = createAtomWithHook(whisper_weight_type_status, "WhisperWeightTypeStatus");
+export const { atomInstance: Atom_SelectedTranscriptionEngine, useHook: useStore_SelectedTranscriptionEngine } = createAtomWithHook(whisper_weight_type_status, "SelectedTranscriptionEngine");
// VR