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