diff --git a/.gitignore b/.gitignore
index fa583fd5..bf6579f8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -68,3 +68,5 @@ venv/
beatrice_internal_api.cp310-win_amd64.pyd
108_average_110b_10.bin
+
+server/model_dir_static/Beatrice-JVS
diff --git a/client/demo/build-voice-changer-js.sh b/client/demo/build-voice-changer-js.sh
index 472c3a57..2af183a2 100644
--- a/client/demo/build-voice-changer-js.sh
+++ b/client/demo/build-voice-changer-js.sh
@@ -1,4 +1,11 @@
-cd ~/git-work/voice-changer-js/lib/ ; npm run build:dev; cd -
+# cd ~/git-work/voice-changer-js/lib/ ; npm run build:dev; cd -
+# rm -rf node_modules/@dannadori/voice-changer-js
+# mkdir -p node_modules/@dannadori/voice-changer-js/dist
+# cp -r ~/git-work/voice-changer-js/lib/package.json node_modules/@dannadori/voice-changer-js/
+# cp -r ~/git-work/voice-changer-js/lib/dist node_modules/@dannadori/voice-changer-js/
+
+
+cd ~/git-work/voice-changer-js/lib/ ; npm run build:prod; cd -
rm -rf node_modules/@dannadori/voice-changer-js
mkdir -p node_modules/@dannadori/voice-changer-js/dist
cp -r ~/git-work/voice-changer-js/lib/package.json node_modules/@dannadori/voice-changer-js/
diff --git a/client/demo/src/components/demo/components2/100_ModelSlotArea.tsx b/client/demo/src/components/demo/components2/100_ModelSlotArea.tsx
index 326b5f36..a8d55554 100644
--- a/client/demo/src/components/demo/components2/100_ModelSlotArea.tsx
+++ b/client/demo/src/components/demo/components2/100_ModelSlotArea.tsx
@@ -55,6 +55,7 @@ export const ModelSlotArea = (_props: ModelSlotAreaProps) => {
);
const clickAction = async () => {
+ // @ts-ignore
const dummyModelSlotIndex = Math.floor(Date.now() / 1000) * 1000 + x.slotIndex;
await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, modelSlotIndex: dummyModelSlotIndex });
setTimeout(() => {
diff --git a/client/demo/src/components/demo/components2/101-1_TuningArea.tsx b/client/demo/src/components/demo/components2/101-1_TuningArea.tsx
index f3c20785..31b5311d 100644
--- a/client/demo/src/components/demo/components2/101-1_TuningArea.tsx
+++ b/client/demo/src/components/demo/components2/101-1_TuningArea.tsx
@@ -1,55 +1,59 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-
-export type TuningAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+export type TuningAreaProps = {};
export const TuningArea = (_props: TuningAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const tuningArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType == "MMVCv13" || selected.voiceChangerType == "MMVCv15") {
- return <>>
+ return <>>;
}
- const currentTuning = serverSetting.serverSetting.tran
+ const currentTuning = serverSetting.serverSetting.tran;
const tranValueUpdatedAction = async (val: number) => {
- await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, tran: val })
- }
+ await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, tran: val });
+ };
return (
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
-
- return tuningArea
-}
\ No newline at end of file
+ return tuningArea;
+};
diff --git a/client/demo/src/components/demo/components2/101-2_IndexArea.tsx b/client/demo/src/components/demo/components2/101-2_IndexArea.tsx
index a6deccdb..cc88b6b8 100644
--- a/client/demo/src/components/demo/components2/101-2_IndexArea.tsx
+++ b/client/demo/src/components/demo/components2/101-2_IndexArea.tsx
@@ -1,56 +1,59 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-
-export type IndexAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+export type IndexAreaProps = {};
export const IndexArea = (_props: IndexAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const indexArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType != "RVC") {
- return <>>
+ return <>>;
}
- const currentIndexRatio = serverSetting.serverSetting.indexRatio
+ const currentIndexRatio = serverSetting.serverSetting.indexRatio;
const indexRatioValueUpdatedAction = async (val: number) => {
- await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, indexRatio: val })
- }
+ await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, indexRatio: val });
+ };
return (
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
-
-
- return indexArea
-}
\ No newline at end of file
+ return indexArea;
+};
diff --git a/client/demo/src/components/demo/components2/101-3_SpeakerArea.tsx b/client/demo/src/components/demo/components2/101-3_SpeakerArea.tsx
index 19c3f8c9..93c69548 100644
--- a/client/demo/src/components/demo/components2/101-3_SpeakerArea.tsx
+++ b/client/demo/src/components/demo/components2/101-3_SpeakerArea.tsx
@@ -1,113 +1,109 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-
-export type SpeakerAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+export type SpeakerAreaProps = {};
export const SpeakerArea = (_props: SpeakerAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const srcArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType != "MMVCv13" && selected.voiceChangerType != "MMVCv15") {
- return <>>
+ return <>>;
}
- const options = Object.keys(selected.speakers).map(key => {
- const val = selected.speakers[Number(key)]
+ const options = Object.keys(selected.speakers).map((key) => {
+ const val = selected.speakers[Number(key)];
return (
-
- )
- })
+
+ );
+ });
const srcSpeakerValueUpdatedAction = async (val: number) => {
- await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, srcId: val })
- }
+ await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, srcId: val });
+ };
return (
-
- Voice:
-
+
Voice:
src
-
-
-
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
-
+
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
const dstArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
- const options = Object.keys(selected.speakers).map(key => {
- const val = selected.speakers[Number(key)]
+ const options = Object.keys(selected.speakers).map((key) => {
+ const val = selected.speakers[Number(key)];
return (
-
- )
- })
+
+ );
+ });
const srcSpeakerValueUpdatedAction = async (val: number) => {
- await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, dstId: val })
- }
+ await serverSetting.updateServerSettings({ ...serverSetting.serverSetting, dstId: val });
+ };
return (
-
- {
- selected.voiceChangerType == "DDSP-SVC" ||
- selected.voiceChangerType == "so-vits-svc-40" ||
- selected.voiceChangerType == "RVC" ? "Voice:" : ""
- }
-
+
{selected.voiceChangerType == "DDSP-SVC" || selected.voiceChangerType == "so-vits-svc-40" || selected.voiceChangerType == "RVC" || selected.voiceChangerType == "Beatrice" ? "Voice:" : ""}
-
- {
- selected.voiceChangerType == "MMVCv13" ||
- selected.voiceChangerType == "MMVCv15" ? "dst" : ""
- }
-
-
+ {selected.voiceChangerType == "MMVCv13" || selected.voiceChangerType == "MMVCv15" ? "dst" : ""}
- { srcSpeakerValueUpdatedAction(Number(e.target.value)) }}>
+ {
+ srcSpeakerValueUpdatedAction(Number(e.target.value));
+ }}
+ >
{options}
-
-
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
-
+
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
return (
<>
{srcArea}
{dstArea}
>
- )
-}
\ No newline at end of file
+ );
+};
diff --git a/client/demo/src/components/demo/components2/101-4_F0FactorArea.tsx b/client/demo/src/components/demo/components2/101-4_F0FactorArea.tsx
index 19316339..cf502205 100644
--- a/client/demo/src/components/demo/components2/101-4_F0FactorArea.tsx
+++ b/client/demo/src/components/demo/components2/101-4_F0FactorArea.tsx
@@ -1,72 +1,70 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-import { MMVCv15ModelSlot } from "@dannadori/voice-changer-client-js"
-
-export type SpeakerAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+import { MMVCv15ModelSlot } from "@dannadori/voice-changer-client-js";
+export type SpeakerAreaProps = {};
export const F0FactorArea = (_props: SpeakerAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const f0FactorArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType != "MMVCv15") {
- return <>>
+ return <>>;
}
- const selectedMMVCv15 = selected as MMVCv15ModelSlot
+ const selectedMMVCv15 = selected as MMVCv15ModelSlot;
- const recommendF0 = (selectedMMVCv15.f0[serverSetting.serverSetting.dstId] / selectedMMVCv15.f0[serverSetting.serverSetting.srcId]).toFixed(2)
+ const recommendF0 = (selectedMMVCv15.f0[serverSetting.serverSetting.dstId] / selectedMMVCv15.f0[serverSetting.serverSetting.srcId]).toFixed(2);
return (
<>
-
- F0Factor:
-
+
F0Factor:
-
-
-
+
recommend:
-
- {recommendF0}
-
+ {recommendF0}
-
>
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
-
- return f0FactorArea
-}
\ No newline at end of file
+ return f0FactorArea;
+};
diff --git a/client/demo/src/components/demo/components2/101-5_so-vits-svc40SettingArea.tsx b/client/demo/src/components/demo/components2/101-5_so-vits-svc40SettingArea.tsx
index 1aab7e41..c4c90de9 100644
--- a/client/demo/src/components/demo/components2/101-5_so-vits-svc40SettingArea.tsx
+++ b/client/demo/src/components/demo/components2/101-5_so-vits-svc40SettingArea.tsx
@@ -1,81 +1,86 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-
-export type SoVitsSVC40SettingAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+export type SoVitsSVC40SettingAreaProps = {};
export const SoVitsSVC40SettingArea = (_props: SoVitsSVC40SettingAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const settingArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType != "so-vits-svc-40") {
- return <>>
+ return <>>;
}
const cluster = (
-
- Cluster:
-
+
Cluster:
- )
-
+ );
const noise = (
- )
-
+ );
return (
<>
{cluster}
{noise}
>
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
-
- return settingArea
-}
\ No newline at end of file
+ return settingArea;
+};
diff --git a/client/demo/src/components/demo/components2/101-6_ddsp-svc30SettingArea.tsx b/client/demo/src/components/demo/components2/101-6_ddsp-svc30SettingArea.tsx
index d6ab9495..f6982530 100644
--- a/client/demo/src/components/demo/components2/101-6_ddsp-svc30SettingArea.tsx
+++ b/client/demo/src/components/demo/components2/101-6_ddsp-svc30SettingArea.tsx
@@ -1,81 +1,86 @@
-import React, { useMemo } from "react"
-import { useAppState } from "../../../001_provider/001_AppStateProvider"
-
-export type DDSPSVC30SettingAreaProps = {
-}
+import React, { useMemo } from "react";
+import { useAppState } from "../../../001_provider/001_AppStateProvider";
+export type DDSPSVC30SettingAreaProps = {};
export const DDSPSVC30SettingArea = (_props: DDSPSVC30SettingAreaProps) => {
- const { serverSetting } = useAppState()
+ const { serverSetting } = useAppState();
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
- return
+ return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex]
- }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots])
-
-
+ }, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const settingArea = useMemo(() => {
if (!selected) {
- return <>>
+ return <>>;
}
if (selected.voiceChangerType != "DDSP-SVC") {
- return <>>
+ return <>>;
}
const acc = (
- )
-
+ );
const kstep = (
- )
-
+ );
return (
<>
{acc}
{kstep}
>
- )
- }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected])
+ );
+ }, [serverSetting.serverSetting, serverSetting.updateServerSettings, selected]);
-
- return settingArea
-}
\ No newline at end of file
+ return settingArea;
+};
diff --git a/client/demo/src/components/demo/components2/101-7_diffusion-svcSettingArea.tsx b/client/demo/src/components/demo/components2/101-7_diffusion-svcSettingArea.tsx
index 21531816..b1482181 100644
--- a/client/demo/src/components/demo/components2/101-7_diffusion-svcSettingArea.tsx
+++ b/client/demo/src/components/demo/components2/101-7_diffusion-svcSettingArea.tsx
@@ -10,8 +10,12 @@ export const DiffusionSVCSettingArea = (_props: DiffusionSVCSettingAreaProps) =>
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
const settingArea = useMemo(() => {
diff --git a/client/demo/src/components/demo/components2/101_CharacterArea.tsx b/client/demo/src/components/demo/components2/101_CharacterArea.tsx
index 3c0d5dfc..a89f3025 100644
--- a/client/demo/src/components/demo/components2/101_CharacterArea.tsx
+++ b/client/demo/src/components/demo/components2/101_CharacterArea.tsx
@@ -28,8 +28,12 @@ export const CharacterArea = (_props: CharacterAreaProps) => {
const selected = useMemo(() => {
if (serverSetting.serverSetting.modelSlotIndex == undefined) {
return;
+ } else if (serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS") {
+ const beatriceJVS = serverSetting.serverSetting.modelSlots.find((v) => v.slotIndex == "Beatrice-JVS");
+ return beatriceJVS;
+ } else {
+ return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}
- return serverSetting.serverSetting.modelSlots[serverSetting.serverSetting.modelSlotIndex];
}, [serverSetting.serverSetting.modelSlotIndex, serverSetting.serverSetting.modelSlots]);
useEffect(() => {
@@ -49,7 +53,8 @@ export const CharacterArea = (_props: CharacterAreaProps) => {
return <>>;
}
- const icon = selected.iconFile.length > 0 ? serverSetting.serverSetting.voiceChangerParams.model_dir + "/" + selected.slotIndex + "/" + selected.iconFile.split(/[\/\\]/).pop() : "./assets/icons/human.png";
+ const modelDir = serverSetting.serverSetting.modelSlotIndex == "Beatrice-JVS" ? "model_dir_static" : serverSetting.serverSetting.voiceChangerParams.model_dir;
+ const icon = selected.iconFile.length > 0 ? modelDir + "/" + selected.slotIndex + "/" + selected.iconFile.split(/[\/\\]/).pop() : "./assets/icons/human.png";
const selectedTermOfUseUrlLink = selected.termsOfUseUrl ? (
[{messageBuilderState.getMessage(__filename, "terms_of_use")}]
diff --git a/client/lib/src/const.ts b/client/lib/src/const.ts
index 6e00d814..b971c900 100644
--- a/client/lib/src/const.ts
+++ b/client/lib/src/const.ts
@@ -14,6 +14,11 @@ export const VoiceChangerType = {
} as const;
export type VoiceChangerType = (typeof VoiceChangerType)[keyof typeof VoiceChangerType];
+export const StaticModel = {
+ BeatriceJVS: "Beatrice-JVS",
+} as const;
+export type StaticModel = (typeof StaticModel)[keyof typeof StaticModel];
+
///////////////////////
// サーバセッティング
///////////////////////
@@ -174,7 +179,7 @@ export type VoiceChangerServerSetting = {
rvcQuality: number; // 0:low, 1:high
silenceFront: number; // 0:off, 1:on
modelSamplingRate: ModelSamplingRate; // 32000,40000,48000
- modelSlotIndex: number;
+ modelSlotIndex: number | StaticModel;
useEnhancer: number; // DDSP-SVC
useDiff: number; // DDSP-SVC
@@ -194,7 +199,7 @@ export type VoiceChangerServerSetting = {
};
type ModelSlot = {
- slotIndex: number;
+ slotIndex: number | StaticModel;
voiceChangerType: VoiceChangerType;
name: string;
description: string;
diff --git a/server/const.py b/server/const.py
index abc7b925..d5a3d2b4 100644
--- a/server/const.py
+++ b/server/const.py
@@ -107,8 +107,6 @@ def getSampleJsonAndModelIds(mode: RVCSampleMode):
("Amitaro_o", {"useIndex": False}),
("KikotoMahiro_o", {"useIndex": False}),
("TokinaShigure_o", {"useIndex": False}),
- ("Amitaro_16k_o", {"useIndex": False}),
- ("Amitaro_16k_nof0_o", {"useIndex": False}),
]
elif mode == "testAll":
return [
diff --git a/server/data/ModelSlot.py b/server/data/ModelSlot.py
index 37196859..2eaca0fb 100644
--- a/server/data/ModelSlot.py
+++ b/server/data/ModelSlot.py
@@ -142,7 +142,7 @@ def loadSlotInfo(model_dir: str, slotIndex: int | StaticSlot) -> ModelSlots:
jsonFile = os.path.join(slotDir, "params.json")
if not os.path.exists(jsonFile):
return ModelSlot()
- jsonDict = json.load(open(os.path.join(slotDir, "params.json")))
+ jsonDict = json.load(open(jsonFile, encoding="utf-8"))
slotInfoKey = list(ModelSlot.__annotations__.keys())
slotInfo = ModelSlot(**{k: v for k, v in jsonDict.items() if k in slotInfoKey})
if slotInfo.voiceChangerType == "RVC":