This commit is contained in:
wataru 2023-04-05 18:08:06 +09:00
parent 4251e1ca7c
commit 98e14a9d4a
27 changed files with 396 additions and 81 deletions

View File

@ -7,20 +7,30 @@
"subTitle": "for MMVC v.1.3", "subTitle": "for MMVC v.1.3",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": true, "ONNXEnable": true,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": false, "pyTorchClusterEnable": false,
"showPyTorchDefault": false "showPyTorchDefault": false,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": false "F0DetectorEnable": false,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": true, "srcIdEnable": true,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": true, "editSpeakerIdMappingEnable": true,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": false, "tuningEnable": false,

View File

@ -7,20 +7,30 @@
"subTitle": "for MMVC v.1.5", "subTitle": "for MMVC v.1.5",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": true, "ONNXEnable": true,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": true, "MMVCCorrespondense": true,
"pyTorchClusterEnable": false, "pyTorchClusterEnable": false,
"showPyTorchDefault": false "showPyTorchDefault": false,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": true "F0DetectorEnable": true,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": true, "srcIdEnable": true,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": true, "f0FactorEnable": true,
"tuningEnable": false, "tuningEnable": false,

View File

@ -7,17 +7,26 @@
"subTitle": "for so-vits-svc-40", "subTitle": "for so-vits-svc-40",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": false, "ONNXEnable": false,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": true, "pyTorchClusterEnable": true,
"showPyTorchDefault": true "showPyTorchDefault": true,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": true "F0DetectorEnable": true,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": false, "srcIdEnable": false,

View File

@ -0,0 +1,67 @@
{
"type": "demo",
"id": "so-vits-svc-40_c",
"front": {
"title": {
"mainTitle": "VC Client",
"subTitle": "for so-vits-svc-40_c",
"lineNum": 1
},
"serverControl": {
"modelInfoEnable": false
},
"modelSetting": {
"ONNXEnable": false,
"pyTorchEnable": false,
"MMVCCorrespondense": false,
"pyTorchClusterEnable": false,
"showPyTorchDefault": false,
"frameworkEnable": false,
"modelUploaderEnable": false,
"configRow": false,
"uploadRow": false
},
"deviceSetting": {},
"qualityControl": {
"F0DetectorEnable": true,
"analyzerRow": false,
"samplingRow": false,
"playRow": false
},
"speakerSetting": {
"srcIdEnable": false,
"editSpeakerIdMappingEnable": false,
"f0FactorEnable": false,
"tuningEnable": true,
"clusterInferRationEnable": true,
"noiseScaleEnable": true,
"silentThresholdEnable": true
},
"converterSetting": {
"extraDataLengthEnable": true
},
"advancedSetting": {
"serverURLEnable": false,
"protocolEnable": true,
"sampleRateEnable": false,
"sendingSampleRateEnable": false,
"crossFadeOverlapSizeEnable": false,
"crossFadeOffsetRateEnable": false,
"crossFadeEndRateEnable": false,
"downSamplingModeEnable": false,
"trancateNumTresholdEnable": false
}
},
"dialogs": {
"license": [
{
"title": "c",
"auther": "c",
"contact": "b",
"url": "a",
"license": "MIT"
}
]
}
}

View File

@ -7,13 +7,19 @@
"subTitle": "for so-vits-svc-40v2", "subTitle": "for so-vits-svc-40v2",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": false, "ONNXEnable": false,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": true, "pyTorchClusterEnable": true,
"showPyTorchDefault": true "showPyTorchDefault": true,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
@ -21,6 +27,7 @@
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": false, "srcIdEnable": false,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": true, "tuningEnable": true,

File diff suppressed because one or more lines are too long

View File

@ -7,20 +7,30 @@
"subTitle": "for MMVC v.1.3", "subTitle": "for MMVC v.1.3",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": true, "ONNXEnable": true,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": false, "pyTorchClusterEnable": false,
"showPyTorchDefault": false "showPyTorchDefault": false,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": false "F0DetectorEnable": false,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": true, "srcIdEnable": true,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": true, "editSpeakerIdMappingEnable": true,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": false, "tuningEnable": false,

View File

