Feature: pass through

This commit is contained in:
w-okada 2023-08-06 07:44:20 +09:00
parent ff21c8130e
commit fa0c0cbceb
9 changed files with 3189 additions and 1404 deletions

View File

@ -1,10 +1 @@
<!DOCTYPE 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>
<!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>

File diff suppressed because one or more lines are too long

3043
client/demo/dist/index.js.LICENSE.txt vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -122,9 +122,13 @@ export const CharacterArea = (_props: CharacterAreaProps) => {
serverSetting.updateServerSettings({ ...serverSetting.serverSetting, serverAudioStated: 0 });
}
};
const onPassThroughClicked = async () => {
serverSetting.updateServerSettings({ ...serverSetting.serverSetting, passThrough: !serverSetting.serverSetting.passThrough });
};
const startClassName = guiState.isConverting ? "character-area-control-button-active" : "character-area-control-button-stanby";
const stopClassName = guiState.isConverting ? "character-area-control-button-stanby" : "character-area-control-button-active";
const passThruClassName = serverSetting.serverSetting.passThrough == false ? "character-area-control-passthru-button-stanby" : "character-area-control-passthru-button-active blinking";
console.log("serverSetting.serverSetting.passThrough", passThruClassName, serverSetting.serverSetting.passThrough);
return (
<div className="character-area-control">
<div className="character-area-control-buttons">
@ -134,6 +138,9 @@ export const CharacterArea = (_props: CharacterAreaProps) => {
<div onClick={onStopClicked} className={stopClassName}>
stop
</div>
<div onClick={onPassThroughClicked} className={passThruClassName}>
passthru
</div>
</div>
</div>
);

View File

@ -1363,6 +1363,34 @@ body {
border: solid 1px #000;
}
}
.character-area-control-passthru-button-stanby {
width: 5rem;
border: solid 1px #999;
border-radius: 15px;
padding: 2px;
background: #aba;
cursor: pointer;
font-weight: 700;
font-size: 0.8rem;
text-align: center;
&:hover {
border: solid 1px #000;
}
}
.character-area-control-passthru-button-active {
width: 5rem;
border: solid 1px #955;
border-radius: 15px;
padding: 2px;
background: #fdd;
cursor: pointer;
font-weight: 700;
font-size: 0.8rem;
text-align: center;
&:hover {
border: solid 1px #000;
}
}
}
.character-area-control-title {
@ -1779,3 +1807,18 @@ audio::-webkit-media-controls-overlay-enclosure{
}
}
}
.blinking {
animation: flash 0.7s cubic-bezier(0.91, -0.14, 0, 1.4) infinite;
}
@keyframes flash {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}

View File

