diff --git a/client/demo/src/001_globalHooks/100_useWebInfo.ts b/client/demo/src/001_globalHooks/100_useWebInfo.ts index 3c529053..f241bba0 100644 --- a/client/demo/src/001_globalHooks/100_useWebInfo.ts +++ b/client/demo/src/001_globalHooks/100_useWebInfo.ts @@ -1,5 +1,5 @@ import { ClientState, WebModelSlot } from "@dannadori/voice-changer-client-js"; -import { VoiceChangerJSClientConfig, VoiceChangerJSClient } from "@dannadori/voice-changer-js"; +import { VoiceChangerJSClientConfig, VoiceChangerJSClient, ProgressUpdateType, ProgreeeUpdateCallbcckInfo } from "@dannadori/voice-changer-js"; import { useEffect, useMemo, useRef, useState } from "react"; export type UseWebInfoProps = { @@ -28,23 +28,52 @@ export type WebInfoState = { webModelLoadingState: WebModelLoadingState; progressLoadPreprocess: number; progressLoadVCModel: number; + progressWarmup: number; webModelslot: WebModelSlot; }; export type WebInfoStateAndMethod = WebInfoState & { loadVoiceChanagerModel: () => Promise; }; -// const modelUrl = `${baseUrl}/models/rvc2v_40k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvc2v_40k_nof0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvc2v_16k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv2_amitaro_v2_40k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv2_amitaro_v2_40k_nof0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv2_amitaro_v2_32k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv2_amitaro_v2_32k_nof0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv1_amitaro_v1_32k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv1_amitaro_v1_32k_nof0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv1_amitaro_v1_40k_f0_24000.bin`; -// const modelUrl = `${baseUrl}/models/rvcv1_amitaro_v1_40k_nof0_24000.bin`; +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_f0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_f0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_f0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_f0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_nof0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_nof0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_nof0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_32k_nof0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_f0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_f0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_f0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_f0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_nof0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_nof0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_nof0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv1_amitaro_v1_40k_nof0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_f0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_f0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_f0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_f0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_nof0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_nof0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_nof0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_32k_nof0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_f0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_f0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_f0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_f0_24000.bin + +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_nof0_8000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_nof0_12000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_nof0_16000.bin +// https://huggingface.co/wok000/vcclient_model/resolve/main/web_model/v_01_alpha/amitaro/rvcv2_amitaro_v2_40k_nof0_24000.bin const InitialVoiceChangerConfig: VoiceChangerConfig = { config: { @@ -68,6 +97,7 @@ export const useWebInfo = (props: UseWebInfoProps): WebInfoStateAndMethod => { const [webModelLoadingState, setWebModelLoadingState] = useState(WebModelLoadingState.none); const [progressLoadPreprocess, setProgressLoadPreprocess] = useState(0); const [progressLoadVCModel, setProgressLoadVCModel] = useState(0); + const [progressWarmup, setProgressWarmup] = useState(0); const voiceChangerJSClient = useRef(); const webModelslot: WebModelSlot = useMemo(() => { @@ -89,11 +119,13 @@ export const useWebInfo = (props: UseWebInfoProps): WebInfoStateAndMethod => { }, []); useEffect(() => { - const progressCallback = (data: any) => { - if (data.progressUpdateType === "loadPreprocessModel") { + const progressCallback = (data: ProgreeeUpdateCallbcckInfo) => { + if (data.progressUpdateType === ProgressUpdateType.loadPreprocessModel) { setProgressLoadPreprocess(data.progress); - } else if (data.progressUpdateType === "loadVCModel") { + } else if (data.progressUpdateType === ProgressUpdateType.loadVCModel) { setProgressLoadVCModel(data.progress); + } else if (data.progressUpdateType === ProgressUpdateType.checkResponseTime) { + setProgressWarmup(data.progress); } }; setVoiceChangerConfig({ ...voiceChangerConfig, progressCallback }); @@ -113,7 +145,9 @@ export const useWebInfo = (props: UseWebInfoProps): WebInfoStateAndMethod => { // worm up setWebModelLoadingState("warmup"); - const warmupResult = await voiceChangerJSClient.current.checkResponseTime(); + const warmupResult = await voiceChangerJSClient.current.checkResponseTime((progress: number) => { + console.log(`Recieve Progress: ${progress}`); + }); console.log("warmup result", warmupResult); // check time @@ -137,6 +171,7 @@ export const useWebInfo = (props: UseWebInfoProps): WebInfoStateAndMethod => { webModelLoadingState, progressLoadPreprocess, progressLoadVCModel, + progressWarmup, webModelslot, loadVoiceChanagerModel, }; diff --git a/client/demo/src/components/demo/components2/101_CharacterArea.tsx b/client/demo/src/components/demo/components2/101_CharacterArea.tsx index 85d9b683..22dc3168 100644 --- a/client/demo/src/components/demo/components2/101_CharacterArea.tsx +++ b/client/demo/src/components/demo/components2/101_CharacterArea.tsx @@ -17,7 +17,7 @@ export type CharacterAreaProps = {}; export const CharacterArea = (_props: CharacterAreaProps) => { const { appGuiSettingState } = useAppRoot(); - const { serverSetting, initializedRef, volume, bufferingTime, performance, setting, setVoiceChangerClientSetting, start, stop, webInfoState } = useAppState(); + const { serverSetting, initializedRef, setting, setVoiceChangerClientSetting, start, stop, webInfoState } = useAppState(); const guiState = useGuiState(); const messageBuilderState = useMessageBuilder(); const webEdition = appGuiSettingState.edition.indexOf("web") >= 0; @@ -113,20 +113,31 @@ export const CharacterArea = (_props: CharacterAreaProps) => { const startClassName = guiState.isConverting ? "character-area-control-button-active" : "character-area-control-button-stanby"; const stopClassName = guiState.isConverting ? "character-area-control-button-stanby" : "character-area-control-button-active"; const passThruClassName = serverSetting.serverSetting.passThrough == false ? "character-area-control-passthru-button-stanby" : "character-area-control-passthru-button-active blinking"; - console.log("serverSetting.serverSetting.passThrough", passThruClassName, serverSetting.serverSetting.passThrough); if (webEdition && webInfoState.webModelLoadingState != "ready") { - return ( -
-
wait...
-
-
{webInfoState.webModelLoadingState}..
-
- pre:{Math.floor(webInfoState.progressLoadPreprocess * 100)}%, model: {Math.floor(webInfoState.progressLoadVCModel * 100)}% + if (webInfoState.webModelLoadingState == "none" || webInfoState.webModelLoadingState == "loading") { + return ( +
+
wait...
+
+
{webInfoState.webModelLoadingState}..
+
+ pre:{Math.floor(webInfoState.progressLoadPreprocess * 100)}%, model: {Math.floor(webInfoState.progressLoadVCModel * 100)}% +
-
- ); + ); + } else if (webInfoState.webModelLoadingState == "warmup") { + return ( +
+
wait...
+
+
{webInfoState.webModelLoadingState}..
+
warm up:{Math.floor(webInfoState.progressWarmup * 100)}%
+
+
+ ); + } } else { return (
@@ -144,7 +155,7 @@ export const CharacterArea = (_props: CharacterAreaProps) => {
); } - }, [guiState.isConverting, start, stop, serverSetting.serverSetting, serverSetting.updateServerSettings, webInfoState.progressLoadPreprocess, webInfoState.progressLoadVCModel, webInfoState.webModelLoadingState]); + }, [guiState.isConverting, start, stop, serverSetting.serverSetting, serverSetting.updateServerSettings, webInfoState.progressLoadPreprocess, webInfoState.progressLoadVCModel, webInfoState.progressWarmup, webInfoState.webModelLoadingState]); const gainControl = useMemo(() => { const currentInputGain = serverSetting.serverSetting.enableServerAudio == 0 ? setting.voiceChangerClientSetting.inputGain : serverSetting.serverSetting.serverInputAudioGain;