@ -7,20 +7,30 @@
"subTitle": "for MMVC v.1.5", "subTitle": "for MMVC v.1.5",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": true, "ONNXEnable": true,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": true, "MMVCCorrespondense": true,
"pyTorchClusterEnable": false, "pyTorchClusterEnable": false,
"showPyTorchDefault": false "showPyTorchDefault": false,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": true "F0DetectorEnable": true,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": true, "srcIdEnable": true,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": true, "f0FactorEnable": true,
"tuningEnable": false, "tuningEnable": false,

View File

@ -7,20 +7,30 @@
"subTitle": "for so-vits-svc-40", "subTitle": "for so-vits-svc-40",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": false, "ONNXEnable": false,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": true, "pyTorchClusterEnable": true,
"showPyTorchDefault": true "showPyTorchDefault": true,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": true "F0DetectorEnable": true,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": false, "srcIdEnable": false,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": true, "tuningEnable": true,

View File

@ -0,0 +1,68 @@
{
"type": "demo",
"id": "so-vits-svc-40_c",
"front": {
"title": {
"mainTitle": "VC Client",
"subTitle": "for so-vits-svc-40_c",
"lineNum": 1
},
"serverControl": {
"modelInfoEnable": false
},
"modelSetting": {
"ONNXEnable": false,
"pyTorchEnable": false,
"MMVCCorrespondense": false,
"pyTorchClusterEnable": false,
"showPyTorchDefault": false,
"frameworkEnable": false,
"modelUploaderEnable": false,
"configRow": false,
"uploadRow": false
},
"deviceSetting": {},
"qualityControl": {
"F0DetectorEnable": true,
"analyzerRow": false,
"samplingRow": false,
"playRow": false
},
"speakerSetting": {
"srcIdEnable": false,
"dstIdEnable": false,
"editSpeakerIdMappingEnable": false,
"f0FactorEnable": false,
"tuningEnable": true,
"clusterInferRationEnable": true,
"noiseScaleEnable": true,
"silentThresholdEnable": true
},
"converterSetting": {
"extraDataLengthEnable": true
},
"advancedSetting": {
"serverURLEnable": false,
"protocolEnable": true,
"sampleRateEnable": false,
"sendingSampleRateEnable": false,
"crossFadeOverlapSizeEnable": false,
"crossFadeOffsetRateEnable": false,
"crossFadeEndRateEnable": false,
"downSamplingModeEnable": false,
"trancateNumTresholdEnable": false
}
},
"dialogs": {
"license": [
{
"title": "c",
"auther": "c",
"contact": "b",
"url": "a",
"license": "MIT"
}
]
}
}

View File