@ -1,12 +1,12 @@
{
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.166",
"version": "1.0.167",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.166",
"version": "1.0.167",
"license": "ISC",
"dependencies": {
"@types/readable-stream": "^4.0.0",
@ -19,17 +19,17 @@
"socket.io-client": "^4.7.2"
},
"devDependencies": {
"@types/audioworklet": "^0.0.49",
"@types/node": "^20.4.6",
"@types/audioworklet": "^0.0.50",
"@types/node": "^20.4.8",
"@types/react": "18.2.18",
"@types/react-dom": "18.2.7",
"eslint": "^8.46.0",
"eslint-config-prettier": "^8.9.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-react": "^7.33.1",
"eslint-webpack-plugin": "^4.0.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.0.0",
"prettier": "^3.0.1",
"raw-loader": "^4.0.2",
"rimraf": "^5.0.1",
"ts-loader": "^9.4.4",
@ -140,14 +140,14 @@
}
},
"node_modules/@aws-sdk/client-chime-sdk-messaging": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-chime-sdk-messaging/-/client-chime-sdk-messaging-3.382.0.tgz",
"integrity": "sha512-2Ur6onaZjNCtz66CvSYO0G92TbON7iLaIJT/4tm4HmH4xJIFxPO9zDMPA8n1QXoHShPYNYF9isKmn7CP3GmGhg==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-chime-sdk-messaging/-/client-chime-sdk-messaging-3.385.0.tgz",
"integrity": "sha512-8Z6teqMHf6D0b7HzvTBnpUUEICSGs/U4fLT/TWW21A0LGCQhLGVFdikXLP5NJE9uv1qyLLYA5znjMjp3IJ2nOg==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
"@aws-sdk/client-sts": "3.382.0",
"@aws-sdk/credential-provider-node": "3.382.0",
"@aws-sdk/client-sts": "3.385.0",
"@aws-sdk/credential-provider-node": "3.385.0",
"@aws-sdk/middleware-host-header": "3.379.1",
"@aws-sdk/middleware-logger": "3.378.0",
"@aws-sdk/middleware-recursion-detection": "3.378.0",
@ -264,84 +264,6 @@
"node": ">=14.0.0"
}
},
"node_modules/@aws-sdk/client-sso-oidc": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.382.0.tgz",
"integrity": "sha512-hTfvB1ftbrqaz7qiEkmRobzUQwG34oZlByobn8Frdr5ZQbJk969bX6evQAPyKlJEr26+kL9TnaX+rbLR/+gwHQ==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
"@aws-sdk/middleware-host-header": "3.379.1",
"@aws-sdk/middleware-logger": "3.378.0",
"@aws-sdk/middleware-recursion-detection": "3.378.0",
"@aws-sdk/middleware-user-agent": "3.382.0",
"@aws-sdk/types": "3.378.0",
"@aws-sdk/util-endpoints": "3.382.0",
"@aws-sdk/util-user-agent-browser": "3.378.0",
"@aws-sdk/util-user-agent-node": "3.378.0",
"@smithy/config-resolver": "^2.0.1",
"@smithy/fetch-http-handler": "^2.0.1",
"@smithy/hash-node": "^2.0.1",
"@smithy/invalid-dependency": "^2.0.1",
"@smithy/middleware-content-length": "^2.0.1",
"@smithy/middleware-endpoint": "^2.0.1",
"@smithy/middleware-retry": "^2.0.1",
"@smithy/middleware-serde": "^2.0.1",
"@smithy/middleware-stack": "^2.0.0",
"@smithy/node-config-provider": "^2.0.1",
"@smithy/node-http-handler": "^2.0.1",
"@smithy/protocol-http": "^2.0.1",
"@smithy/smithy-client": "^2.0.1",
"@smithy/types": "^2.0.2",
"@smithy/url-parser": "^2.0.1",
"@smithy/util-base64": "^2.0.0",
"@smithy/util-body-length-browser": "^2.0.0",
"@smithy/util-body-length-node": "^2.0.0",
"@smithy/util-defaults-mode-browser": "^2.0.1",
"@smithy/util-defaults-mode-node": "^2.0.1",
"@smithy/util-retry": "^2.0.0",
"@smithy/util-utf8": "^2.0.0",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-js": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
"integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==",
"dependencies": {
"@aws-crypto/util": "^3.0.0",
"@aws-sdk/types": "^3.222.0",
"tslib": "^1.11.1"
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-js/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz",
"integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==",
"dependencies": {
"@aws-sdk/types": "^3.222.0",
"@aws-sdk/util-utf8-browser": "^3.0.0",
"tslib": "^1.11.1"
}
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/client-sso/node_modules/@aws-crypto/sha256-js": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz",
@ -378,13 +300,13 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/client-sts": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.382.0.tgz",
"integrity": "sha512-G5wgahrOqmrljjyLVGASIZUXIIdalbCo0z4PuFHdb2R2CVfwO8renfgrmk4brT9tIxIfen5bRA7ftXMe7yrgRA==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.385.0.tgz",
"integrity": "sha512-VdSDwICW2cBttbdj1izu6VYflJbZZKu3/FSaJGuGu8SgTvRsa56g6E5xfbUfR/SCstuETObKLusSfQZ6yxUnzA==",
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
"@aws-sdk/credential-provider-node": "3.382.0",
"@aws-sdk/credential-provider-node": "3.385.0",
"@aws-sdk/middleware-host-header": "3.379.1",
"@aws-sdk/middleware-logger": "3.378.0",
"@aws-sdk/middleware-recursion-detection": "3.378.0",
@ -479,13 +401,13 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/credential-provider-ini": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.382.0.tgz",
"integrity": "sha512-31pi44WWri2WQmagqptUv7x3Nq8pQ6H06OCQx5goEm77SosSdwQwyBPrS9Pg0yI9aljFAxF+rZ75degsCorbQg==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.385.0.tgz",
"integrity": "sha512-WBIR5GdfUzCGzynQYX/TuCXw3KJCkHBk6bVAsO1YmfR68XKVAxWmJPKovlK/rR6LIuV+iwUMNludO+SkmG0efg==",
"dependencies": {
"@aws-sdk/credential-provider-env": "3.378.0",
"@aws-sdk/credential-provider-process": "3.378.0",
"@aws-sdk/credential-provider-sso": "3.382.0",
"@aws-sdk/credential-provider-sso": "3.385.0",
"@aws-sdk/credential-provider-web-identity": "3.378.0",
"@aws-sdk/types": "3.378.0",
"@smithy/credential-provider-imds": "^2.0.0",
@ -504,14 +426,14 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/credential-provider-node": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.382.0.tgz",
"integrity": "sha512-q6AWCCb0E0cH/Y5Dtln0QssbCBXDbV4PoTV3EdRuGoJcHyNfHJ8X0mqcc7k44wG4Piazu+ufZThvn43W7W9a4g==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.385.0.tgz",
"integrity": "sha512-Lk8uu6jm/8OkbLX4Qnss8o5bnt0yQa0Tb7Azbh5/5otju5kStVAD2E+zMGrMP++NriGyZV87crduh0J8l4JUTA==",
"dependencies": {
"@aws-sdk/credential-provider-env": "3.378.0",
"@aws-sdk/credential-provider-ini": "3.382.0",
"@aws-sdk/credential-provider-ini": "3.385.0",
"@aws-sdk/credential-provider-process": "3.378.0",
"@aws-sdk/credential-provider-sso": "3.382.0",
"@aws-sdk/credential-provider-sso": "3.385.0",
"@aws-sdk/credential-provider-web-identity": "3.378.0",
"@aws-sdk/types": "3.378.0",
"@smithy/credential-provider-imds": "^2.0.0",
@ -550,12 +472,12 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/credential-provider-sso": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.382.0.tgz",
"integrity": "sha512-tKCQKqxnAHeRD7pQNmDmLWwC7pt5koo6yiQTVQ382U+8xx7BNsApE1zdC4LrtrVN1FYqVbw5kXjYFtSCtaUxGA==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.385.0.tgz",
"integrity": "sha512-ETFnS+4ZKTAgT8boVpIpRuXA9wWGpNqOcI1RXtjsaIgQ9s8uNn2JPa8l71gZh861mzBC8Hadp1EpNu+43w4lkg==",
"dependencies": {
"@aws-sdk/client-sso": "3.382.0",
"@aws-sdk/token-providers": "3.382.0",
"@aws-sdk/token-providers": "3.385.0",
"@aws-sdk/types": "3.378.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
@ -708,11 +630,10 @@
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
},
"node_modules/@aws-sdk/token-providers": {
"version": "3.382.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.382.0.tgz",
"integrity": "sha512-axn4IyPpHdkXi8G06KCB3tPz79DipZFFH9N9YVDpLMnDYTdfX36HGdYzINaQc+z+XPbEpa1ZpoIzWScHRjFjdg==",
"version": "3.385.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.385.0.tgz",
"integrity": "sha512-2A2Y7/bU5EaxQwLwLy7ojs+Wy5VOBkIlGPH7ZcpPaoQ1Hscwn3Wvx/DZmOvbyYfZ1CbIFutoHJlVxh6KZldUDw==",
"dependencies": {
"@aws-sdk/client-sso-oidc": "3.382.0",
"@aws-sdk/types": "3.378.0",
"@smithy/property-provider": "^2.0.0",
"@smithy/shared-ini-file-loader": "^2.0.0",
@ -1918,9 +1839,9 @@
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
},
"node_modules/@types/audioworklet": {
"version": "0.0.49",
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.49.tgz",
"integrity": "sha512-Njo9vdkdTPwBTplwWgIXQk7Xoo5xAErxOfNXoq5pYHcYOZ1Yyp4M23TfeavaLZ+qqQo3y9xIigfWckizkyCKSw==",
"version": "0.0.50",
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.50.tgz",
"integrity": "sha512-Wic6k+tczhJZz4yq2ianEowIF/xH10wI9ac8sBDh27Jvs+WIvXIeM+nWPPRITFwSKuLZKlvVjfLiNmUjfy4koA==",
"dev": true
},
"node_modules/@types/body-parser": {
@ -1962,9 +1883,9 @@
}
},
"node_modules/@types/eslint": {
"version": "8.44.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.1.tgz",
"integrity": "sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg==",
"version": "8.44.2",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz",
"integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==",
"dev": true,
"dependencies": {
"@types/estree": "*",
@ -2068,9 +1989,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "20.4.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.6.tgz",
"integrity": "sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA=="
"version": "20.4.8",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz",
"integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg=="
},
"node_modules/@types/prop-types": {
"version": "15.7.5",
@ -2997,9 +2918,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001518",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001518.tgz",
"integrity": "sha512-rup09/e3I0BKjncL+FesTayKtPrdwKhUufQFd3riFw1hHg8JmIFoInYfB102cFcY/pPgGmdyl/iy+jgiDi2vdA==",
"version": "1.0.30001519",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz",
"integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==",
"dev": true,
"funding": [
{
@ -3545,9 +3466,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
"version": "1.4.482",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.482.tgz",
"integrity": "sha512-h+UqpfmEr1Qkk0zp7ej/jid7CXoq4m4QzW6wNTb0ELJ/BZCpA4wgUylBIMGCe621tnr4l5VmoHjdoSx2lbnNJA==",
"version": "1.4.485",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.485.tgz",
"integrity": "sha512-1ndQ5IBNEnFirPwvyud69GHL+31FkE09gH/CJ6m3KCbkx3i0EVOrjwz4UNxRmN9H8OVHbC6vMRZGN1yCvjSs9w==",
"dev": true
},
"node_modules/emoji-regex": {
@ -3809,9 +3730,9 @@
}
},
"node_modules/eslint-config-prettier": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.9.0.tgz",
"integrity": "sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==",
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
"integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
"dev": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
@ -5086,9 +5007,9 @@
}
},
"node_modules/is-core-module": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
"integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
"integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@ -5872,12 +5793,12 @@
}
},
"node_modules/normalize-package-data/node_modules/resolve": {
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
"integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dev": true,
"dependencies": {
"is-core-module": "^2.11.0",
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
@ -6559,9 +6480,9 @@
}
},
"node_modules/prettier": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz",
"integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.1.tgz",
"integrity": "sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@ -6853,12 +6774,12 @@
}
},
"node_modules/rechoir/node_modules/resolve": {
"version": "1.22.2",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
"integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dev": true,
"dependencies": {
"is-core-module": "^2.11.0",
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},

View File

@ -1,6 +1,6 @@
{
"name": "@dannadori/voice-changer-client-js",
"version": "1.0.166",
"version": "1.0.167",
"description": "",
"main": "dist/index.js",
"directories": {
@ -26,17 +26,17 @@
"author": "wataru.okada@flect.co.jp",
"license": "ISC",
"devDependencies": {
"@types/audioworklet": "^0.0.49",
"@types/node": "^20.4.6",
"@types/audioworklet": "^0.0.50",
"@types/node": "^20.4.8",
"@types/react": "18.2.18",
"@types/react-dom": "18.2.7",
"eslint": "^8.46.0",
"eslint-config-prettier": "^8.9.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-react": "^7.33.1",
"eslint-webpack-plugin": "^4.0.1",
"npm-run-all": "^4.1.5",
"prettier": "^3.0.0",
"prettier": "^3.0.1",
"raw-loader": "^4.0.2",
"rimraf": "^5.0.1",
"ts-loader": "^9.4.4",

View File

@ -68,6 +68,7 @@ export const RVCModelType = {
export type RVCModelType = typeof RVCModelType[keyof typeof RVCModelType]
export const ServerSettingKey = {
"passThrough":"passThrough",
"srcId": "srcId",
"dstId": "dstId",
"gpu": "gpu",
@ -133,6 +134,7 @@ export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettin
export type VoiceChangerServerSetting = {
passThrough: boolean
srcId: number,
dstId: number,
gpu: number,
@ -345,6 +347,7 @@ export type DiffusionSVCSampleModel =SampleModel & {
export const DefaultServerSetting: ServerInfo = {
// VC Common
passThrough: false,
inputSampleRate: 48000,
crossFadeOffsetRate: 0.0,

View File

@ -11,7 +11,6 @@ from voice_changer.ModelSlotManager import ModelSlotManager
from voice_changer.RVC.RVCModelMerger import RVCModelMerger
from voice_changer.VoiceChanger import VoiceChanger
from const import STORED_SETTING_FILE, UPLOAD_DIR
from voice_changer.VoiceChangerParamsManager import VoiceChangerParamsManager
from voice_changer.VoiceChangerV2 import VoiceChangerV2
from voice_changer.utils.LoadModelParams import LoadModelParamFile, LoadModelParams
from voice_changer.utils.ModelMerger import MergeElement, ModelMergerRequest
@ -38,8 +37,14 @@ class GPUInfo:
@dataclass()
class VoiceChangerManagerSettings:
modelSlotIndex: int = -1
passThrough: bool = False # 0: off, 1: on
# ↓mutableな物だけ列挙
intData: list[str] = field(default_factory=lambda: ["modelSlotIndex"])
boolData: list[str] = field(default_factory=lambda: [
"passThrough"
])
intData: list[str] = field(default_factory=lambda: [
"modelSlotIndex",
])
class VoiceChangerManager(ServerDeviceCallbacks):
@ -268,10 +273,19 @@ class VoiceChangerManager(ServerDeviceCallbacks):
del self.voiceChangerModel
return
def update_settings(self, key: str, val: str | int | float):
def update_settings(self, key: str, val: str | int | float | bool):
self.store_setting(key, val)
if key in self.settings.intData:
if key in self.settings.boolData:
print("self.settings.boolData1", val, self.settings.passThrough)
if val == "true":
newVal = True
elif val == "false":
newVal = False
print("self.settings.boolData2", val, newVal, self.settings.passThrough)
setattr(self.settings, key, newVal)
print("self.settings.boolData3", val, newVal, self.settings.passThrough)
elif key in self.settings.intData:
newVal = int(val)
if key == "modelSlotIndex":
newVal = newVal % 1000
@ -291,6 +305,9 @@ class VoiceChangerManager(ServerDeviceCallbacks):
return self.get_info()
def changeVoice(self, receivedData: AudioInOut):
if self.settings.passThrough is True: # パススルー
return receivedData, []
if hasattr(self, "voiceChanger") is True:
return self.voiceChanger.on_request(receivedData)
else: