improve some gui

This commit is contained in:
wataru 2023-04-14 11:03:52 +09:00
parent 2c63803f83
commit d9caa75a92
21 changed files with 1196 additions and 2722 deletions

View File

@ -43,7 +43,9 @@
"showFeature": true, "showFeature": true,
"showIndex": true, "showIndex": true,
"showHalfPrecision": true, "showHalfPrecision": true,
"defaultEnablePyTorch": true "defaultEnablePyTorch": true,
"showOnnxExportButton": true
} }
}, },
{ {
@ -55,10 +57,6 @@
{ {
"name": "modelSamplingRate", "name": "modelSamplingRate",
"options": {} "options": {}
},
{
"name": "onnxExport",
"options": {}
} }
], ],
"deviceSetting": [ "deviceSetting": [

View File

@ -1,10 +1 @@
<!DOCTYPE html> <!doctype html><html style="width:100%;height:100%;overflow:hidden"><head><meta charset="utf-8"/><title>Voice Changer Client Demo</title><script defer="defer" src="index.js"></script></head><body style="width:100%;height:100%;margin:0"><div id="app" style="width:100%;height:100%"></div></body></html>
<html style="width: 100%; height: 100%; overflow: hidden">
<head>
<meta charset="utf-8" />
<title>Voice Changer Client Demo</title>
<script defer src="index.js"></script></head>
<body style="width: 100%; height: 100%; margin: 0px">
<div id="app" style="width: 100%; height: 100%"></div>
</body>
</html>

File diff suppressed because one or more lines are too long

31
client/demo/dist/index.js.LICENSE.txt vendored Normal file
View File

@ -0,0 +1,31 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

File diff suppressed because it is too large Load Diff

View File

@ -24,7 +24,7 @@
"@babel/preset-react": "^7.18.6", "@babel/preset-react": "^7.18.6",
"@babel/preset-typescript": "^7.21.4", "@babel/preset-typescript": "^7.21.4",
"@types/node": "^18.15.11", "@types/node": "^18.15.11",
"@types/react": "^18.0.34", "@types/react": "^18.0.35",
"@types/react-dom": "^18.0.11", "@types/react-dom": "^18.0.11",
"autoprefixer": "^10.4.14", "autoprefixer": "^10.4.14",
"babel-loader": "^9.1.2", "babel-loader": "^9.1.2",
@ -34,7 +34,7 @@
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"eslint-webpack-plugin": "^4.0.0", "eslint-webpack-plugin": "^4.0.1",
"html-loader": "^4.2.0", "html-loader": "^4.2.0",
"html-webpack-plugin": "^5.5.0", "html-webpack-plugin": "^5.5.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
@ -46,12 +46,12 @@
"ts-loader": "^9.4.2", "ts-loader": "^9.4.2",
"tsconfig-paths": "^4.2.0", "tsconfig-paths": "^4.2.0",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"webpack": "^5.78.0", "webpack": "^5.79.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.2" "webpack-dev-server": "^4.13.2"
}, },
"dependencies": { "dependencies": {
"@dannadori/voice-changer-client-js": "^1.0.105", "@dannadori/voice-changer-client-js": "^1.0.107",
"@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/fontawesome-svg-core": "^6.4.0",
"@fortawesome/free-brands-svg-icons": "^6.4.0", "@fortawesome/free-brands-svg-icons": "^6.4.0",
"@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0",

View File

@ -43,7 +43,9 @@
"showFeature": true, "showFeature": true,
"showIndex": true, "showIndex": true,
"showHalfPrecision": true, "showHalfPrecision": true,
"defaultEnablePyTorch": true "defaultEnablePyTorch": true,
"showOnnxExportButton": true
} }
}, },
{ {
@ -55,10 +57,6 @@
{ {
"name": "modelSamplingRate", "name": "modelSamplingRate",
"options": {} "options": {}
},
{
"name": "onnxExport",
"options": {}
} }
], ],
"deviceSetting": [ "deviceSetting": [

View File

@ -147,7 +147,7 @@ export const GuiStateProvider = ({ children }: Props) => {
openConverterSettingCheckbox.updateState(true) openConverterSettingCheckbox.updateState(true)
openQualityControlCheckbox.updateState(true) openQualityControlCheckbox.updateState(true)
showLicenseCheckbox.updateState(true) showLicenseCheckbox.updateState(false)
showWaitingCheckbox.updateState(false) showWaitingCheckbox.updateState(false)
}, []) }, [])

View File

