diff --git a/client/demo_so-vits-svc_40v2/dist/index.js b/client/demo_so-vits-svc_40v2/dist/index.js index 7b46a0ae..9d137987 100644 --- a/client/demo_so-vits-svc_40v2/dist/index.js +++ b/client/demo_so-vits-svc_40v2/dist/index.js @@ -169,7 +169,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useSpeakerSetting\": () => (/* binding */ useSpeakerSetting)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/101_HeaderButton */ \"./src/components/101_HeaderButton.tsx\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\nvar useSpeakerSetting = function useSpeakerSetting() {\n var appState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_2__.useAppState)();\n var accodionButton = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n var accodionButtonProps = {\n stateControlCheckbox: appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox,\n tooltip: \"Open/Close\",\n onIcon: [\"fas\", \"caret-up\"],\n offIcon: [\"fas\", \"caret-up\"],\n animation: _components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__.AnimationTypes.spinner,\n tooltipClass: \"tooltip-right\"\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__.HeaderButton, accodionButtonProps);\n }, []);\n var dstIdRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-2-1-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1\"\n }, \"Destination Speaker Id\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-select-container\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"select\", {\n className: \"body-select\",\n value: appState.serverSetting.serverSetting.dstId,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n dstId: Number(e.target.value)\n }));\n }\n }, [0, 1, 2, 3, 4].map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"option\", {\n key: x,\n value: x\n }, x);\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-text\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-text\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var tranRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-2-2-3 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Tran\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"-50\",\n max: \"50\",\n step: \"1\",\n value: appState.serverSetting.serverSetting.tran,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n tran: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.tran)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: appState.serverSetting.serverSetting.predictF0 == 1,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n predictF0: e.target.checked ? 1 : 0\n }));\n }\n }), \" predict f0\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var clusterInferRatioRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Cluster infer ratio\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0\",\n max: \"1\",\n step: \"0.1\",\n value: appState.serverSetting.serverSetting.clusterInferRatio,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n clusterInferRatio: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.clusterInferRatio)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var noiceScaleRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Noice Scale\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0\",\n max: \"1\",\n step: \"0.1\",\n value: appState.serverSetting.serverSetting.noiceScale,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n noiceScale: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.noiceScale)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var silentThresholdRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Silent Threshold\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0.00000\",\n max: \"0.001\",\n step: \"0.00001\",\n value: appState.serverSetting.serverSetting.silentThreshold,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n silentThreshold: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.silentThreshold)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var speakerSetting = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), null, appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.trigger, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition-header\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"caret\"\n }, accodionButton), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"title\",\n onClick: function onClick() {\n appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.updateState(!appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.checked());\n }\n }, \"Speaker Setting\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition-content\"\n }, dstIdRow, tranRow, clusterInferRatioRow, noiceScaleRow, silentThresholdRow)));\n }, [dstIdRow, tranRow, noiceScaleRow, silentThresholdRow]);\n return {\n speakerSetting: speakerSetting\n };\n};\n\n//# sourceURL=webpack://demo/./src/105_speaker_setting.tsx?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useSpeakerSetting\": () => (/* binding */ useSpeakerSetting)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/101_HeaderButton */ \"./src/components/101_HeaderButton.tsx\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\nvar useSpeakerSetting = function useSpeakerSetting() {\n var appState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_2__.useAppState)();\n var accodionButton = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n var accodionButtonProps = {\n stateControlCheckbox: appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox,\n tooltip: \"Open/Close\",\n onIcon: [\"fas\", \"caret-up\"],\n offIcon: [\"fas\", \"caret-up\"],\n animation: _components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__.AnimationTypes.spinner,\n tooltipClass: \"tooltip-right\"\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_components_101_HeaderButton__WEBPACK_IMPORTED_MODULE_3__.HeaderButton, accodionButtonProps);\n }, []);\n var dstIdRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n var settings = appState.serverSetting.serverSetting;\n var speakers = settings.speakers;\n if (!speakers) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), null);\n }\n var currentValue = Object.values(speakers).includes(appState.serverSetting.serverSetting.dstId) ? appState.serverSetting.serverSetting.dstId : -1;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-2-1-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1\"\n }, \"Destination Speaker Id\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-select-container\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"select\", {\n className: \"body-select\",\n value: currentValue,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n dstId: Number(e.target.value)\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"option\", {\n key: \"unknown\",\n value: -1\n }, \"unknwon(-1)\"), Object.keys(speakers).map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"option\", {\n key: x,\n value: speakers[x]\n }, x, \"(\", speakers[x], \")\");\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-text\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-text\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var tranRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-2-2-3 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Tran\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"-50\",\n max: \"50\",\n step: \"1\",\n value: appState.serverSetting.serverSetting.tran,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n tran: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.tran)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: appState.serverSetting.serverSetting.predictF0 == 1,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n predictF0: e.target.checked ? 1 : 0\n }));\n }\n }), \" predict f0\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var clusterInferRatioRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Cluster infer ratio\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0\",\n max: \"1\",\n step: \"0.1\",\n value: appState.serverSetting.serverSetting.clusterInferRatio,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n clusterInferRatio: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.clusterInferRatio)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var noiceScaleRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Noice Scale\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0\",\n max: \"1\",\n step: \"0.1\",\n value: appState.serverSetting.serverSetting.noiceScale,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n noiceScale: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.noiceScale)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var silentThresholdRow = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1 \"\n }, \"Silent Threshold\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"input\", {\n type: \"range\",\n className: \"body-item-input-slider\",\n min: \"0.00000\",\n max: \"0.001\",\n step: \"0.00001\",\n value: appState.serverSetting.serverSetting.silentThreshold,\n onChange: function onChange(e) {\n appState.serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, appState.serverSetting.serverSetting), {}, {\n silentThreshold: Number(e.target.value)\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"body-item-input-slider-val\"\n }, appState.serverSetting.serverSetting.silentThreshold)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"body-button-container\"\n }));\n }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings]);\n var speakerSetting = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), null, appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.trigger, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition-header\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"caret\"\n }, accodionButton), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"span\", {\n className: \"title\",\n onClick: function onClick() {\n appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.updateState(!appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox.checked());\n }\n }, \"Speaker Setting\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n className: \"partition-content\"\n }, dstIdRow, tranRow, clusterInferRatioRow, noiceScaleRow, silentThresholdRow)));\n }, [dstIdRow, tranRow, noiceScaleRow, silentThresholdRow]);\n return {\n speakerSetting: speakerSetting\n };\n};\n\n//# sourceURL=webpack://demo/./src/105_speaker_setting.tsx?"); /***/ }), diff --git a/client/demo_so-vits-svc_40v2/src/102_model_setting.tsx b/client/demo_so-vits-svc_40v2/src/102_model_setting.tsx index bedd1d33..e303424d 100644 --- a/client/demo_so-vits-svc_40v2/src/102_model_setting.tsx +++ b/client/demo_so-vits-svc_40v2/src/102_model_setting.tsx @@ -57,6 +57,7 @@ export const useModelSettingArea = (): ServerSettingState => { file: file } }) + } const onConfigFileClearClicked = () => { appState.serverSetting.setFileUploadSetting({ diff --git a/client/demo_so-vits-svc_40v2/src/105_speaker_setting.tsx b/client/demo_so-vits-svc_40v2/src/105_speaker_setting.tsx index 68f1a1f0..f075c242 100644 --- a/client/demo_so-vits-svc_40v2/src/105_speaker_setting.tsx +++ b/client/demo_so-vits-svc_40v2/src/105_speaker_setting.tsx @@ -1,3 +1,4 @@ +import { ServerInfoSoVitsSVC } from "@dannadori/voice-changer-client-js"; import React, { useMemo, useState } from "react" import { useAppState } from "./001_provider/001_AppStateProvider"; import { AnimationTypes, HeaderButton, HeaderButtonProps } from "./components/101_HeaderButton"; @@ -5,6 +6,7 @@ import { AnimationTypes, HeaderButton, HeaderButtonProps } from "./components/10 export const useSpeakerSetting = () => { const appState = useAppState() + const accodionButton = useMemo(() => { const accodionButtonProps: HeaderButtonProps = { stateControlCheckbox: appState.frontendManagerState.stateControls.openSpeakerSettingCheckbox, @@ -18,17 +20,26 @@ export const useSpeakerSetting = () => { }, []); const dstIdRow = useMemo(() => { + const settings = appState.serverSetting.serverSetting as ServerInfoSoVitsSVC + const speakers = settings.speakers + if (!speakers) { + return <> + } + + const currentValue = Object.values(speakers).includes(appState.serverSetting.serverSetting.dstId) ? appState.serverSetting.serverSetting.dstId : -1 + return (
Destination Speaker Id
- { appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, dstId: Number(e.target.value) }) }}> + { - [0, 1, 2, 3, 4].map(x => { - return + Object.keys(speakers).map(x => { + return }) } diff --git a/client/lib/src/const.ts b/client/lib/src/const.ts index 380ea6ba..dfa61c2f 100644 --- a/client/lib/src/const.ts +++ b/client/lib/src/const.ts @@ -112,6 +112,9 @@ export type ServerInfo = VoiceChangerServerSetting & { onnxExecutionProviders: OnnxExecutionProvider[] } +export type ServerInfoSoVitsSVC = ServerInfo & { + speakers: { [key: string]: number } +} export const DefaultServerSetting_MMVCv15: ServerInfo = { srcId: 0, dstId: 101, diff --git a/server/voice_changer/SoVitsSvc40v2/SoVitsSvc40v2.py b/server/voice_changer/SoVitsSvc40v2/SoVitsSvc40v2.py index 6666c0c3..6401d89c 100644 --- a/server/voice_changer/SoVitsSvc40v2/SoVitsSvc40v2.py +++ b/server/voice_changer/SoVitsSvc40v2/SoVitsSvc40v2.py @@ -11,7 +11,7 @@ else: sys.path.append("so-vits-svc-40v2") import io -from dataclasses import dataclass, asdict +from dataclasses import dataclass, asdict, field from functools import reduce import numpy as np import torch @@ -29,7 +29,7 @@ providers = ['OpenVINOExecutionProvider', "CUDAExecutionProvider", "DmlExecution @dataclass class SoVitsSvc40v2Settings(): gpu: int = 0 - dstId: int = 0 + dstId: int = -1 f0Detector: str = "dio" # dio or harvest tran: int = 20 @@ -44,6 +44,10 @@ class SoVitsSvc40v2Settings(): onnxModelFile: str = "" configFile: str = "" + speakers: dict[str, int] = field( + default_factory=lambda: {} + ) + # ↓mutableな物だけ列挙 intData = ["gpu", "dstId", "tran", "predictF0", "extraConvertSize"] floatData = ["noiceScale", "silentThreshold", "clusterInferRatio"] @@ -65,38 +69,30 @@ class SoVitsSvc40v2: self.settings.configFile = config self.hps = utils.get_hparams_from_file(config) + self.settings.speakers = self.hps.spk # hubert model try: # vec_path = hubertTorchModel vec_path = "hubert/checkpoint_best_legacy_500.pt" - print("hubert 1 ", hubertTorchModel) models, saved_cfg, task = checkpoint_utils.load_model_ensemble_and_task( [vec_path], suffix="", ) - print("hubert 2 ", hubertTorchModel) model = models[0] - print("hubert 3 ", hubertTorchModel) model.eval() - print("hubert 4 ", hubertTorchModel) self.hubert_model = model.cpu() - print("hubert 5 ", hubertTorchModel) except Exception as e: - print("EXCEPTION1", e) + print("EXCEPTION during loading hubert/contentvec model", e) # cluster try: if os.path.exists(clusterTorchModel): - print("load kmean11", clusterTorchModel) self.cluster_model = cluster.get_cluster_model(clusterTorchModel) - print("load kmean12", clusterTorchModel) else: - print("load kmean21", clusterTorchModel) self.cluster_model = None - print("load kmean22", clusterTorchModel) except Exception as e: - print("EXCEPTION2", e) + print("EXCEPTION during loading cluster model ", e) if pyTorch_model_file != None: self.settings.pyTorchModelFile = pyTorch_model_file