diff --git a/client/demo/dist/assets/gui_settings/RVC.json b/client/demo/dist/assets/gui_settings/RVC.json index 58f4bb4a..933c733d 100644 --- a/client/demo/dist/assets/gui_settings/RVC.json +++ b/client/demo/dist/assets/gui_settings/RVC.json @@ -40,6 +40,10 @@ { "name": "onnxExecutor", "options": {} + }, + { + "name": "modelSamplingRate", + "options": {} } ], "modelSetting": [ diff --git a/client/demo/dist/index.js b/client/demo/dist/index.js index 002a73f4..7878bb12 100644 --- a/client/demo/dist/index.js +++ b/client/demo/dist/index.js @@ -393,14 +393,14 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), -/***/ "./src/components/demo/components/301-2-5_ModelSelectRow copy.tsx": -/*!************************************************************************!*\ - !*** ./src/components/demo/components/301-2-5_ModelSelectRow copy.tsx ***! - \************************************************************************/ +/***/ "./src/components/demo/components/301-2-5_ModelSelectRow.tsx": +/*!*******************************************************************!*\ + !*** ./src/components/demo/components/301-2-5_ModelSelectRow.tsx ***! + \*******************************************************************/ /***/ ((__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 */ \"ModelSelectRow\": () => (/* binding */ ModelSelectRow)\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 _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @dannadori/voice-changer-client-js */ \"./node_modules/@dannadori/voice-changer-client-js/dist/index.js\");\n/* harmony import */ var _dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../001_GuiStateProvider */ \"./src/components/demo/001_GuiStateProvider.tsx\");\n\n\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\n\nvar ModelSelectRow = function ModelSelectRow() {\n var appState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__.useAppState)();\n var guiState = (0,_001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_6__.useGuiState)();\n var onnxSelectRow = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n var _fileUploadSetting$on, _fileUploadSetting$on2, _fileUploadSetting$on3, _fileUploadSetting$py, _fileUploadSetting$py2, _fileUploadSetting$py3;\n var slot = guiState.modelSlotNum;\n var fileUploadSetting = appState.serverSetting.fileUploadSettings[slot];\n if (!fileUploadSetting) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement((react__WEBPACK_IMPORTED_MODULE_3___default().Fragment), null);\n }\n var onnxModelFilenameText = ((_fileUploadSetting$on = fileUploadSetting.onnxModel) === null || _fileUploadSetting$on === void 0 ? void 0 : _fileUploadSetting$on.filename) || ((_fileUploadSetting$on2 = fileUploadSetting.onnxModel) === null || _fileUploadSetting$on2 === void 0 ? void 0 : (_fileUploadSetting$on3 = _fileUploadSetting$on2.file) === null || _fileUploadSetting$on3 === void 0 ? void 0 : _fileUploadSetting$on3.name) || \"\";\n var pyTorchFilenameText = ((_fileUploadSetting$py = fileUploadSetting.pyTorchModel) === null || _fileUploadSetting$py === void 0 ? void 0 : _fileUploadSetting$py.filename) || ((_fileUploadSetting$py2 = fileUploadSetting.pyTorchModel) === null || _fileUploadSetting$py2 === void 0 ? void 0 : (_fileUploadSetting$py3 = _fileUploadSetting$py2.file) === null || _fileUploadSetting$py3 === void 0 ? void 0 : _fileUploadSetting$py3.name) || \"\";\n var modelFilenameText = onnxModelFilenameText + pyTorchFilenameText;\n var onModelFileLoadClicked = /*#__PURE__*/function () {\n var _ref = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark(function _callee() {\n var file;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0,_dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__.fileSelector)(\"\");\n case 2:\n file = _context.sent;\n if (!(file.name.endsWith(\".onnx\") == false && file.name.endsWith(\".pth\") == false)) {\n _context.next = 6;\n break;\n }\n alert(\"モデルファイルの拡張子は.onnxか.pthである必要があります。(Extension of the model file should be .onnx or .pth.)\");\n return _context.abrupt(\"return\");\n case 6:\n if (!(file.name.endsWith(\".onnx\") == true)) {\n _context.next = 9;\n break;\n }\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n onnxModel: {\n file: file\n },\n pyTorchModel: null\n }));\n return _context.abrupt(\"return\");\n case 9:\n if (!(file.name.endsWith(\".pth\") == true)) {\n _context.next = 12;\n break;\n }\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n pyTorchModel: {\n file: file\n },\n onnxModel: null\n }));\n return _context.abrupt(\"return\");\n case 12:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function onModelFileLoadClicked() {\n return _ref.apply(this, arguments);\n };\n }();\n var onModelFileClearClicked = function onModelFileClearClicked() {\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n onnxModel: null,\n pyTorchModel: null\n }));\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-item-title left-padding-2\"\n }, \"Model(.onnx or .pth)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", null, modelFilenameText)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button-container\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button\",\n onClick: onModelFileLoadClicked\n }, \"select\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button left-margin-1\",\n onClick: onModelFileClearClicked\n }, \"clear\")));\n }, [appState.serverSetting.fileUploadSettings, appState.serverSetting.setFileUploadSetting, guiState.modelSlotNum]);\n return onnxSelectRow;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components/301-2-5_ModelSelectRow_copy.tsx?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ModelSelectRow\": () => (/* binding */ ModelSelectRow)\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 _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @dannadori/voice-changer-client-js */ \"./node_modules/@dannadori/voice-changer-client-js/dist/index.js\");\n/* harmony import */ var _dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../001_GuiStateProvider */ \"./src/components/demo/001_GuiStateProvider.tsx\");\n\n\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\n\nvar ModelSelectRow = function ModelSelectRow() {\n var appState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__.useAppState)();\n var guiState = (0,_001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_6__.useGuiState)();\n var onnxSelectRow = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(function () {\n var _fileUploadSetting$on, _fileUploadSetting$on2, _fileUploadSetting$on3, _fileUploadSetting$py, _fileUploadSetting$py2, _fileUploadSetting$py3;\n var slot = guiState.modelSlotNum;\n var fileUploadSetting = appState.serverSetting.fileUploadSettings[slot];\n if (!fileUploadSetting) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement((react__WEBPACK_IMPORTED_MODULE_3___default().Fragment), null);\n }\n var onnxModelFilenameText = ((_fileUploadSetting$on = fileUploadSetting.onnxModel) === null || _fileUploadSetting$on === void 0 ? void 0 : _fileUploadSetting$on.filename) || ((_fileUploadSetting$on2 = fileUploadSetting.onnxModel) === null || _fileUploadSetting$on2 === void 0 ? void 0 : (_fileUploadSetting$on3 = _fileUploadSetting$on2.file) === null || _fileUploadSetting$on3 === void 0 ? void 0 : _fileUploadSetting$on3.name) || \"\";\n var pyTorchFilenameText = ((_fileUploadSetting$py = fileUploadSetting.pyTorchModel) === null || _fileUploadSetting$py === void 0 ? void 0 : _fileUploadSetting$py.filename) || ((_fileUploadSetting$py2 = fileUploadSetting.pyTorchModel) === null || _fileUploadSetting$py2 === void 0 ? void 0 : (_fileUploadSetting$py3 = _fileUploadSetting$py2.file) === null || _fileUploadSetting$py3 === void 0 ? void 0 : _fileUploadSetting$py3.name) || \"\";\n var modelFilenameText = onnxModelFilenameText + pyTorchFilenameText;\n var onModelFileLoadClicked = /*#__PURE__*/function () {\n var _ref = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark(function _callee() {\n var file;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0,_dannadori_voice_changer_client_js__WEBPACK_IMPORTED_MODULE_4__.fileSelector)(\"\");\n case 2:\n file = _context.sent;\n if (!(file.name.endsWith(\".onnx\") == false && file.name.endsWith(\".pth\") == false)) {\n _context.next = 6;\n break;\n }\n alert(\"モデルファイルの拡張子は.onnxか.pthである必要があります。(Extension of the model file should be .onnx or .pth.)\");\n return _context.abrupt(\"return\");\n case 6:\n if (!(file.name.endsWith(\".onnx\") == true)) {\n _context.next = 9;\n break;\n }\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n onnxModel: {\n file: file\n },\n pyTorchModel: null\n }));\n return _context.abrupt(\"return\");\n case 9:\n if (!(file.name.endsWith(\".pth\") == true)) {\n _context.next = 12;\n break;\n }\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n pyTorchModel: {\n file: file\n },\n onnxModel: null\n }));\n return _context.abrupt(\"return\");\n case 12:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function onModelFileLoadClicked() {\n return _ref.apply(this, arguments);\n };\n }();\n var onModelFileClearClicked = function onModelFileClearClicked() {\n appState.serverSetting.setFileUploadSetting(slot, _objectSpread(_objectSpread({}, appState.serverSetting.fileUploadSettings[slot]), {}, {\n onnxModel: null,\n pyTorchModel: null\n }));\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-item-title left-padding-2\"\n }, \"Model(.onnx or .pth)\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", null, modelFilenameText)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button-container\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button\",\n onClick: onModelFileLoadClicked\n }, \"select\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(\"div\", {\n className: \"body-button left-margin-1\",\n onClick: onModelFileClearClicked\n }, \"clear\")));\n }, [appState.serverSetting.fileUploadSettings, appState.serverSetting.setFileUploadSetting, guiState.modelSlotNum]);\n return onnxSelectRow;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components/301-2-5_ModelSelectRow.tsx?"); /***/ }), @@ -532,7 +532,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 */ \"ModelUploaderRow\": () => (/* binding */ ModelUploaderRow)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../001_GuiStateProvider */ \"./src/components/demo/001_GuiStateProvider.tsx\");\n/* harmony import */ var _301_1_ConfigSelectRow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./301-1_ConfigSelectRow */ \"./src/components/demo/components/301-1_ConfigSelectRow.tsx\");\n/* harmony import */ var _301_2_5_ModelSelectRow_copy__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./301-2-5_ModelSelectRow copy */ \"./src/components/demo/components/301-2-5_ModelSelectRow copy.tsx\");\n/* harmony import */ var _301_2_ONNXSelectRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./301-2_ONNXSelectRow */ \"./src/components/demo/components/301-2_ONNXSelectRow.tsx\");\n/* harmony import */ var _301_3_PyTorchSelectRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./301-3_PyTorchSelectRow */ \"./src/components/demo/components/301-3_PyTorchSelectRow.tsx\");\n/* harmony import */ var _301_4_CorrespondenceSelectRow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./301-4_CorrespondenceSelectRow */ \"./src/components/demo/components/301-4_CorrespondenceSelectRow.tsx\");\n/* harmony import */ var _301_5_PyTorchClusterSelectRow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./301-5_PyTorchClusterSelectRow */ \"./src/components/demo/components/301-5_PyTorchClusterSelectRow.tsx\");\n/* harmony import */ var _301_6_FeatureSelectRow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./301-6_FeatureSelectRow */ \"./src/components/demo/components/301-6_FeatureSelectRow.tsx\");\n/* harmony import */ var _301_7_IndexSelectRow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./301-7_IndexSelectRow */ \"./src/components/demo/components/301-7_IndexSelectRow.tsx\");\n/* harmony import */ var _301_8_HalfPrescisionRow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./301-8_HalfPrescisionRow */ \"./src/components/demo/components/301-8_HalfPrescisionRow.tsx\");\n/* harmony import */ var _301_9_ModelUploadButtonRow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./301-9_ModelUploadButtonRow */ \"./src/components/demo/components/301-9_ModelUploadButtonRow.tsx\");\n/* harmony import */ var _301_a_ModelSlotRow__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./301-a_ModelSlotRow */ \"./src/components/demo/components/301-a_ModelSlotRow.tsx\");\n/* harmony import */ var _301_c_DefaultTuneRow__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./301-c_DefaultTuneRow */ \"./src/components/demo/components/301-c_DefaultTuneRow.tsx\");\n/* harmony import */ var _301_d_FrameworkSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./301-d_FrameworkSelector */ \"./src/components/demo/components/301-d_FrameworkSelector.tsx\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ModelUploaderRow = function ModelUploaderRow(props) {\n var guiState = (0,_001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_1__.useGuiState)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n guiState.setShowPyTorchModelUpload(props.defaultEnablePyTorch);\n }, []);\n var modelUploaderRow = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var pytorchEnableCheckBox = props.showPyTorchEnableCheckBox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: guiState.showPyTorchModelUpload,\n onChange: function onChange(e) {\n guiState.setShowPyTorchModelUpload(e.target.checked);\n }\n }), \" enable PyTorch\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1\"\n }, \"Model Uploader\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, pytorchEnableCheckBox)), props.showModelSlot ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_a_ModelSlotRow__WEBPACK_IMPORTED_MODULE_12__.ModelSlotRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showFrameworkSelector ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_d_FrameworkSelector__WEBPACK_IMPORTED_MODULE_14__.FrameworkSelectorRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showConfig ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_1_ConfigSelectRow__WEBPACK_IMPORTED_MODULE_2__.ConfigSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.oneModelFileType ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_2_5_ModelSelectRow_copy__WEBPACK_IMPORTED_MODULE_3__.ModelSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showOnnx ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_2_ONNXSelectRow__WEBPACK_IMPORTED_MODULE_4__.ONNXSelectRow, {\n onlyWhenSelected: props.onlySelectedFramework\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showPyTorch ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_3_PyTorchSelectRow__WEBPACK_IMPORTED_MODULE_5__.PyTorchSelectRow, {\n onlyWhenSelected: props.onlySelectedFramework\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showCorrespondence ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_4_CorrespondenceSelectRow__WEBPACK_IMPORTED_MODULE_6__.CorrespondenceSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showPyTorchCluster ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_5_PyTorchClusterSelectRow__WEBPACK_IMPORTED_MODULE_7__.PyTorchClusterSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showFeature ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_6_FeatureSelectRow__WEBPACK_IMPORTED_MODULE_8__.FeatureSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showIndex ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_7_IndexSelectRow__WEBPACK_IMPORTED_MODULE_9__.IndexSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showHalfPrecision ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_8_HalfPrescisionRow__WEBPACK_IMPORTED_MODULE_10__.HalfPrecisionRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showDefaultTune ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_c_DefaultTuneRow__WEBPACK_IMPORTED_MODULE_13__.DefaultTuneRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_9_ModelUploadButtonRow__WEBPACK_IMPORTED_MODULE_11__.ModelUploadButtonRow, null));\n }, [guiState.showPyTorchModelUpload]);\n return modelUploaderRow;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components/301_ModelUploaderRow.tsx?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ModelUploaderRow\": () => (/* binding */ ModelUploaderRow)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../001_GuiStateProvider */ \"./src/components/demo/001_GuiStateProvider.tsx\");\n/* harmony import */ var _301_1_ConfigSelectRow__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./301-1_ConfigSelectRow */ \"./src/components/demo/components/301-1_ConfigSelectRow.tsx\");\n/* harmony import */ var _301_2_5_ModelSelectRow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./301-2-5_ModelSelectRow */ \"./src/components/demo/components/301-2-5_ModelSelectRow.tsx\");\n/* harmony import */ var _301_2_ONNXSelectRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./301-2_ONNXSelectRow */ \"./src/components/demo/components/301-2_ONNXSelectRow.tsx\");\n/* harmony import */ var _301_3_PyTorchSelectRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./301-3_PyTorchSelectRow */ \"./src/components/demo/components/301-3_PyTorchSelectRow.tsx\");\n/* harmony import */ var _301_4_CorrespondenceSelectRow__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./301-4_CorrespondenceSelectRow */ \"./src/components/demo/components/301-4_CorrespondenceSelectRow.tsx\");\n/* harmony import */ var _301_5_PyTorchClusterSelectRow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./301-5_PyTorchClusterSelectRow */ \"./src/components/demo/components/301-5_PyTorchClusterSelectRow.tsx\");\n/* harmony import */ var _301_6_FeatureSelectRow__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./301-6_FeatureSelectRow */ \"./src/components/demo/components/301-6_FeatureSelectRow.tsx\");\n/* harmony import */ var _301_7_IndexSelectRow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./301-7_IndexSelectRow */ \"./src/components/demo/components/301-7_IndexSelectRow.tsx\");\n/* harmony import */ var _301_8_HalfPrescisionRow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./301-8_HalfPrescisionRow */ \"./src/components/demo/components/301-8_HalfPrescisionRow.tsx\");\n/* harmony import */ var _301_9_ModelUploadButtonRow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./301-9_ModelUploadButtonRow */ \"./src/components/demo/components/301-9_ModelUploadButtonRow.tsx\");\n/* harmony import */ var _301_a_ModelSlotRow__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./301-a_ModelSlotRow */ \"./src/components/demo/components/301-a_ModelSlotRow.tsx\");\n/* harmony import */ var _301_c_DefaultTuneRow__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./301-c_DefaultTuneRow */ \"./src/components/demo/components/301-c_DefaultTuneRow.tsx\");\n/* harmony import */ var _301_d_FrameworkSelector__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./301-d_FrameworkSelector */ \"./src/components/demo/components/301-d_FrameworkSelector.tsx\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ModelUploaderRow = function ModelUploaderRow(props) {\n var guiState = (0,_001_GuiStateProvider__WEBPACK_IMPORTED_MODULE_1__.useGuiState)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n guiState.setShowPyTorchModelUpload(props.defaultEnablePyTorch);\n }, []);\n var modelUploaderRow = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n var pytorchEnableCheckBox = props.showPyTorchEnableCheckBox ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n type: \"checkbox\",\n checked: guiState.showPyTorchModelUpload,\n onChange: function onChange(e) {\n guiState.setShowPyTorchModelUpload(e.target.checked);\n }\n }), \" enable PyTorch\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-row split-3-3-4 left-padding-1 guided\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-title left-padding-1\"\n }, \"Model Uploader\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"body-item-text\"\n }, pytorchEnableCheckBox)), props.showModelSlot ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_a_ModelSlotRow__WEBPACK_IMPORTED_MODULE_12__.ModelSlotRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showFrameworkSelector ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_d_FrameworkSelector__WEBPACK_IMPORTED_MODULE_14__.FrameworkSelectorRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showConfig ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_1_ConfigSelectRow__WEBPACK_IMPORTED_MODULE_2__.ConfigSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.oneModelFileType ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_2_5_ModelSelectRow__WEBPACK_IMPORTED_MODULE_3__.ModelSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showOnnx ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_2_ONNXSelectRow__WEBPACK_IMPORTED_MODULE_4__.ONNXSelectRow, {\n onlyWhenSelected: props.onlySelectedFramework\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showPyTorch ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_3_PyTorchSelectRow__WEBPACK_IMPORTED_MODULE_5__.PyTorchSelectRow, {\n onlyWhenSelected: props.onlySelectedFramework\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showCorrespondence ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_4_CorrespondenceSelectRow__WEBPACK_IMPORTED_MODULE_6__.CorrespondenceSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showPyTorchCluster ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_5_PyTorchClusterSelectRow__WEBPACK_IMPORTED_MODULE_7__.PyTorchClusterSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showFeature ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_6_FeatureSelectRow__WEBPACK_IMPORTED_MODULE_8__.FeatureSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showIndex ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_7_IndexSelectRow__WEBPACK_IMPORTED_MODULE_9__.IndexSelectRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showHalfPrecision ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_8_HalfPrescisionRow__WEBPACK_IMPORTED_MODULE_10__.HalfPrecisionRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), props.showDefaultTune ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_c_DefaultTuneRow__WEBPACK_IMPORTED_MODULE_13__.DefaultTuneRow, null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_301_9_ModelUploadButtonRow__WEBPACK_IMPORTED_MODULE_11__.ModelUploadButtonRow, null));\n }, [guiState.showPyTorchModelUpload]);\n return modelUploaderRow;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components/301_ModelUploaderRow.tsx?"); /***/ }), diff --git a/client/demo/public/assets/gui_settings/RVC.json b/client/demo/public/assets/gui_settings/RVC.json index 58f4bb4a..933c733d 100644 --- a/client/demo/public/assets/gui_settings/RVC.json +++ b/client/demo/public/assets/gui_settings/RVC.json @@ -40,6 +40,10 @@ { "name": "onnxExecutor", "options": {} + }, + { + "name": "modelSamplingRate", + "options": {} } ], "modelSetting": [ diff --git a/server/voice_changer/RVC/ModelWrapper.py b/server/voice_changer/RVC/ModelWrapper.py index 5f2650f2..1c05188c 100644 --- a/server/voice_changer/RVC/ModelWrapper.py +++ b/server/voice_changer/RVC/ModelWrapper.py @@ -30,10 +30,13 @@ class ModelWrapper: self.embChannels = metadata["embChannels"] print(f"[Voice Changer] Onnx metadata: sr:{self.samplingRate}, f0:{self.f0}") except: - self.samplingRate = -1 + self.samplingRate = 48000 self.f0 = True - print(f"[Voice Changer] Onnx version is old. Please regenerate onnxfile. Fallback to default") + self.embChannels = 256 + print(f"[Voice Changer] ############## !!!! CAUTION !!!! ####################") + print(f"[Voice Changer] This onnx's version is depricated. Please regenerate onnxfile. Fallback to default") print(f"[Voice Changer] Onnx metadata: sr:{self.samplingRate}, f0:{self.f0}") + print(f"[Voice Changer] ############## !!!! CAUTION !!!! ####################") def getSamplingRate(self): return self.samplingRate diff --git a/server/voice_changer/RVC/RVC.py b/server/voice_changer/RVC/RVC.py index 555d8a5e..18199feb 100644 --- a/server/voice_changer/RVC/RVC.py +++ b/server/voice_changer/RVC/RVC.py @@ -79,7 +79,7 @@ class RVCSettings(): rvcQuality: int = 0 silenceFront: int = 1 # 0:off, 1:on modelSamplingRate: int = 48000 - modelSlotIndex: int = 0 + modelSlotIndex: int = -1 speakers: dict[str, int] = field( default_factory=lambda: {} @@ -118,13 +118,30 @@ class RVC: params_str = props["params"] params = json.loads(params_str) - self.settings.modelSlots[self.tmp_slot] = ModelSlot( - pyTorchModelFile=props["files"]["pyTorchModelFilename"], - onnxModelFile=props["files"]["onnxModelFilename"], - featureFile=props["files"]["featureFilename"], - indexFile=props["files"]["indexFilename"], - defaultTrans=params["trans"] - ) + # self.settings.modelSlots[self.tmp_slot] = ModelSlot( + # pyTorchModelFile=props["files"]["pyTorchModelFilename"], + # onnxModelFile=props["files"]["onnxModelFilename"], + # featureFile=props["files"]["featureFilename"], + # indexFile=props["files"]["indexFilename"], + # defaultTrans=params["trans"] + # ) + + newSlot = asdict(self.settings.modelSlots[self.tmp_slot]) + newSlot.update({ + "pyTorchModelFile": props["files"]["pyTorchModelFilename"], + "onnxModelFile": props["files"]["onnxModelFilename"], + "featureFile": props["files"]["featureFilename"], + "indexFile": props["files"]["indexFilename"], + "defaultTrans": params["trans"] + }) + # .update({ + # pyTorchModelFile: props["files"]["pyTorchModelFilename"], + # onnxModelFile: props["files"]["onnxModelFilename"], + # featureFile: props["files"]["featureFilename"], + # indexFile: props["files"]["indexFilename"], + # defaultTrans: params["trans"] + # }) + self.settings.modelSlots[self.tmp_slot] = ModelSlot(**newSlot) print("[Voice Changer] RVC loading... slot:", self.tmp_slot) @@ -213,8 +230,8 @@ class RVC: self.next_onnx_session = ModelWrapper(onnxModelFile) self.settings.modelSlots[slot].samplingRateOnnx = self.next_onnx_session.getSamplingRate() self.settings.modelSlots[slot].f0Onnx = self.next_onnx_session.getF0() - if self.settings.modelSlots[slot].samplingRate == -1: # ONNXにsampling rateが入っていない - self.settings.modelSlots[slot].samplingRate = self.settings.modelSamplingRate + # if self.settings.modelSlots[slot].samplingRate == -1: # ONNXにsampling rateが入っていない + # self.settings.modelSlots[slot].samplingRate = self.settings.modelSamplingRate self.settings.modelSlots[slot].embChannelsOnnx = self.next_onnx_session.getEmbChannels() # ONNXがある場合は、ONNXの設定を優先 @@ -228,6 +245,8 @@ class RVC: self.next_feature_file = self.settings.modelSlots[slot].featureFile self.next_index_file = self.settings.modelSlots[slot].indexFile self.next_trans = self.settings.modelSlots[slot].defaultTrans + self.next_samplingRate = self.settings.modelSlots[slot].samplingRate + self.next_framework = "ONNX" if self.next_onnx_session != None else "PyTorch" print("[Voice Changer] Prepare done.",) return self.get_info() @@ -240,6 +259,8 @@ class RVC: self.feature_file = self.next_feature_file self.index_file = self.next_index_file self.settings.tran = self.next_trans + self.settings.framework = self.next_framework + self.settings.modelSamplingRate = self.next_samplingRate self.next_net_g = None self.next_onnx_session = None print("[Voice Changer] Switching model..done",) @@ -351,14 +372,13 @@ class RVC: file_index = self.index_file if self.index_file != None else "" file_big_npy = self.feature_file if self.feature_file != None else "" index_rate = self.settings.indexRatio - if_f0 = 1 + if_f0 = 1 if self.settings.modelSlots[self.currentSlot].f0 else 0 f0_file = None f0 = self.settings.modelSlots[self.currentSlot].f0 embChannels = self.settings.modelSlots[self.currentSlot].embChannels - print("embChannels::1:", embChannels) audio_out = vc.pipeline(self.hubert_model, self.onnx_session, sid, audio, times, f0_up_key, f0_method, - file_index, file_big_npy, index_rate, if_f0, f0_file=f0_file, silence_front=self.settings.extraConvertSize / self.settings.modelSamplingRate, f0=f0, embChannels=embChannels) + file_index, file_big_npy, index_rate, if_f0, f0_file=f0_file, silence_front=self.settings.extraConvertSize / self.settings.modelSamplingRate, embChannels=embChannels) result = audio_out * np.sqrt(vol) return result @@ -399,22 +419,21 @@ class RVC: file_index = self.index_file if self.index_file != None else "" file_big_npy = self.feature_file if self.feature_file != None else "" index_rate = self.settings.indexRatio - if_f0 = 1 + if_f0 = 1 if self.settings.modelSlots[self.currentSlot].f0 else 0 f0_file = None - f0 = self.settings.modelSlots[self.currentSlot].f0 embChannels = self.settings.modelSlots[self.currentSlot].embChannels audio_out = vc.pipeline(self.hubert_model, self.net_g, sid, audio, times, f0_up_key, f0_method, - file_index, file_big_npy, index_rate, if_f0, f0_file=f0_file, silence_front=self.settings.extraConvertSize / self.settings.modelSamplingRate, f0=f0, embChannels=embChannels) + file_index, file_big_npy, index_rate, if_f0, f0_file=f0_file, silence_front=self.settings.extraConvertSize / self.settings.modelSamplingRate, embChannels=embChannels) result = audio_out * np.sqrt(vol) return result def inference(self, data): - # if self.settings.modelSlotIndex < -1: - # print("[Voice Changer] No model uploaded.") - # raise NoModeLoadedException("model_common") + if self.settings.modelSlotIndex < -1: + print("[Voice Changer] No model uploaded.") + raise NoModeLoadedException("model_common") if self.currentSlot != self.settings.modelSlotIndex: print(f"Switch model {self.currentSlot} -> {self.settings.modelSlotIndex}") diff --git a/server/voice_changer/RVC/custom_vc_infer_pipeline.py b/server/voice_changer/RVC/custom_vc_infer_pipeline.py index 1e109730..ba53c73a 100644 --- a/server/voice_changer/RVC/custom_vc_infer_pipeline.py +++ b/server/voice_changer/RVC/custom_vc_infer_pipeline.py @@ -84,7 +84,7 @@ class VC(object): f0_coarse = np.rint(f0_mel).astype(np.int) return f0_coarse, f0bak # 1-0 - def vc(self, model, net_g, sid, audio0, pitch, pitchf, times, index, big_npy, index_rate, f0=True, embChannels=256): # ,file_index,file_big_npy + def vc(self, model, net_g, sid, audio0, pitch, pitchf, times, index, big_npy, index_rate, embChannels=256): # ,file_index,file_big_npy feats = torch.from_numpy(audio0) if (self.is_half == True): feats = feats.half() @@ -137,7 +137,7 @@ class VC(object): p_len = torch.tensor([p_len], device=self.device).long() with torch.no_grad(): - if f0 == True: + if pitch != None: audio1 = (net_g.infer(feats, p_len, pitch, pitchf, sid)[0][0, 0] * 32768).data.cpu().float().numpy().astype(np.int16) else: if hasattr(net_g, "infer_pitchless"): @@ -154,7 +154,7 @@ class VC(object): times[2] += (t2 - t1) return audio1 - def pipeline(self, model, net_g, sid, audio, times, f0_up_key, f0_method, file_index, file_big_npy, index_rate, if_f0, f0_file=None, silence_front=0, f0=True, embChannels=256): + def pipeline(self, model, net_g, sid, audio, times, f0_up_key, f0_method, file_index, file_big_npy, index_rate, if_f0, f0_file=None, silence_front=0, embChannels=256): if (file_big_npy != "" and file_index != "" and os.path.exists(file_big_npy) == True and os.path.exists(file_index) == True and index_rate != 0): try: index = faiss.read_index(file_index) @@ -185,10 +185,10 @@ class VC(object): times[1] += (t2 - t1) if self.t_pad_tgt == 0: audio_opt.append(self.vc(model, net_g, sid, audio_pad[t:], pitch[:, t // self.window:]if t is not None else pitch, - pitchf[:, t // self.window:]if t is not None else pitchf, times, index, big_npy, index_rate, f0, embChannels)) + pitchf[:, t // self.window:]if t is not None else pitchf, times, index, big_npy, index_rate, embChannels)) else: audio_opt.append(self.vc(model, net_g, sid, audio_pad[t:], pitch[:, t // self.window:]if t is not None else pitch, - pitchf[:, t // self.window:]if t is not None else pitchf, times, index, big_npy, index_rate, f0, embChannels)[self.t_pad_tgt:-self.t_pad_tgt]) + pitchf[:, t // self.window:]if t is not None else pitchf, times, index, big_npy, index_rate, embChannels)[self.t_pad_tgt:-self.t_pad_tgt]) audio_opt = np.concatenate(audio_opt) del pitch, pitchf, sid