@ -7,13 +7,19 @@
"subTitle": "for so-vits-svc-40v2", "subTitle": "for so-vits-svc-40v2",
"lineNum": 1 "lineNum": 1
}, },
"serverControl": {}, "serverControl": {
"modelInfoEnable": true
},
"modelSetting": { "modelSetting": {
"ONNXEnable": false, "ONNXEnable": false,
"pyTorchEnable": true, "pyTorchEnable": true,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": true, "pyTorchClusterEnable": true,
"showPyTorchDefault": true "showPyTorchDefault": true,
"frameworkEnable": true,
"modelUploaderEnable": true,
"configRow": true,
"uploadRow": true
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
@ -21,6 +27,7 @@
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": false, "srcIdEnable": false,
"dstIdEnable": true,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": true, "tuningEnable": true,

View File

@ -13,20 +13,30 @@ export type AppGuiDemoSetting = {
"lineNum": number "lineNum": number
}, },
"serverControl": { "serverControl": {
"modelInfoEnable": boolean
}, },
"modelSetting": { "modelSetting": {
"ONNXEnable": boolean, "ONNXEnable": boolean,
"pyTorchEnable": boolean, "pyTorchEnable": boolean,
"MMVCCorrespondense": boolean, "MMVCCorrespondense": boolean,
"pyTorchClusterEnable": boolean, "pyTorchClusterEnable": boolean,
"showPyTorchDefault": boolean "showPyTorchDefault": boolean,
"frameworkEnable": boolean,
"modelUploaderEnable": boolean,
"configRow": boolean,
"uploadRow": boolean
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": boolean "F0DetectorEnable": boolean,
"analyzerRow": boolean,
"samplingRow": boolean,
"playRow": boolean
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": boolean "srcIdEnable": boolean
"dstIdEnable": boolean
"editSpeakerIdMappingEnable": boolean "editSpeakerIdMappingEnable": boolean
"f0FactorEnable": boolean "f0FactorEnable": boolean
"tuningEnable": boolean "tuningEnable": boolean
@ -66,21 +76,29 @@ const InitialAppGuiDemoSetting: AppGuiDemoSetting = {
"lineNum": 1 "lineNum": 1
}, },
"serverControl": { "serverControl": {
"modelInfoEnable": true
}, },
"modelSetting": { "modelSetting": {
"ONNXEnable": false, "ONNXEnable": false,
"pyTorchEnable": false, "pyTorchEnable": false,
"MMVCCorrespondense": false, "MMVCCorrespondense": false,
"pyTorchClusterEnable": false, "pyTorchClusterEnable": false,
"showPyTorchDefault": false "showPyTorchDefault": false,
"frameworkEnable": false,
"modelUploaderEnable": false,
"configRow": false,
"uploadRow": false
}, },
"deviceSetting": {}, "deviceSetting": {},
"qualityControl": { "qualityControl": {
"F0DetectorEnable": false "F0DetectorEnable": false,
"analyzerRow": true,
"samplingRow": true,
"playRow": true
}, },
"speakerSetting": { "speakerSetting": {
"srcIdEnable": false, "srcIdEnable": false,
"dstIdEnable": false,
"editSpeakerIdMappingEnable": false, "editSpeakerIdMappingEnable": false,
"f0FactorEnable": false, "f0FactorEnable": false,
"tuningEnable": false, "tuningEnable": false,

View File

@ -1,10 +1,16 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
import { useAppState } from "../../001_provider/001_AppStateProvider" import { useAppState } from "../../001_provider/001_AppStateProvider"
export const ServerInfoRow = () => { export const ServerInfoRow = () => {
const appState = useAppState() const appState = useAppState()
const { appGuiSettingState } = useAppRoot()
const serverControlSetting = appGuiSettingState.appGuiSetting.front.serverControl
const serverInfoRow = useMemo(() => { const serverInfoRow = useMemo(() => {
if (!serverControlSetting.modelInfoEnable) {
return <></>
}
const onReloadClicked = async () => { const onReloadClicked = async () => {
const info = await appState.getInfo() const info = await appState.getInfo()
console.log("info", info) console.log("info", info)

View File

@ -5,13 +5,20 @@ import { useGuiState } from "./001_GuiStateProvider"
export const ModelUploaderRow = () => { export const ModelUploaderRow = () => {
const guiState = useGuiState() const guiState = useGuiState()
const { appGuiSettingState } = useAppRoot() const { appGuiSettingState } = useAppRoot()
const modelSetting = appGuiSettingState.appGuiSetting.front.modelSetting
useEffect(() => { useEffect(() => {
if (!modelSetting.modelUploaderEnable) {
return
}
if (appGuiSettingState.appGuiSetting.front.modelSetting.showPyTorchDefault) { if (appGuiSettingState.appGuiSetting.front.modelSetting.showPyTorchDefault) {
guiState.setShowPyTorchModelUpload(true) guiState.setShowPyTorchModelUpload(true)
} }
}, []) }, [])
const modelUploaderRow = useMemo(() => { const modelUploaderRow = useMemo(() => {
if (!modelSetting.modelUploaderEnable) {
return <></>
}
return ( return (
<div className="body-row split-3-3-4 left-padding-1 guided"> <div className="body-row split-3-3-4 left-padding-1 guided">
<div className="body-item-title left-padding-1">Model Uploader</div> <div className="body-item-title left-padding-1">Model Uploader</div>

View File

@ -2,11 +2,17 @@ import React, { useMemo } from "react"
import { fileSelector } from "@dannadori/voice-changer-client-js" import { fileSelector } from "@dannadori/voice-changer-client-js"
import { useAppState } from "../../001_provider/001_AppStateProvider" import { useAppState } from "../../001_provider/001_AppStateProvider"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
export const ConfigSelectRow = () => { export const ConfigSelectRow = () => {
const appState = useAppState() const appState = useAppState()
const { appGuiSettingState } = useAppRoot()
const modelSetting = appGuiSettingState.appGuiSetting.front.modelSetting
const configSelectRow = useMemo(() => { const configSelectRow = useMemo(() => {
if (!modelSetting.configRow) {
return <></>
}
const configFilenameText = appState.serverSetting.fileUploadSetting.configFile?.filename || appState.serverSetting.fileUploadSetting.configFile?.file?.name || "" const configFilenameText = appState.serverSetting.fileUploadSetting.configFile?.filename || appState.serverSetting.fileUploadSetting.configFile?.file?.name || ""
const onConfigFileLoadClicked = async () => { const onConfigFileLoadClicked = async () => {
const file = await fileSelector("") const file = await fileSelector("")

View File

@ -1,11 +1,18 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
import { useAppState } from "../../001_provider/001_AppStateProvider" import { useAppState } from "../../001_provider/001_AppStateProvider"
export const ModelUploadButtonRow = () => { export const ModelUploadButtonRow = () => {
const appState = useAppState() const appState = useAppState()
const { appGuiSettingState } = useAppRoot()
const modelSetting = appGuiSettingState.appGuiSetting.front.modelSetting
const modelUploadButtonRow = useMemo(() => { const modelUploadButtonRow = useMemo(() => {
if (!modelSetting.uploadRow) {
return <></>
}
const onModelUploadClicked = async () => { const onModelUploadClicked = async () => {
appState.serverSetting.loadModel() appState.serverSetting.loadModel()
} }

View File

@ -1,11 +1,17 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { Framework } from "@dannadori/voice-changer-client-js" import { Framework } from "@dannadori/voice-changer-client-js"
import { useAppState } from "../../001_provider/001_AppStateProvider" import { useAppState } from "../../001_provider/001_AppStateProvider"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
export const FrameworkRow = () => { export const FrameworkRow = () => {
const appState = useAppState() const appState = useAppState()
const { appGuiSettingState } = useAppRoot()
const modelSetting = appGuiSettingState.appGuiSetting.front.modelSetting
const frameworkRow = useMemo(() => { const frameworkRow = useMemo(() => {
if (!modelSetting.frameworkEnable) {
return <></>
}
const onFrameworkChanged = async (val: Framework) => { const onFrameworkChanged = async (val: Framework) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, framework: val }) appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, framework: val })
} }

View File

@ -1,7 +1,13 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
export const AnalyzerRow = () => { export const AnalyzerRow = () => {
const { appGuiSettingState } = useAppRoot()
const qualityControlSetting = appGuiSettingState.appGuiSetting.front.qualityControl
const analyzerRow = useMemo(() => { const analyzerRow = useMemo(() => {
if (!qualityControlSetting.analyzerRow) {
return <></>
}
return ( return (
<div className="body-row split-3-7 left-padding-1 guided"> <div className="body-row split-3-7 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Analyzer(Experimental)</div> <div className="body-item-title left-padding-1 ">Analyzer(Experimental)</div>

View File

@ -1,4 +1,5 @@
import React, { useMemo, useState } from "react" import React, { useMemo, useState } from "react"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
import { useAppState } from "../../001_provider/001_AppStateProvider" import { useAppState } from "../../001_provider/001_AppStateProvider"
import { AUDIO_ELEMENT_FOR_SAMPLING_INPUT, AUDIO_ELEMENT_FOR_SAMPLING_OUTPUT } from "../../const" import { AUDIO_ELEMENT_FOR_SAMPLING_INPUT, AUDIO_ELEMENT_FOR_SAMPLING_OUTPUT } from "../../const"
import { useGuiState } from "./001_GuiStateProvider" import { useGuiState } from "./001_GuiStateProvider"
@ -7,9 +8,15 @@ export const SamplingRow = () => {
const [recording, setRecording] = useState<boolean>(false) const [recording, setRecording] = useState<boolean>(false)
const appState = useAppState() const appState = useAppState()
const guiState = useGuiState() const guiState = useGuiState()
const { appGuiSettingState } = useAppRoot()
const qualityControlSetting = appGuiSettingState.appGuiSetting.front.qualityControl
const samplingRow = useMemo(() => { const samplingRow = useMemo(() => {
if (!qualityControlSetting.samplingRow) {
return <></>
}
const onRecordStartClicked = async () => { const onRecordStartClicked = async () => {
setRecording(true) setRecording(true)
await appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 1 }) await appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 1 })

View File

@ -1,11 +1,17 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { useAppRoot } from "../../001_provider/001_AppRootProvider"
import { AUDIO_ELEMENT_FOR_SAMPLING_INPUT, AUDIO_ELEMENT_FOR_SAMPLING_OUTPUT } from "../../const" import { AUDIO_ELEMENT_FOR_SAMPLING_INPUT, AUDIO_ELEMENT_FOR_SAMPLING_OUTPUT } from "../../const"
import { useGuiState } from "./001_GuiStateProvider" import { useGuiState } from "./001_GuiStateProvider"
export const SamplingPlayRow = () => { export const SamplingPlayRow = () => {
const guiState = useGuiState() const guiState = useGuiState()
const { appGuiSettingState } = useAppRoot()
const qualityControlSetting = appGuiSettingState.appGuiSetting.front.qualityControl
const samplingPlayRow = useMemo(() => { const samplingPlayRow = useMemo(() => {
if (!qualityControlSetting.playRow) {
return <></>
}
return ( return (
<div className="body-row split-3-2-2-3 left-padding-1 guided"> <div className="body-row split-3-2-2-3 left-padding-1 guided">
<div className="body-item-title left-padding-2 "> <div className="body-item-title left-padding-2 ">

View File

@ -5,12 +5,20 @@ import { ServerInfoSoVitsSVC } from "@dannadori/voice-changer-client-js";
export const DstIdRow = () => { export const DstIdRow = () => {
const appState = useAppState() const appState = useAppState()
const { appGuiSettingState } = useAppRoot() const { appGuiSettingState } = useAppRoot()
const speakerSetting = appGuiSettingState.appGuiSetting.front.speakerSetting
const clientId = appGuiSettingState.appGuiSetting.id const clientId = appGuiSettingState.appGuiSetting.id
const dstIdRow = useMemo(() => { const dstIdRow = useMemo(() => {
if (!speakerSetting.dstIdEnable) {
return <></>
}
if (clientId != "MMVCv13") { if (clientId != "MMVCv13") {
return <></> return <></>
} }
if (!speakerSetting.dstIdEnable) {
return <></>
}
return ( return (
<div className="body-row split-3-2-1-4 left-padding-1 guided"> <div className="body-row split-3-2-1-4 left-padding-1 guided">
@ -35,6 +43,10 @@ export const DstIdRow = () => {
}, [appState.serverSetting.serverSetting, appState.clientSetting.clientSetting.speakers, appState.serverSetting.updateServerSettings]) }, [appState.serverSetting.serverSetting, appState.clientSetting.clientSetting.speakers, appState.serverSetting.updateServerSettings])
const dstIdRowWithF0 = useMemo(() => { const dstIdRowWithF0 = useMemo(() => {
if (!speakerSetting.dstIdEnable) {
return <></>
}
if (clientId != "MMVCv15") { if (clientId != "MMVCv15") {
return <></> return <></>
} }
@ -67,6 +79,10 @@ export const DstIdRow = () => {
}, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences]) }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, appState.clientSetting.clientSetting.correspondences])
const dstIdRowFromServer = useMemo(() => { const dstIdRowFromServer = useMemo(() => {
if (!speakerSetting.dstIdEnable) {
return <></>
}
const settings = appState.serverSetting.serverSetting as ServerInfoSoVitsSVC const settings = appState.serverSetting.serverSetting as ServerInfoSoVitsSVC
const speakers = settings.speakers const speakers = settings.speakers
if (!speakers) { if (!speakers) {

View File

@ -14,7 +14,7 @@ export const NoiseScaleRow = () => {
return ( return (
<div className="body-row split-3-3-4 left-padding-1 guided"> <div className="body-row split-3-3-4 left-padding-1 guided">
<div className="body-item-title left-padding-1 ">Noice Scale</div> <div className="body-item-title left-padding-1 ">Noise Scale</div>
<div> <div>
<input type="range" className="body-item-input-slider" min="0" max="1" step="0.1" value={appState.serverSetting.serverSetting.noiceScale} onChange={(e) => { <input type="range" className="body-item-input-slider" min="0" max="1" step="0.1" value={appState.serverSetting.serverSetting.noiceScale} onChange={(e) => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, noiceScale: Number(e.target.value) }) appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, noiceScale: Number(e.target.value) })

View File

@ -7,10 +7,9 @@
export const ClientType = { export const ClientType = {
"MMVCv15": "MMVCv15", "MMVCv15": "MMVCv15",
"MMVCv13": "MMVCv13", "MMVCv13": "MMVCv13",
"so_vits_svc_40": "so_vits_svc_40", "so-vits-svc-40": "so-vits-svc-40",
"so_vits_svc_40_c": "so_vits_svc_40_c", "so-vits-svc-40_c": "so-vits-svc-40_c",
"so_vits_svc_40v2": "so_vits_svc_40v2", "so-vits-svc-40v2": "so-vits-svc-40v2"
"so_vits_svc_40v2_c": "so_vits_svc_40v2_c",
} as const } as const
export type ClientType = typeof ClientType[keyof typeof ClientType] export type ClientType = typeof ClientType[keyof typeof ClientType]
@ -220,6 +219,41 @@ export const DefaultServerSetting_so_vits_svc_40: ServerInfo = {
onnxExecutionProviders: [] onnxExecutionProviders: []
} }
export const DefaultServerSetting_so_vits_svc_40_c: ServerInfo = {
srcId: 0,
dstId: 0,
gpu: 0,
crossFadeOffsetRate: 0.0,
crossFadeEndRate: 1.0,
crossFadeOverlapSize: CrossFadeOverlapSize[1024],
framework: Framework.ONNX,
f0Factor: 1.0,
onnxExecutionProvider: OnnxExecutionProvider.CPUExecutionProvider,
f0Detector: F0Detector.dio,
recordIO: 0,
// tran: 0,
// noiceScale: 0,
// predictF0: 0,
// silentThreshold: 0,
tran: 10,
noiceScale: 0.3,
predictF0: 0,
silentThreshold: 0.00001,
extraConvertSize: 1024 * 32,
clusterInferRatio: 0.1,
inputSampleRate: 24000,
//
status: "ok",
configFile: "",
pyTorchModelFile: "",
onnxModelFile: "",
onnxExecutionProviders: []
}
export const DefaultServerSetting_so_vits_svc_40v2: ServerInfo = { export const DefaultServerSetting_so_vits_svc_40v2: ServerInfo = {
srcId: 0, srcId: 0,
dstId: 0, dstId: 0,

View File

@ -1,5 +1,5 @@
import { useState, useMemo, useEffect } from "react" import { useState, useMemo, useEffect } from "react"
import { VoiceChangerServerSetting, ServerInfo, ServerSettingKey, INDEXEDDB_KEY_SERVER, INDEXEDDB_KEY_MODEL_DATA, ClientType, DefaultServerSetting_MMVCv13, DefaultServerSetting_MMVCv15, DefaultServerSetting_so_vits_svc_40v2, DefaultServerSetting_so_vits_svc_40 } from "../const" import { VoiceChangerServerSetting, ServerInfo, ServerSettingKey, INDEXEDDB_KEY_SERVER, INDEXEDDB_KEY_MODEL_DATA, ClientType, DefaultServerSetting_MMVCv13, DefaultServerSetting_MMVCv15, DefaultServerSetting_so_vits_svc_40v2, DefaultServerSetting_so_vits_svc_40, DefaultServerSetting_so_vits_svc_40_c } from "../const"
import { VoiceChangerClient } from "../VoiceChangerClient" import { VoiceChangerClient } from "../VoiceChangerClient"
import { useIndexedDB } from "./useIndexedDB" import { useIndexedDB } from "./useIndexedDB"
@ -52,14 +52,18 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta
return DefaultServerSetting_MMVCv13 return DefaultServerSetting_MMVCv13
} else if (props.clientType == "MMVCv15") { } else if (props.clientType == "MMVCv15") {
return DefaultServerSetting_MMVCv15 return DefaultServerSetting_MMVCv15
} else if (props.clientType == "so_vits_svc_40" || props.clientType == "so_vits_svc_40_c") { } else if (props.clientType == "so-vits-svc-40") {
return DefaultServerSetting_so_vits_svc_40 return DefaultServerSetting_so_vits_svc_40
} else if (props.clientType == "so_vits_svc_40v2" || props.clientType == "so_vits_svc_40v2_c") { } else if (props.clientType == "so-vits-svc-40_c") {
console.log("default so_vits_svc_40_c")
return DefaultServerSetting_so_vits_svc_40_c
} else if (props.clientType == "so-vits-svc-40v2") {
return DefaultServerSetting_so_vits_svc_40v2 return DefaultServerSetting_so_vits_svc_40v2
} else { } else {
return DefaultServerSetting_MMVCv15 return DefaultServerSetting_MMVCv15
} }
}, []) }, [])
console.log("default sss", defaultServerSetting)
const [serverSetting, setServerSetting] = useState<ServerInfo>(defaultServerSetting) const [serverSetting, setServerSetting] = useState<ServerInfo>(defaultServerSetting)
const [fileUploadSetting, setFileUploadSetting] = useState<FileUploadSetting>(InitialFileUploadSetting) const [fileUploadSetting, setFileUploadSetting] = useState<FileUploadSetting>(InitialFileUploadSetting)
const { setItem, getItem, removeItem } = useIndexedDB({ clientType: props.clientType }) const { setItem, getItem, removeItem } = useIndexedDB({ clientType: props.clientType })
@ -178,7 +182,7 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta
// fileUploadSetting.hubertTorchModel!.filename = await fileUploadSetting.hubertTorchModel!.file!.name // fileUploadSetting.hubertTorchModel!.filename = await fileUploadSetting.hubertTorchModel!.file!.name
// } // }
if (fileUploadSetting.clusterTorchModel) { if (fileUploadSetting.clusterTorchModel) {
if ((props.clientType == "so_vits_svc_40v2" || props.clientType == "so_vits_svc_40") && !fileUploadSetting.clusterTorchModel!.data) { if ((props.clientType == "so-vits-svc-40v2" || props.clientType == "so-vits-svc-40") && !fileUploadSetting.clusterTorchModel!.data) {
fileUploadSetting.clusterTorchModel!.data = await fileUploadSetting.clusterTorchModel!.file!.arrayBuffer() fileUploadSetting.clusterTorchModel!.data = await fileUploadSetting.clusterTorchModel!.file!.arrayBuffer()
fileUploadSetting.clusterTorchModel!.filename = await fileUploadSetting.clusterTorchModel!.file!.name fileUploadSetting.clusterTorchModel!.filename = await fileUploadSetting.clusterTorchModel!.file!.name
} }

View File

@ -24,9 +24,9 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
return DefaultWorkletNodeSetting return DefaultWorkletNodeSetting
} else if (props.clientType == "MMVCv15") { } else if (props.clientType == "MMVCv15") {
return DefaultWorkletNodeSetting return DefaultWorkletNodeSetting
} else if (props.clientType == "so_vits_svc_40" || props.clientType == "so_vits_svc_40_c") { } else if (props.clientType == "so-vits-svc-40" || props.clientType == "so-vits-svc-40_c") {
return DefaultWorkletNodeSetting_so_vits_svc_40 return DefaultWorkletNodeSetting_so_vits_svc_40
} else if (props.clientType == "so_vits_svc_40v2" || props.clientType == "so_vits_svc_40v2_c") { } else if (props.clientType == "so-vits-svc-40v2") {
return DefaultWorkletNodeSetting_so_vits_svc_40v2 return DefaultWorkletNodeSetting_so_vits_svc_40v2
} else { } else {
return DefaultWorkletNodeSetting return DefaultWorkletNodeSetting

View File

@ -38,7 +38,7 @@ def setupArgParser():
parser.add_argument("--colab", type=strtobool, parser.add_argument("--colab", type=strtobool,
default=False, help="run on colab") default=False, help="run on colab")
parser.add_argument("--modelType", type=str, parser.add_argument("--modelType", type=str,
default="MMVCv15", help="model type: MMVCv13, MMVCv15, so-vits-svc-40, so-vits-svc-40v2, so-vits-svc-40v2_tsukuyomi") default="MMVCv15", help="model type: MMVCv13, MMVCv15, so-vits-svc-40, so-vits-svc-40v2")
parser.add_argument("--cluster", type=str, help="path to cluster model") parser.add_argument("--cluster", type=str, help="path to cluster model")
parser.add_argument("--hubert", type=str, help="path to hubert model") parser.add_argument("--hubert", type=str, help="path to hubert model")
parser.add_argument("--internal", type=strtobool, default=False, help="各種パスをmac appの中身に変換") parser.add_argument("--internal", type=strtobool, default=False, help="各種パスをmac appの中身に変換")
@ -129,7 +129,7 @@ if __name__ == 'MMVCServerSIO':
if CONFIG and (MODEL or ONNX_MODEL): if CONFIG and (MODEL or ONNX_MODEL):
if MODEL_TYPE == "MMVCv15" or MODEL_TYPE == "MMVCv13": if MODEL_TYPE == "MMVCv15" or MODEL_TYPE == "MMVCv13":
voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, None) voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, None)
elif MODEL_TYPE == "so-vits-svc-40" or MODEL_TYPE == "so-vits-svc-40v2" or MODEL_TYPE == "so-vits-svc-40v2_tsukuyomi": elif MODEL_TYPE == "so-vits-svc-40" or MODEL_TYPE == "so-vits-svc-40v2" or MODEL_TYPE == "so-vits-svc-40_c":
voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, CLUSTER_MODEL) voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, CLUSTER_MODEL)
else: else:
voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, CLUSTER_MODEL) voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL, CLUSTER_MODEL)

View File

@ -35,34 +35,18 @@ def setModelType(_modelType: str):
def getFrontendPath(): def getFrontendPath():
if modelType == "MMVCv15": frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist" # if modelType == "MMVCv15":
elif modelType == "MMVCv13":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "so-vits-svc-40":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "so-vits-svc-40v2":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "DDSP-SVC":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "so-vits-svc-40_c":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") \
else "../client/demo_v13/dist"
return frontend_path
# elif modelType == "MMVCv13":
def getFrontendPath2(): # frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
if modelType == "MMVCv15": # elif modelType == "so-vits-svc-40":
frontend_path = os.path.join(sys._MEIPASS, "dist_v15") if hasattr(sys, "_MEIPASS") else "../client/demo_v15/dist" # frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "MMVCv13": # elif modelType == "so-vits-svc-40v2":
frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist" # frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "so-vits-svc-40": # elif modelType == "DDSP-SVC":
frontend_path = os.path.join(sys._MEIPASS, "dist_so-vits-svc_40") if hasattr(sys, "_MEIPASS") else "../client/demo_so-vits-svc_40/dist" # frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") else "../client/demo_v13/dist"
elif modelType == "so-vits-svc-40v2": # elif modelType == "so-vits-svc-40_c":
frontend_path = os.path.join(sys._MEIPASS, "dist_so-vits-svc_40v2") if hasattr(sys, "_MEIPASS") else "../client/demo_so-vits-svc_40v2/dist" # frontend_path = os.path.join(sys._MEIPASS, "dist_v13") if hasattr(sys, "_MEIPASS") \
elif modelType == "DDSP-SVC": # else "../client/demo_v13/dist"
frontend_path = os.path.join(sys._MEIPASS, "dist_DDSP-SVC") if hasattr(sys, "_MEIPASS") else "../client/demo_DDSP-SVC/dist"
elif modelType == "so-vits-svc-40_c":
frontend_path = os.path.join(sys._MEIPASS, "dist_so-vits-svc_40_c") if hasattr(sys, "_MEIPASS") \
else "../client/demo_so-vits-svc_40_c/dist"
return frontend_path return frontend_path