[Update] Config Page: Transcription Tab. Add Whisper Weight Type Selector. Downloadable.
This commit is contained in:
@@ -10,11 +10,15 @@ import {
|
||||
useSpeakerRecordTimeout,
|
||||
useSpeakerPhraseTimeout,
|
||||
useSpeakerMaxWords,
|
||||
|
||||
useWhisperWeightTypeStatus,
|
||||
useSelectedWhisperWeightType,
|
||||
} from "@logics_configs";
|
||||
|
||||
import {
|
||||
EntryContainer,
|
||||
WordFilterContainer,
|
||||
DownloadModelsContainer,
|
||||
} from "../_templates/Templates";
|
||||
|
||||
export const Transcription = () => {
|
||||
@@ -22,6 +26,7 @@ export const Transcription = () => {
|
||||
<>
|
||||
<Mic_Container />
|
||||
<Speaker_Container />
|
||||
<WhisperWeightType_Box />
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -225,3 +230,40 @@ const SpeakerMaxWords_Box = () => {
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
const WhisperWeightType_Box = () => {
|
||||
const { t } = useTranslation();
|
||||
const {
|
||||
currentWhisperWeightTypeStatus,
|
||||
pendingWhisperWeightType,
|
||||
downloadWhisperWeight,
|
||||
} = useWhisperWeightTypeStatus();
|
||||
const { currentSelectedWhisperWeightType, setSelectedWhisperWeightType } = useSelectedWhisperWeightType();
|
||||
|
||||
const selectFunction = (id) => {
|
||||
setSelectedWhisperWeightType(id);
|
||||
};
|
||||
|
||||
const downloadStartFunction = (id) => {
|
||||
pendingWhisperWeightType(id);
|
||||
downloadWhisperWeight(id);
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<DownloadModelsContainer
|
||||
label={t("config_page.whisper_weight_type.label")}
|
||||
desc={t(
|
||||
"config_page.whisper_weight_type.desc",
|
||||
{translator: t("main_page.translator")}
|
||||
)}
|
||||
name="whisper_weight_type"
|
||||
options={currentWhisperWeightTypeStatus.data}
|
||||
checked_variable={currentSelectedWhisperWeightType}
|
||||
selectFunction={selectFunction}
|
||||
downloadStartFunction={downloadStartFunction}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -31,8 +31,11 @@ export { useSpeakerRecordTimeout } from "./transcription/useSpeakerRecordTimeout
|
||||
export { useSpeakerPhraseTimeout } from "./transcription/useSpeakerPhraseTimeout";
|
||||
export { useSpeakerMaxWords } from "./transcription/useSpeakerMaxWords";
|
||||
|
||||
export { useCTranslate2WeightTypeStatus } from "./translation/useCTranslate2WeightTypeStatus";
|
||||
export { useWhisperWeightTypeStatus } from "./transcription/useWhisperWeightTypeStatus";
|
||||
export { useSelectedWhisperWeightType } from "./transcription/useSelectedWhisperWeightType";
|
||||
|
||||
export { useDeepLAuthKey } from "./translation/useDeepLAuthKey";
|
||||
export { useCTranslate2WeightTypeStatus } from "./translation/useCTranslate2WeightTypeStatus";
|
||||
export { useSelectedCTranslate2WeightType } from "./translation/useSelectedCTranslate2WeightType";
|
||||
|
||||
export { useIsEnabledOverlaySmallLog } from "./vr/useIsEnabledOverlaySmallLog";
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import { useStore_SelectedWhisperWeightType } from "@store";
|
||||
import { useStdoutToPython } from "@logics/useStdoutToPython";
|
||||
|
||||
export const useSelectedWhisperWeightType = () => {
|
||||
const { asyncStdoutToPython } = useStdoutToPython();
|
||||
const { currentSelectedWhisperWeightType, updateSelectedWhisperWeightType, pendingSelectedWhisperWeightType } = useStore_SelectedWhisperWeightType();
|
||||
|
||||
const getSelectedWhisperWeightType = () => {
|
||||
pendingSelectedWhisperWeightType();
|
||||
asyncStdoutToPython("/get/data/whisper_weight_type");
|
||||
};
|
||||
|
||||
const setSelectedWhisperWeightType = (selected_whisper_weight_type) => {
|
||||
pendingSelectedWhisperWeightType();
|
||||
asyncStdoutToPython("/set/data/whisper_weight_type", selected_whisper_weight_type);
|
||||
};
|
||||
|
||||
return {
|
||||
currentSelectedWhisperWeightType,
|
||||
getSelectedWhisperWeightType,
|
||||
updateSelectedWhisperWeightType,
|
||||
setSelectedWhisperWeightType,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
import { useStore_WhisperWeightTypeStatus } from "@store";
|
||||
import { useStdoutToPython } from "@logics/useStdoutToPython";
|
||||
|
||||
export const useWhisperWeightTypeStatus = () => {
|
||||
const { asyncStdoutToPython } = useStdoutToPython();
|
||||
const { currentWhisperWeightTypeStatus, updateWhisperWeightTypeStatus, pendingWhisperWeightTypeStatus } = useStore_WhisperWeightTypeStatus();
|
||||
|
||||
const updateDownloadedWhisperWeightTypeStatus = (downloaded_weight_type_status) => {
|
||||
updateWhisperWeightTypeStatus((old_status) =>
|
||||
old_status.data.map((item) => ({
|
||||
...item,
|
||||
is_downloaded: downloaded_weight_type_status[item.id] ?? item.is_downloaded,
|
||||
}))
|
||||
);
|
||||
};
|
||||
const updateDownloadProgressWhisperWeightTypeStatus = (payload) => {
|
||||
if (payload === true) return console.error("fix me.");
|
||||
|
||||
updateWhisperWeightTypeStatus((old_status) =>
|
||||
old_status.data.map((item) =>
|
||||
payload.weight_type === item.id
|
||||
? { ...item, progress: payload.progress * 100 }
|
||||
: item
|
||||
)
|
||||
);
|
||||
};
|
||||
const pendingWhisperWeightType = (id) => {
|
||||
updateWhisperWeightTypeStatus((old_status) =>
|
||||
old_status.data.map((item) =>
|
||||
id === item.id
|
||||
? { ...item, is_pending: true }
|
||||
: item
|
||||
)
|
||||
);
|
||||
};
|
||||
const downloadedWhisperWeightType = (id) => {
|
||||
updateWhisperWeightTypeStatus((old_status) =>
|
||||
old_status.data.map((item) =>
|
||||
id === item.id
|
||||
? { ...item, is_downloaded: true, is_pending: false, progress: null }
|
||||
: item
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
const downloadWhisperWeight = (weight_type) => {
|
||||
asyncStdoutToPython("/run/download_whisper_weight", weight_type);
|
||||
};
|
||||
|
||||
return {
|
||||
currentWhisperWeightTypeStatus,
|
||||
updateWhisperWeightTypeStatus,
|
||||
|
||||
updateDownloadedWhisperWeightTypeStatus,
|
||||
updateDownloadProgressWhisperWeightTypeStatus,
|
||||
pendingWhisperWeightType,
|
||||
downloadedWhisperWeightType,
|
||||
downloadWhisperWeight,
|
||||
};
|
||||
};
|
||||
@@ -48,6 +48,8 @@ import {
|
||||
useDeepLAuthKey,
|
||||
useCTranslate2WeightTypeStatus,
|
||||
useSelectedCTranslate2WeightType,
|
||||
useSelectedWhisperWeightType,
|
||||
useWhisperWeightTypeStatus,
|
||||
useOverlaySettings,
|
||||
useIsEnabledOverlaySmallLog,
|
||||
useOverlaySmallLogSettings,
|
||||
@@ -127,6 +129,13 @@ export const useReceiveRoutes = () => {
|
||||
downloadedCTranslate2WeightType,
|
||||
} = useCTranslate2WeightTypeStatus();
|
||||
|
||||
const { updateSelectedWhisperWeightType } = useSelectedWhisperWeightType();
|
||||
const {
|
||||
updateDownloadedWhisperWeightTypeStatus,
|
||||
updateDownloadProgressWhisperWeightTypeStatus,
|
||||
downloadedWhisperWeightType,
|
||||
} = useWhisperWeightTypeStatus();
|
||||
|
||||
const { updateOverlaySettings } = useOverlaySettings();
|
||||
const { updateOverlaySmallLogSettings } = useOverlaySmallLogSettings();
|
||||
const { updateIsEnabledOverlaySmallLog } = useIsEnabledOverlaySmallLog();
|
||||
@@ -342,6 +351,14 @@ export const useReceiveRoutes = () => {
|
||||
"/get/data/speaker_max_phrases": updateSpeakerMaxWords,
|
||||
"/set/data/speaker_max_phrases": updateSpeakerMaxWords,
|
||||
|
||||
"/get/data/whisper_weight_type": updateSelectedWhisperWeightType,
|
||||
"/set/data/whisper_weight_type": updateSelectedWhisperWeightType,
|
||||
|
||||
"/get/data/selectable_whisper_weight_type_dict": updateDownloadedWhisperWeightTypeStatus,
|
||||
|
||||
"/run/download_whisper_weight": updateDownloadProgressWhisperWeightTypeStatus,
|
||||
"/run/downloaded_whisper_weight": downloadedWhisperWeightType,
|
||||
|
||||
// VR
|
||||
"/get/data/overlay_settings": updateOverlaySettings,
|
||||
"/set/data/overlay_settings": updateOverlaySettings,
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
import {
|
||||
translator_status,
|
||||
ctranslate2_weight_type_status,
|
||||
whisper_weight_type_status,
|
||||
} from "@ui_configs";
|
||||
|
||||
export const store = {
|
||||
@@ -198,6 +199,10 @@ export const { atomInstance: Atom_SpeakerRecordTimeout, useHook: useStore_Speake
|
||||
export const { atomInstance: Atom_SpeakerPhraseTimeout, useHook: useStore_SpeakerPhraseTimeout } = createAtomWithHook(0, "SpeakerPhraseTimeout");
|
||||
export const { atomInstance: Atom_SpeakerMaxWords, useHook: useStore_SpeakerMaxWords } = createAtomWithHook(0, "SpeakerMaxWords");
|
||||
|
||||
export const { atomInstance: Atom_SelectedWhisperWeightType, useHook: useStore_SelectedWhisperWeightType } = createAtomWithHook("", "SelectedWhisperWeightType");
|
||||
export const { atomInstance: Atom_WhisperWeightTypeStatus, useHook: useStore_WhisperWeightTypeStatus } = createAtomWithHook(whisper_weight_type_status, "WhisperWeightTypeStatus");
|
||||
|
||||
|
||||
// VR
|
||||
export const { atomInstance: Atom_OverlaySettings, useHook: useStore_OverlaySettings } = createAtomWithHook({
|
||||
opacity: 1.0,
|
||||
|
||||
@@ -23,4 +23,14 @@ export const ui_configs = {
|
||||
export const ctranslate2_weight_type_status = [
|
||||
{ id: "small", label: "small", is_downloaded: false, progress: null },
|
||||
{ id: "large", label: "large", is_downloaded: false, progress: null },
|
||||
];
|
||||
|
||||
export const whisper_weight_type_status = [
|
||||
{ id: "tiny", label: "tiny", is_downloaded: false, progress: null },
|
||||
{ id: "base", label: "base", is_downloaded: false, progress: null },
|
||||
{ id: "small", label: "small", is_downloaded: false, progress: null },
|
||||
{ id: "medium", label: "medium", is_downloaded: false, progress: null },
|
||||
{ id: "large-v1", label: "large-v1", is_downloaded: false, progress: null },
|
||||
{ id: "large-v2", label: "large-v2", is_downloaded: false, progress: null },
|
||||
{ id: "large-v3", label: "large-v3", is_downloaded: false, progress: null },
|
||||
];
|
||||
Reference in New Issue
Block a user