@ -36,7 +36,7 @@ import { TrancateNumTresholdRow, TrancateNumTresholdRowProps } from "./component
import { IndexRatioRow, IndexRatioRowProps } from "./components/609_IndexRatioRow" import { IndexRatioRow, IndexRatioRowProps } from "./components/609_IndexRatioRow"
import { RVCQualityRow, RVCQualityRowProps } from "./components/810_RVCQualityRow" import { RVCQualityRow, RVCQualityRowProps } from "./components/810_RVCQualityRow"
import { ModelSamplingRateRow, ModelSamplingRateRowProps } from "./components/303_ModelSamplingRateRow" import { ModelSamplingRateRow, ModelSamplingRateRowProps } from "./components/303_ModelSamplingRateRow"
import { OnnxExportRow, OnnxExportRowProps } from "./components/304_OnnxExportRow" // import { OnnxExportRow, OnnxExportRowProps } from "./components/304_OnnxExportRow"
import { SolaEnableRow, SolaEnableRowProps } from "./components/811_SolaEnableRow" import { SolaEnableRow, SolaEnableRowProps } from "./components/811_SolaEnableRow"
export const catalog: { [key: string]: (props: any) => JSX.Element } = {} export const catalog: { [key: string]: (props: any) => JSX.Element } = {}
@ -66,7 +66,7 @@ const initialize = () => {
addToCatalog("modelUploader", (props: ModelUploaderRowProps) => { return <ModelUploaderRow {...props} /> }) addToCatalog("modelUploader", (props: ModelUploaderRowProps) => { return <ModelUploaderRow {...props} /> })
addToCatalog("framework", (props: FrameworkRowProps) => { return <FrameworkRow {...props} /> }) addToCatalog("framework", (props: FrameworkRowProps) => { return <FrameworkRow {...props} /> })
addToCatalog("modelSamplingRate", (props: ModelSamplingRateRowProps) => { return <ModelSamplingRateRow {...props} /> }) addToCatalog("modelSamplingRate", (props: ModelSamplingRateRowProps) => { return <ModelSamplingRateRow {...props} /> })
addToCatalog("onnxExport", (props: OnnxExportRowProps) => { return <OnnxExportRow {...props} /> }) // addToCatalog("onnxExport", (props: OnnxExportRowProps) => { return <OnnxExportRow {...props} /> })
addToCatalog("audioInput", (props: AudioInputRowProps) => { return <AudioInputRow {...props} /> }) addToCatalog("audioInput", (props: AudioInputRowProps) => { return <AudioInputRow {...props} /> })
addToCatalog("audioOutput", (props: AudioOutputRowProps) => { return <AudioOutputRow {...props} /> }) addToCatalog("audioOutput", (props: AudioOutputRowProps) => { return <AudioOutputRow {...props} /> })

View File

@ -8,16 +8,14 @@ export const Dialogs = () => {
const dialogs = ( const dialogs = (
<div> <div>
{guiState.stateControls.showLicenseCheckbox.trigger} {guiState.stateControls.showLicenseCheckbox.trigger}
{guiState.stateControls.showWaitingCheckbox.trigger}
<div className="dialog-container" id="dialog"> <div className="dialog-container" id="dialog">
{guiState.stateControls.showLicenseCheckbox.trigger} {guiState.stateControls.showLicenseCheckbox.trigger}
<LicenseDialog></LicenseDialog> <LicenseDialog></LicenseDialog>
</div>
{guiState.stateControls.showWaitingCheckbox.trigger}
<div className="dialog-container" id="dialog">
{guiState.stateControls.showWaitingCheckbox.trigger} {guiState.stateControls.showWaitingCheckbox.trigger}
<WaitingDialog></WaitingDialog> <WaitingDialog></WaitingDialog>
</div> </div>
</div> </div>
); );

View File

@ -32,7 +32,7 @@ export const WaitingDialog = () => {
<div className="dialog-title">export onnx file</div> <div className="dialog-title">export onnx file</div>
<div className="dialog-content"> <div className="dialog-content">
{content} {content}
{closeButtonRow} {/* {closeButtonRow} */}
</div> </div>
</div> </div>
); );

View File

@ -1,10 +1,13 @@
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { fileSelector } from "@dannadori/voice-changer-client-js" import { fileSelector, OnnxExporterInfo } from "@dannadori/voice-changer-client-js"
import { useAppState } from "../../../001_provider/001_AppStateProvider" import { useAppState } from "../../../001_provider/001_AppStateProvider"
import { useGuiState } from "../001_GuiStateProvider" import { useGuiState } from "../001_GuiStateProvider"
export type PyTorchSelectRow = {
showOnnxExportButton: boolean
}
export const PyTorchSelectRow = () => { export const PyTorchSelectRow = (props: PyTorchSelectRow) => {
const appState = useAppState() const appState = useAppState()
const guiState = useGuiState() const guiState = useGuiState()
@ -30,6 +33,27 @@ export const PyTorchSelectRow = () => {
}) })
} }
const onnxExportButtonAction = async () => {
if (guiState.isConverting) {
alert("cannot export onnx when voice conversion is enabled")
return
}
document.getElementById("dialog")?.classList.add("dialog-container-show")
guiState.stateControls.showWaitingCheckbox.updateState(true)
const res = await appState.serverSetting.getOnnx() as OnnxExporterInfo
const a = document.createElement("a")
a.href = res.path
a.download = res.filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
guiState.stateControls.showWaitingCheckbox.updateState(false)
}
const onnxExportButton = props.showOnnxExportButton ? <div className="body-button left-margin-1" onClick={onnxExportButtonAction}>export onnx</div> : <></>
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-2">PyTorch(.pth)</div> <div className="body-item-title left-padding-2">PyTorch(.pth)</div>
@ -39,10 +63,11 @@ export const PyTorchSelectRow = () => {
<div className="body-button-container"> <div className="body-button-container">
<div className="body-button" onClick={onPyTorchFileLoadClicked}>select</div> <div className="body-button" onClick={onPyTorchFileLoadClicked}>select</div>
<div className="body-button left-margin-1" onClick={onPyTorchFileClearClicked}>clear</div> <div className="body-button left-margin-1" onClick={onPyTorchFileClearClicked}>clear</div>
{onnxExportButton}
</div> </div>
</div> </div>
) )
}, [guiState.showPyTorchModelUpload, appState.serverSetting.fileUploadSetting, appState.serverSetting.setFileUploadSetting]) }, [guiState.showPyTorchModelUpload, appState.serverSetting.fileUploadSetting, appState.serverSetting.setFileUploadSetting, appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, guiState.isConverting])
return pyTorchSelectRow return pyTorchSelectRow
} }

View File

@ -22,6 +22,8 @@ export type ModelUploaderRowProps = {
showHalfPrecision: boolean showHalfPrecision: boolean
defaultEnablePyTorch: boolean defaultEnablePyTorch: boolean
showOnnxExportButton: boolean
} }
export const ModelUploaderRow = (props: ModelUploaderRowProps) => { export const ModelUploaderRow = (props: ModelUploaderRowProps) => {
@ -48,7 +50,7 @@ export const ModelUploaderRow = (props: ModelUploaderRowProps) => {
</div> </div>
{props.showConfig ? <ConfigSelectRow /> : <></>} {props.showConfig ? <ConfigSelectRow /> : <></>}
{props.showOnnx ? <ONNXSelectRow /> : <></>} {props.showOnnx ? <ONNXSelectRow /> : <></>}
{props.showPyTorch && guiState.showPyTorchModelUpload ? <PyTorchSelectRow /> : <></>} {props.showPyTorch && guiState.showPyTorchModelUpload ? <PyTorchSelectRow showOnnxExportButton={props.showOnnxExportButton || false} /> : <></>}
{props.showHalfPrecision ? <HalfPrecisionRow /> : <></>} {props.showHalfPrecision ? <HalfPrecisionRow /> : <></>}
{props.showCorrespondence ? <CorrespondenceSelectRow /> : <></>} {props.showCorrespondence ? <CorrespondenceSelectRow /> : <></>}
{props.showPyTorchCluster ? <PyTorchClusterSelectRow /> : <></>} {props.showPyTorchCluster ? <PyTorchClusterSelectRow /> : <></>}

View File

@ -9,6 +9,11 @@ export const ModelSamplingRateRow = (_props: ModelSamplingRateRowProps) => {
const appState = useAppState() const appState = useAppState()
const modelSamplingRateRow = useMemo(() => { const modelSamplingRateRow = useMemo(() => {
if (appState.serverSetting.serverSetting.framework != "ONNX") {
return <></>
}
const onModelSamplingRateChanged = (val: ModelSamplingRate) => { const onModelSamplingRateChanged = (val: ModelSamplingRate) => {
appState.serverSetting.updateServerSettings({ appState.serverSetting.updateServerSettings({
...appState.serverSetting.serverSetting, ...appState.serverSetting.serverSetting,
@ -18,10 +23,7 @@ export const ModelSamplingRateRow = (_props: ModelSamplingRateRowProps) => {
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-2">Model Sampling Rate(only for onnx)</div> <div className="body-item-title left-padding-2">Model Sampling Rate</div>
<div className="body-item-text">
<div></div>
</div>
<div className="body-button-container"> <div className="body-button-container">
<select className="body-select" value={appState.serverSetting.serverSetting.modelSamplingRate} onChange={(e) => { <select className="body-select" value={appState.serverSetting.serverSetting.modelSamplingRate} onChange={(e) => {
onModelSamplingRateChanged(e.target.value as unknown as ModelSamplingRate) onModelSamplingRateChanged(e.target.value as unknown as ModelSamplingRate)
@ -32,8 +34,9 @@ export const ModelSamplingRateRow = (_props: ModelSamplingRateRowProps) => {
}) })
} }
</select> </select>
</div>
<div className="body-item-text">
<div></div>
</div> </div>
</div> </div>
) )

View File

@ -1,51 +1,56 @@
//////////////////////////
// currently not used //
//////////////////////////
import React, { useMemo } from "react" import React, { useMemo } from "react"
import { useAppState } from "../../../001_provider/001_AppStateProvider"
import { OnnxExporterInfo } from "@dannadori/voice-changer-client-js";
import { useGuiState } from "../001_GuiStateProvider";
export type OnnxExportRowProps = {
}
export const OnnxExportRow = (_props: OnnxExportRowProps) => {
const appState = useAppState()
const guiState = useGuiState()
const onnxExportRow = useMemo(() => {
const onnxExportButtonClassName = "body-button"
const onnxExportButtonAction = async () => {
if (guiState.isConverting) {
alert("cannot export onnx when voice conversion is enabled")
return
}
document.getElementById("dialog")?.classList.add("dialog-container-show")
guiState.stateControls.showWaitingCheckbox.updateState(true)
const res = await appState.serverSetting.getOnnx() as OnnxExporterInfo
const a = document.createElement("a")
a.href = res.path
a.download = res.filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
guiState.stateControls.showWaitingCheckbox.updateState(false)
}
const onnxExportButtonLabel = "onnx export"
return ( // import { useAppState } from "../../../001_provider/001_AppStateProvider"
<div className="body-row split-3-3-4 left-padding-1 guided"> // import { OnnxExporterInfo } from "@dannadori/voice-changer-client-js";
<div className="body-item-title left-padding-2">Onnx Exporter</div> // import { useGuiState } from "../001_GuiStateProvider";
<div className="body-item-text"> // export type OnnxExportRowProps = {
<div></div> // }
</div>
<div className="body-button-container">
<div className={onnxExportButtonClassName} onClick={onnxExportButtonAction}>{onnxExportButtonLabel}</div>
</div> // export const OnnxExportRow = (_props: OnnxExportRowProps) => {
</div> // const appState = useAppState()
) // const guiState = useGuiState()
}, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, guiState.isConverting])
return onnxExportRow // const onnxExportRow = useMemo(() => {
} // const onnxExportButtonAction = async () => {
// if (guiState.isConverting) {
// alert("cannot export onnx when voice conversion is enabled")
// return
// }
// document.getElementById("dialog")?.classList.add("dialog-container-show")
// guiState.stateControls.showWaitingCheckbox.updateState(true)
// const res = await appState.serverSetting.getOnnx() as OnnxExporterInfo
// const a = document.createElement("a")
// a.href = res.path
// a.download = res.filename;
// document.body.appendChild(a);
// a.click();
// document.body.removeChild(a);
// guiState.stateControls.showWaitingCheckbox.updateState(false)
// }
// const onnxExportButtonClassName = "body-button"
// const onnxExportButtonLabel = "onnx export"
// return (
// <div className="body-row split-3-3-4 left-padding-1 guided">
// <div className="body-item-title left-padding-2">Onnx Exporter</div>
// <div className="body-item-text">
// <div></div>
// </div>
// <div className="body-button-container">
// <div className={onnxExportButtonClassName} onClick={onnxExportButtonAction}>{onnxExportButtonLabel}</div>
// </div>
// </div>
// )
// }, [appState.serverSetting.serverSetting, appState.serverSetting.updateServerSettings, guiState.isConverting])
// return onnxExportRow
// }

View File

@ -135,7 +135,6 @@ body {
background: rgba(233, 233, 255, 0.3); background: rgba(233, 233, 255, 0.3);
transition: all var(--sidebar-transition-time) var(--sidebar-transition-animation); transition: all var(--sidebar-transition-time) var(--sidebar-transition-animation);
} }
/* ROW */ /* ROW */
.split-6-4 { .split-6-4 {
@ -691,6 +690,12 @@ body {
animation-fill-mode: forwards; animation-fill-mode: forwards;
animation-direction: normal; animation-direction: normal;
} }
.state-control-checkbox:checked + .dialog-frame {
display: flex;
}
.state-control-checkbox + .dialog-frame {
display: none;
}
@keyframes dialog-hide { @keyframes dialog-hide {
from { from {

View File

@ -1,16 +1,16 @@
{ {
"name": "@dannadori/voice-changer-client-js", "name": "@dannadori/voice-changer-client-js",
"version": "1.0.105", "version": "1.0.107",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@dannadori/voice-changer-client-js", "name": "@dannadori/voice-changer-client-js",
"version": "1.0.105", "version": "1.0.107",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@types/readable-stream": "^2.3.15", "@types/readable-stream": "^2.3.15",
"amazon-chime-sdk-js": "^3.12.0", "amazon-chime-sdk-js": "^3.13.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"react": "^18.2.0", "react": "^18.2.0",
@ -20,20 +20,20 @@
"devDependencies": { "devDependencies": {
"@types/audioworklet": "^0.0.41", "@types/audioworklet": "^0.0.41",
"@types/node": "^18.15.11", "@types/node": "^18.15.11",
"@types/react": "18.0.34", "@types/react": "18.0.35",
"@types/react-dom": "18.0.11", "@types/react-dom": "18.0.11",
"eslint": "^8.38.0", "eslint": "^8.38.0",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"eslint-webpack-plugin": "^4.0.0", "eslint-webpack-plugin": "^4.0.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.8.7", "prettier": "^2.8.7",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"rimraf": "^5.0.0", "rimraf": "^5.0.0",
"ts-loader": "^9.4.2", "ts-loader": "^9.4.2",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"webpack": "^5.78.0", "webpack": "^5.79.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.2" "webpack-dev-server": "^4.13.2"
} }
@ -1505,9 +1505,9 @@
} }
}, },
"node_modules/@jest/types": { "node_modules/@jest/types": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
"integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jest/schemas": "^29.4.3", "@jest/schemas": "^29.4.3",
@ -1522,9 +1522,9 @@
} }
}, },
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jridgewell/set-array": "^1.0.1", "@jridgewell/set-array": "^1.0.1",
@ -1554,9 +1554,9 @@
} }
}, },
"node_modules/@jridgewell/source-map": { "node_modules/@jridgewell/source-map": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/gen-mapping": "^0.3.0",
@ -1570,9 +1570,9 @@
"dev": true "dev": true
}, },
"node_modules/@jridgewell/trace-mapping": { "node_modules/@jridgewell/trace-mapping": {
"version": "0.3.17", "version": "0.3.18",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jridgewell/resolve-uri": "3.1.0", "@jridgewell/resolve-uri": "3.1.0",
@ -1675,9 +1675,9 @@
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
}, },
"node_modules/@sinclair/typebox": { "node_modules/@sinclair/typebox": {
"version": "0.25.23", "version": "0.25.24",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
"integrity": "sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==", "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
"dev": true "dev": true
}, },
"node_modules/@socket.io/component-emitter": { "node_modules/@socket.io/component-emitter": {
@ -1730,9 +1730,9 @@
} }
}, },
"node_modules/@types/eslint": { "node_modules/@types/eslint": {
"version": "8.21.1", "version": "8.37.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz",
"integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/estree": "*", "@types/estree": "*",
@ -1852,9 +1852,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/react": { "node_modules/@types/react": {
"version": "18.0.34", "version": "18.0.35",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.35.tgz",
"integrity": "sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==", "integrity": "sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/prop-types": "*", "@types/prop-types": "*",
@ -1935,9 +1935,9 @@
} }
}, },
"node_modules/@types/yargs": { "node_modules/@types/yargs": {
"version": "17.0.22", "version": "17.0.24",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
"integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/yargs-parser": "*" "@types/yargs-parser": "*"
@ -2259,9 +2259,9 @@
} }
}, },
"node_modules/amazon-chime-sdk-js": { "node_modules/amazon-chime-sdk-js": {
"version": "3.12.0", "version": "3.13.0",
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.12.0.tgz", "resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.13.0.tgz",
"integrity": "sha512-h71cPO67TO2ZkLlhyWyB7NDYf7abK7/aqOX8Ojju7jn+x3MZXUSmF0K9bdRHiII+7MILyK/7Yf8JmpcCswuq8Q==", "integrity": "sha512-gRZ8SJgN2+0UMBRhUhAvc06ZklwDyYMEd/xJ17/lORX/XprcTVtRqicEJHxLtgzs61FKmmx1uBz0eGgrn9Dm3A==",
"dependencies": { "dependencies": {
"@aws-crypto/sha256-js": "^2.0.1", "@aws-crypto/sha256-js": "^2.0.1",
"@aws-sdk/client-chime-sdk-messaging": "^3.0.0", "@aws-sdk/client-chime-sdk-messaging": "^3.0.0",
@ -3157,9 +3157,9 @@
} }
}, },
"node_modules/es-module-lexer": { "node_modules/es-module-lexer": {
"version": "0.9.3", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
"dev": true "dev": true
}, },
"node_modules/es-set-tostringtag": { "node_modules/es-set-tostringtag": {
@ -3386,13 +3386,13 @@
} }
}, },
"node_modules/eslint-webpack-plugin": { "node_modules/eslint-webpack-plugin": {
"version": "4.0.0", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.0.0.tgz", "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.0.1.tgz",
"integrity": "sha512-eM9ccGRWkU+btBSVfABRn8CjT7jZ2Q+UV/RfErMDVCFXpihEbvajNrLltZpwTAcEoXSqESGlEPIUxl7PoDlLWw==", "integrity": "sha512-fUFcXpui/FftGx3NzvWgLZXlLbu+m74sUxGEgxgoxYcUtkIQbS6SdNNZkS99m5ycb23TfoNYrDpp1k/CK5j6Hw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/eslint": "^8.4.10", "@types/eslint": "^8.37.0",
"jest-worker": "^29.4.1", "jest-worker": "^29.5.0",
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"schema-utils": "^4.0.0" "schema-utils": "^4.0.0"
@ -4700,12 +4700,12 @@
} }
}, },
"node_modules/jest-util": { "node_modules/jest-util": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
"integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jest/types": "^29.4.3", "@jest/types": "^29.5.0",
"@types/node": "*", "@types/node": "*",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"ci-info": "^3.2.0", "ci-info": "^3.2.0",
@ -4717,13 +4717,13 @@
} }
}, },
"node_modules/jest-worker": { "node_modules/jest-worker": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
"integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/node": "*", "@types/node": "*",
"jest-util": "^29.4.3", "jest-util": "^29.5.0",
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",
"supports-color": "^8.0.0" "supports-color": "^8.0.0"
}, },
@ -6970,9 +6970,9 @@
} }
}, },
"node_modules/terser": { "node_modules/terser": {
"version": "5.16.4", "version": "5.16.9",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.4.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.9.tgz",
"integrity": "sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==", "integrity": "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jridgewell/source-map": "^0.3.2", "@jridgewell/source-map": "^0.3.2",
@ -6988,16 +6988,16 @@
} }
}, },
"node_modules/terser-webpack-plugin": { "node_modules/terser-webpack-plugin": {
"version": "5.3.6", "version": "5.3.7",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
"integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@jridgewell/trace-mapping": "^0.3.14", "@jridgewell/trace-mapping": "^0.3.17",
"jest-worker": "^27.4.5", "jest-worker": "^27.4.5",
"schema-utils": "^3.1.1", "schema-utils": "^3.1.1",
"serialize-javascript": "^6.0.0", "serialize-javascript": "^6.0.1",
"terser": "^5.14.1" "terser": "^5.16.5"
}, },
"engines": { "engines": {
"node": ">= 10.13.0" "node": ">= 10.13.0"
@ -7346,13 +7346,13 @@
} }
}, },
"node_modules/webpack": { "node_modules/webpack": {
"version": "5.78.0", "version": "5.79.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.78.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.79.0.tgz",
"integrity": "sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==", "integrity": "sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/eslint-scope": "^3.7.3", "@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51", "@types/estree": "^1.0.0",
"@webassemblyjs/ast": "1.11.1", "@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1",
"@webassemblyjs/wasm-parser": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1",
@ -7361,7 +7361,7 @@
"browserslist": "^4.14.5", "browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2", "chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.10.0", "enhanced-resolve": "^5.10.0",
"es-module-lexer": "^0.9.0", "es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1", "eslint-scope": "5.1.1",
"events": "^3.2.0", "events": "^3.2.0",
"glob-to-regexp": "^0.4.1", "glob-to-regexp": "^0.4.1",
@ -7372,7 +7372,7 @@
"neo-async": "^2.6.2", "neo-async": "^2.6.2",
"schema-utils": "^3.1.0", "schema-utils": "^3.1.0",
"tapable": "^2.1.1", "tapable": "^2.1.1",
"terser-webpack-plugin": "^5.1.3", "terser-webpack-plugin": "^5.3.7",
"watchpack": "^2.4.0", "watchpack": "^2.4.0",
"webpack-sources": "^3.2.3" "webpack-sources": "^3.2.3"
}, },
@ -7586,12 +7586,6 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/webpack/node_modules/@types/estree": {
"version": "0.0.51",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
"dev": true
},
"node_modules/webpack/node_modules/eslint-scope": { "node_modules/webpack/node_modules/eslint-scope": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@ -9176,9 +9170,9 @@
} }
}, },
"@jest/types": { "@jest/types": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.3.tgz", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz",
"integrity": "sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==", "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jest/schemas": "^29.4.3", "@jest/schemas": "^29.4.3",
@ -9190,9 +9184,9 @@
} }
}, },
"@jridgewell/gen-mapping": { "@jridgewell/gen-mapping": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jridgewell/set-array": "^1.0.1", "@jridgewell/set-array": "^1.0.1",
@ -9213,9 +9207,9 @@
"dev": true "dev": true
}, },
"@jridgewell/source-map": { "@jridgewell/source-map": {
"version": "0.3.2", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
"integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/gen-mapping": "^0.3.0",
@ -9229,9 +9223,9 @@
"dev": true "dev": true
}, },
"@jridgewell/trace-mapping": { "@jridgewell/trace-mapping": {
"version": "0.3.17", "version": "0.3.18",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jridgewell/resolve-uri": "3.1.0", "@jridgewell/resolve-uri": "3.1.0",
@ -9325,9 +9319,9 @@
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
}, },
"@sinclair/typebox": { "@sinclair/typebox": {
"version": "0.25.23", "version": "0.25.24",
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.23.tgz", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz",
"integrity": "sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==", "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==",
"dev": true "dev": true
}, },
"@socket.io/component-emitter": { "@socket.io/component-emitter": {
@ -9380,9 +9374,9 @@
} }
}, },
"@types/eslint": { "@types/eslint": {
"version": "8.21.1", "version": "8.37.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.1.tgz", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz",
"integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/estree": "*", "@types/estree": "*",
@ -9502,9 +9496,9 @@
"dev": true "dev": true
}, },
"@types/react": { "@types/react": {
"version": "18.0.34", "version": "18.0.35",
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.35.tgz",
"integrity": "sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==", "integrity": "sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/prop-types": "*", "@types/prop-types": "*",
@ -9585,9 +9579,9 @@
} }
}, },
"@types/yargs": { "@types/yargs": {
"version": "17.0.22", "version": "17.0.24",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz",
"integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/yargs-parser": "*" "@types/yargs-parser": "*"
@ -9857,9 +9851,9 @@
"requires": {} "requires": {}
}, },
"amazon-chime-sdk-js": { "amazon-chime-sdk-js": {
"version": "3.12.0", "version": "3.13.0",
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.12.0.tgz", "resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.13.0.tgz",
"integrity": "sha512-h71cPO67TO2ZkLlhyWyB7NDYf7abK7/aqOX8Ojju7jn+x3MZXUSmF0K9bdRHiII+7MILyK/7Yf8JmpcCswuq8Q==", "integrity": "sha512-gRZ8SJgN2+0UMBRhUhAvc06ZklwDyYMEd/xJ17/lORX/XprcTVtRqicEJHxLtgzs61FKmmx1uBz0eGgrn9Dm3A==",
"requires": { "requires": {
"@aws-crypto/sha256-js": "^2.0.1", "@aws-crypto/sha256-js": "^2.0.1",
"@aws-sdk/client-chime-sdk-messaging": "^3.0.0", "@aws-sdk/client-chime-sdk-messaging": "^3.0.0",
@ -10514,9 +10508,9 @@
} }
}, },
"es-module-lexer": { "es-module-lexer": {
"version": "0.9.3", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz",
"integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==",
"dev": true "dev": true
}, },
"es-set-tostringtag": { "es-set-tostringtag": {
@ -10683,13 +10677,13 @@
"dev": true "dev": true
}, },
"eslint-webpack-plugin": { "eslint-webpack-plugin": {
"version": "4.0.0", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.0.0.tgz", "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-4.0.1.tgz",
"integrity": "sha512-eM9ccGRWkU+btBSVfABRn8CjT7jZ2Q+UV/RfErMDVCFXpihEbvajNrLltZpwTAcEoXSqESGlEPIUxl7PoDlLWw==", "integrity": "sha512-fUFcXpui/FftGx3NzvWgLZXlLbu+m74sUxGEgxgoxYcUtkIQbS6SdNNZkS99m5ycb23TfoNYrDpp1k/CK5j6Hw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/eslint": "^8.4.10", "@types/eslint": "^8.37.0",
"jest-worker": "^29.4.1", "jest-worker": "^29.5.0",
"micromatch": "^4.0.5", "micromatch": "^4.0.5",
"normalize-path": "^3.0.0", "normalize-path": "^3.0.0",
"schema-utils": "^4.0.0" "schema-utils": "^4.0.0"
@ -11624,12 +11618,12 @@
"dev": true "dev": true
}, },
"jest-util": { "jest-util": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.3.tgz", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz",
"integrity": "sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==", "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jest/types": "^29.4.3", "@jest/types": "^29.5.0",
"@types/node": "*", "@types/node": "*",
"chalk": "^4.0.0", "chalk": "^4.0.0",
"ci-info": "^3.2.0", "ci-info": "^3.2.0",
@ -11638,13 +11632,13 @@
} }
}, },
"jest-worker": { "jest-worker": {
"version": "29.4.3", "version": "29.5.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.3.tgz", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz",
"integrity": "sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==", "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/node": "*", "@types/node": "*",
"jest-util": "^29.4.3", "jest-util": "^29.5.0",
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",
"supports-color": "^8.0.0" "supports-color": "^8.0.0"
}, },
@ -13343,9 +13337,9 @@
"dev": true "dev": true
}, },
"terser": { "terser": {
"version": "5.16.4", "version": "5.16.9",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.4.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.9.tgz",
"integrity": "sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==", "integrity": "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jridgewell/source-map": "^0.3.2", "@jridgewell/source-map": "^0.3.2",
@ -13355,16 +13349,16 @@
} }
}, },
"terser-webpack-plugin": { "terser-webpack-plugin": {
"version": "5.3.6", "version": "5.3.7",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz",
"integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@jridgewell/trace-mapping": "^0.3.14", "@jridgewell/trace-mapping": "^0.3.17",
"jest-worker": "^27.4.5", "jest-worker": "^27.4.5",
"schema-utils": "^3.1.1", "schema-utils": "^3.1.1",
"serialize-javascript": "^6.0.0", "serialize-javascript": "^6.0.1",
"terser": "^5.14.1" "terser": "^5.16.5"
}, },
"dependencies": { "dependencies": {
"jest-worker": { "jest-worker": {
@ -13592,13 +13586,13 @@
} }
}, },
"webpack": { "webpack": {
"version": "5.78.0", "version": "5.79.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.78.0.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.79.0.tgz",
"integrity": "sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==", "integrity": "sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/eslint-scope": "^3.7.3", "@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51", "@types/estree": "^1.0.0",
"@webassemblyjs/ast": "1.11.1", "@webassemblyjs/ast": "1.11.1",
"@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1",
"@webassemblyjs/wasm-parser": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1",
@ -13607,7 +13601,7 @@
"browserslist": "^4.14.5", "browserslist": "^4.14.5",
"chrome-trace-event": "^1.0.2", "chrome-trace-event": "^1.0.2",
"enhanced-resolve": "^5.10.0", "enhanced-resolve": "^5.10.0",
"es-module-lexer": "^0.9.0", "es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1", "eslint-scope": "5.1.1",
"events": "^3.2.0", "events": "^3.2.0",
"glob-to-regexp": "^0.4.1", "glob-to-regexp": "^0.4.1",
@ -13618,17 +13612,11 @@
"neo-async": "^2.6.2", "neo-async": "^2.6.2",
"schema-utils": "^3.1.0", "schema-utils": "^3.1.0",
"tapable": "^2.1.1", "tapable": "^2.1.1",
"terser-webpack-plugin": "^5.1.3", "terser-webpack-plugin": "^5.3.7",
"watchpack": "^2.4.0", "watchpack": "^2.4.0",
"webpack-sources": "^3.2.3" "webpack-sources": "^3.2.3"
}, },
"dependencies": { "dependencies": {
"@types/estree": {
"version": "0.0.51",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz",
"integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==",
"dev": true
},
"eslint-scope": { "eslint-scope": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "@dannadori/voice-changer-client-js", "name": "@dannadori/voice-changer-client-js",
"version": "1.0.105", "version": "1.0.107",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"directories": { "directories": {
@ -28,26 +28,26 @@
"devDependencies": { "devDependencies": {
"@types/audioworklet": "^0.0.41", "@types/audioworklet": "^0.0.41",
"@types/node": "^18.15.11", "@types/node": "^18.15.11",
"@types/react": "18.0.34", "@types/react": "18.0.35",
"@types/react-dom": "18.0.11", "@types/react-dom": "18.0.11",
"eslint": "^8.38.0", "eslint": "^8.38.0",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2", "eslint-plugin-react": "^7.32.2",
"eslint-webpack-plugin": "^4.0.0", "eslint-webpack-plugin": "^4.0.1",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.8.7", "prettier": "^2.8.7",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
"rimraf": "^5.0.0", "rimraf": "^5.0.0",
"ts-loader": "^9.4.2", "ts-loader": "^9.4.2",
"typescript": "^5.0.4", "typescript": "^5.0.4",
"webpack": "^5.78.0", "webpack": "^5.79.0",
"webpack-cli": "^5.0.1", "webpack-cli": "^5.0.1",
"webpack-dev-server": "^4.13.2" "webpack-dev-server": "^4.13.2"
}, },
"dependencies": { "dependencies": {
"@types/readable-stream": "^2.3.15", "@types/readable-stream": "^2.3.15",
"amazon-chime-sdk-js": "^3.12.0", "amazon-chime-sdk-js": "^3.13.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"react": "^18.2.0", "react": "^18.2.0",

View File

@ -212,7 +212,7 @@ if __name__ == '__main__':
f"http://<IP>:<PORT>/", level=1) f"http://<IP>:<PORT>/", level=1)
if TYPE == "MMVC": if TYPE == "MMVC":
path = f"?modelType={MODEL_TYPE}" path = f""
else: else:
path = "trainer" path = "trainer"

View File

@ -116,14 +116,19 @@ class VoiceChanger():
index_file: Optional[str] = None, index_file: Optional[str] = None,
is_half: bool = True, is_half: bool = True,
): ):
if self.modelType == "MMVCv15" or self.modelType == "MMVCv13":
return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file) try:
elif self.modelType == "so-vits-svc-40" or self.modelType == "so-vits-svc-40_c" or self.modelType == "so-vits-svc-40v2": if self.modelType == "MMVCv15" or self.modelType == "MMVCv13":
return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, clusterTorchModel) return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file)
elif self.modelType == "RVC": elif self.modelType == "so-vits-svc-40" or self.modelType == "so-vits-svc-40_c" or self.modelType == "so-vits-svc-40v2":
return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, feature_file, index_file, is_half) return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, clusterTorchModel)
else: elif self.modelType == "RVC":
return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, clusterTorchModel) return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, feature_file, index_file, is_half)
else:
return self.voiceChanger.loadModel(config, pyTorch_model_file, onnx_model_file, clusterTorchModel)
except Exception as e:
print("[Voice Changer] Model Load Error! Check your model is valid.", e)
return {"status": "NG"}
def get_info(self): def get_info(self):
data = asdict(self.settings) data = asdict(self.settings)
@ -198,8 +203,8 @@ class VoiceChanger():
# ひとつ前の結果とサイズが変わるため、記録は消去する。 # ひとつ前の結果とサイズが変わるため、記録は消去する。
if hasattr(self, 'np_prev_audio1') == True: if hasattr(self, 'np_prev_audio1') == True:
delattr(self, "np_prev_audio1") delattr(self, "np_prev_audio1")
if hasattr(self, "sola_buffer"):
del self.sola_buffer del self.sola_buffer
# receivedData: tuple of short # receivedData: tuple of short
def on_request(self, receivedData: AudioInOut) -> tuple[AudioInOut, list[Union[int, float]]]: def on_request(self, receivedData: AudioInOut) -> tuple[AudioInOut, list[Union[int, float]]]:
@ -241,7 +246,6 @@ class VoiceChanger():
cor_nom = np.convolve(audio[: crossfade_frame + sola_search_frame], np.flip(self.sola_buffer), 'valid') cor_nom = np.convolve(audio[: crossfade_frame + sola_search_frame], np.flip(self.sola_buffer), 'valid')
cor_den = np.sqrt(np.convolve(audio[: crossfade_frame + sola_search_frame] ** 2, np.ones(crossfade_frame), 'valid') + 1e-3) cor_den = np.sqrt(np.convolve(audio[: crossfade_frame + sola_search_frame] ** 2, np.ones(crossfade_frame), 'valid') + 1e-3)
sola_offset = np.argmax(cor_nom / cor_den) sola_offset = np.argmax(cor_nom / cor_den)
print("sola_offset", sola_offset, sola_search_frame)
output_wav = audio[sola_offset: sola_offset + block_frame].astype(np.float64) output_wav = audio[sola_offset: sola_offset + block_frame].astype(np.float64)
output_wav[:crossfade_frame] *= self.np_cur_strength output_wav[:crossfade_frame] *= self.np_cur_strength

View File

@ -13,8 +13,11 @@ class VoiceChangerManager():
def loadModel(self, config, model, onnx_model, clusterTorchModel, feature_file, index_file, is_half: bool = True): def loadModel(self, config, model, onnx_model, clusterTorchModel, feature_file, index_file, is_half: bool = True):
info = self.voiceChanger.loadModel(config, model, onnx_model, clusterTorchModel, feature_file, index_file, is_half) info = self.voiceChanger.loadModel(config, model, onnx_model, clusterTorchModel, feature_file, index_file, is_half)
info["status"] = "OK" if hasattr(info, "status") and info["status"] == "NG":
return info return info
else:
info["status"] = "OK"
return info
def get_info(self): def get_info(self):
if hasattr(self, 'voiceChanger'): if hasattr(self, 'voiceChanger'):