mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-02-09 03:37:51 +03:00
bugfix: removed audio output, not volume notify
This commit is contained in:
parent
61f485756d
commit
b413eeea85
@ -4,5 +4,6 @@ cd demo_v13 && ncu -u && npm install && npm run build:prod && cd -
|
|||||||
cd demo_v15 && ncu -u && npm install && npm run build:prod && cd -
|
cd demo_v15 && ncu -u && npm install && npm run build:prod && cd -
|
||||||
cd demo_so-vits-svc_40 && ncu -u && npm install && npm run build:prod && cd -
|
cd demo_so-vits-svc_40 && ncu -u && npm install && npm run build:prod && cd -
|
||||||
cd demo_so-vits-svc_40v2 && ncu -u && npm install && npm run build:prod && cd -
|
cd demo_so-vits-svc_40v2 && ncu -u && npm install && npm run build:prod && cd -
|
||||||
cd demo_so-vits-svc_40v2_tsukuyomi && ncu -u && npm install && npm run build:prod && cd -
|
cd demo_so-vits-svc_40v2_c && ncu -u && npm install && npm run build:prod && cd -
|
||||||
|
cd demo_DDSP-SVC && ncu -u && npm install && npm run build:prod && cd -
|
||||||
|
|
||||||
|
11
client/demo_DDSP-SVC/dist/index.html
vendored
11
client/demo_DDSP-SVC/dist/index.html
vendored
@ -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>
|
|
914
client/demo_DDSP-SVC/dist/index.js
vendored
914
client/demo_DDSP-SVC/dist/index.js
vendored
File diff suppressed because one or more lines are too long
31
client/demo_DDSP-SVC/dist/index.js.LICENSE.txt
vendored
Normal file
31
client/demo_DDSP-SVC/dist/index.js.LICENSE.txt
vendored
Normal 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.
|
||||||
|
*/
|
84
client/demo_DDSP-SVC/package-lock.json
generated
84
client/demo_DDSP-SVC/package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,13 +40,13 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
}
|
}
|
||||||
@ -3187,9 +3187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -3803,9 +3803,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -3826,9 +3826,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -8927,9 +8927,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -9401,9 +9401,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rimraf": {
|
"node_modules/rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -10655,9 +10655,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
@ -13651,9 +13651,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -14164,9 +14164,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"@types/prop-types": {
|
"@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -14187,9 +14187,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/react": {
|
"@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -17966,9 +17966,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
"prettier-linter-helpers": {
|
||||||
@ -18328,9 +18328,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -19254,9 +19254,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,18 +40,18 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,9 +293,12 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadCache = async () => {
|
const loadCache = async () => {
|
||||||
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
||||||
|
2
client/demo_so-vits-svc_40/dist/index.js
vendored
2
client/demo_so-vits-svc_40/dist/index.js
vendored
File diff suppressed because one or more lines are too long
84
client/demo_so-vits-svc_40/package-lock.json
generated
84
client/demo_so-vits-svc_40/package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,13 +40,13 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
}
|
}
|
||||||
@ -3187,9 +3187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -3803,9 +3803,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -3826,9 +3826,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -8927,9 +8927,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -9401,9 +9401,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rimraf": {
|
"node_modules/rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -10655,9 +10655,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
@ -13651,9 +13651,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -14164,9 +14164,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"@types/prop-types": {
|
"@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -14187,9 +14187,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/react": {
|
"@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -17966,9 +17966,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
"prettier-linter-helpers": {
|
||||||
@ -18328,9 +18328,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -19254,9 +19254,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,18 +40,18 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,9 +293,12 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadCache = async () => {
|
const loadCache = async () => {
|
||||||
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
||||||
|
2
client/demo_so-vits-svc_40v2/dist/index.js
vendored
2
client/demo_so-vits-svc_40v2/dist/index.js
vendored
File diff suppressed because one or more lines are too long
84
client/demo_so-vits-svc_40v2/package-lock.json
generated
84
client/demo_so-vits-svc_40v2/package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,13 +40,13 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
}
|
}
|
||||||
@ -3187,9 +3187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -3803,9 +3803,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -3826,9 +3826,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -8927,9 +8927,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -9401,9 +9401,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rimraf": {
|
"node_modules/rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -10655,9 +10655,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
@ -13651,9 +13651,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -14164,9 +14164,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"@types/prop-types": {
|
"@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -14187,9 +14187,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/react": {
|
"@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -17966,9 +17966,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
"prettier-linter-helpers": {
|
||||||
@ -18328,9 +18328,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -19254,9 +19254,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,18 +40,18 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,9 +293,12 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadCache = async () => {
|
const loadCache = async () => {
|
||||||
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
||||||
|
11
client/demo_so-vits-svc_40v2_c/dist/index.html
vendored
11
client/demo_so-vits-svc_40v2_c/dist/index.html
vendored
@ -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>
|
|
946
client/demo_so-vits-svc_40v2_c/dist/index.js
vendored
946
client/demo_so-vits-svc_40v2_c/dist/index.js
vendored
File diff suppressed because one or more lines are too long
31
client/demo_so-vits-svc_40v2_c/dist/index.js.LICENSE.txt
vendored
Normal file
31
client/demo_so-vits-svc_40v2_c/dist/index.js.LICENSE.txt
vendored
Normal 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.
|
||||||
|
*/
|
28
client/demo_so-vits-svc_40v2_c/package-lock.json
generated
28
client/demo_so-vits-svc_40v2_c/package-lock.json
generated
@ -9,8 +9,8 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/psdanimator": "^1.0.16",
|
"@dannadori/psdanimator": "^1.0.17",
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -3188,18 +3188,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/psdanimator": {
|
"node_modules/@dannadori/psdanimator": {
|
||||||
"version": "1.0.16",
|
"version": "1.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/psdanimator/-/psdanimator-1.0.16.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/psdanimator/-/psdanimator-1.0.17.tgz",
|
||||||
"integrity": "sha512-leA8V8LY009RfpxijE3yCVoD1LVnLfb0O4zRZclOvTa6NitNCIO6Xe/3SfN1Rkq4zhaU3TRL6CMotS/vIFx2MA==",
|
"integrity": "sha512-tJ6TVNV/7hOX8kCRSON7LJj4Pi5N/P0nY2cQZoOafdS5VQq/9KfS4sY2SvGAn/ses2FLjf7gjC1xq1UECivsOQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/worker-manager": "^1.0.11",
|
"@dannadori/worker-manager": "^1.0.11",
|
||||||
"@webtoon/psd": "^0.3.0"
|
"@webtoon/psd": "^0.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -13671,18 +13671,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/psdanimator": {
|
"@dannadori/psdanimator": {
|
||||||
"version": "1.0.16",
|
"version": "1.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/psdanimator/-/psdanimator-1.0.16.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/psdanimator/-/psdanimator-1.0.17.tgz",
|
||||||
"integrity": "sha512-leA8V8LY009RfpxijE3yCVoD1LVnLfb0O4zRZclOvTa6NitNCIO6Xe/3SfN1Rkq4zhaU3TRL6CMotS/vIFx2MA==",
|
"integrity": "sha512-tJ6TVNV/7hOX8kCRSON7LJj4Pi5N/P0nY2cQZoOafdS5VQq/9KfS4sY2SvGAn/ses2FLjf7gjC1xq1UECivsOQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@dannadori/worker-manager": "^1.0.11",
|
"@dannadori/worker-manager": "^1.0.11",
|
||||||
"@webtoon/psd": "^0.3.0"
|
"@webtoon/psd": "^0.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
|
@ -51,8 +51,8 @@
|
|||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/psdanimator": "^1.0.16",
|
"@dannadori/psdanimator": "^1.0.17",
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,6 +293,8 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
2
client/demo_v13/dist/index.js
vendored
2
client/demo_v13/dist/index.js
vendored
File diff suppressed because one or more lines are too long
84
client/demo_v13/package-lock.json
generated
84
client/demo_v13/package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,13 +40,13 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
}
|
}
|
||||||
@ -3187,9 +3187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -3803,9 +3803,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -3826,9 +3826,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -8927,9 +8927,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -9401,9 +9401,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rimraf": {
|
"node_modules/rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -10655,9 +10655,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
@ -13651,9 +13651,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -14164,9 +14164,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"@types/prop-types": {
|
"@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -14187,9 +14187,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/react": {
|
"@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -17966,9 +17966,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
"prettier-linter-helpers": {
|
||||||
@ -18328,9 +18328,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -19254,9 +19254,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,18 +40,18 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,9 +293,12 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadCache = async () => {
|
const loadCache = async () => {
|
||||||
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
||||||
|
2
client/demo_v15/dist/index.js
vendored
2
client/demo_v15/dist/index.js
vendored
File diff suppressed because one or more lines are too long
84
client/demo_v15/package-lock.json
generated
84
client/demo_v15/package-lock.json
generated
@ -9,7 +9,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,13 +40,13 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
}
|
}
|
||||||
@ -3187,9 +3187,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@dannadori/voice-changer-client-js": {
|
"node_modules/@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -3803,9 +3803,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -3826,9 +3826,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/react": {
|
"node_modules/@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -8885,9 +8885,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -9359,9 +9359,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rimraf": {
|
"node_modules/rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -10655,9 +10655,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
@ -13631,9 +13631,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@dannadori/voice-changer-client-js": {
|
"@dannadori/voice-changer-client-js": {
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.96.tgz",
|
"resolved": "https://registry.npmjs.org/@dannadori/voice-changer-client-js/-/voice-changer-client-js-1.0.98.tgz",
|
||||||
"integrity": "sha512-4B8Ms7ojRXfr+547VtqO8WVrNUeadqaVYrhRmzSVlcWErqeytjYl4NivgODyFfZquQ4xrY9PjtQ7b+e46D8zRg==",
|
"integrity": "sha512-IQMmOpDO+Y3hb05OpqLm5HQHNQokiZdNdvwHIDy4luCJtuEhG/h6+nWJPXCkZB8ICqLnW5E+tvqTE2Yje2DUuQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
"amazon-chime-sdk-js": "^3.11.0",
|
"amazon-chime-sdk-js": "^3.11.0",
|
||||||
@ -14144,9 +14144,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.15.5",
|
"version": "18.15.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.9.tgz",
|
||||||
"integrity": "sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew=="
|
"integrity": "sha512-dUxhiNzBLr6IqlZXz6e/rN2YQXlFgOei/Dxy+e3cyXTJ4txSUbGT2/fmnD6zd/75jDMeW5bDee+YXxlFKHoV0A=="
|
||||||
},
|
},
|
||||||
"@types/prop-types": {
|
"@types/prop-types": {
|
||||||
"version": "15.7.5",
|
"version": "15.7.5",
|
||||||
@ -14167,9 +14167,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/react": {
|
"@types/react": {
|
||||||
"version": "18.0.28",
|
"version": "18.0.29",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.29.tgz",
|
||||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
"integrity": "sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/prop-types": "*",
|
"@types/prop-types": "*",
|
||||||
@ -17914,9 +17914,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.8.6",
|
"version": "2.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.6.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||||
"integrity": "sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==",
|
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier-linter-helpers": {
|
"prettier-linter-helpers": {
|
||||||
@ -18276,9 +18276,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"rimraf": {
|
"rimraf": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^9.2.0"
|
"glob": "^9.2.0"
|
||||||
@ -19234,9 +19234,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "5.76.2",
|
"version": "5.76.3",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.2.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.3.tgz",
|
||||||
"integrity": "sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==",
|
"integrity": "sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/eslint-scope": "^3.7.3",
|
"@types/eslint-scope": "^3.7.3",
|
||||||
|
@ -23,8 +23,8 @@
|
|||||||
"@babel/preset-env": "^7.20.2",
|
"@babel/preset-env": "^7.20.2",
|
||||||
"@babel/preset-react": "^7.18.6",
|
"@babel/preset-react": "^7.18.6",
|
||||||
"@babel/preset-typescript": "^7.21.0",
|
"@babel/preset-typescript": "^7.21.0",
|
||||||
"@types/node": "^18.15.5",
|
"@types/node": "^18.15.9",
|
||||||
"@types/react": "^18.0.28",
|
"@types/react": "^18.0.29",
|
||||||
"@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",
|
||||||
@ -40,18 +40,18 @@
|
|||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss-loader": "^7.1.0",
|
"postcss-loader": "^7.1.0",
|
||||||
"postcss-nested": "^6.0.1",
|
"postcss-nested": "^6.0.1",
|
||||||
"prettier": "^2.8.6",
|
"prettier": "^2.8.7",
|
||||||
"rimraf": "^4.4.0",
|
"rimraf": "^4.4.1",
|
||||||
"style-loader": "^3.3.2",
|
"style-loader": "^3.3.2",
|
||||||
"ts-loader": "^9.4.2",
|
"ts-loader": "^9.4.2",
|
||||||
"tsconfig-paths": "^4.1.2",
|
"tsconfig-paths": "^4.1.2",
|
||||||
"typescript": "^5.0.2",
|
"typescript": "^5.0.2",
|
||||||
"webpack": "^5.76.2",
|
"webpack": "^5.76.3",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.13.1"
|
"webpack-dev-server": "^4.13.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dannadori/voice-changer-client-js": "^1.0.96",
|
"@dannadori/voice-changer-client-js": "^1.0.98",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
|
@ -262,6 +262,9 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
}, [audioOutputForGUI, outputRecordingStarted, appState.workletNodeSetting.startOutputRecording, appState.workletNodeSetting.stopOutputRecording])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const setAudioOutput = async () => {
|
||||||
|
const mediaDeviceInfos = await navigator.mediaDevices.enumerateDevices();
|
||||||
|
|
||||||
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
[AUDIO_ELEMENT_FOR_PLAY_RESULT, AUDIO_ELEMENT_FOR_TEST_ORIGINAL, AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK].forEach(x => {
|
||||||
const audio = document.getElementById(x) as HTMLAudioElement
|
const audio = document.getElementById(x) as HTMLAudioElement
|
||||||
if (audio) {
|
if (audio) {
|
||||||
@ -274,8 +277,14 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
audio.volume = 0
|
audio.volume = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
|
||||||
|
const found = audioOutputs.some(x => { return x.deviceId == audioOutputForGUI })
|
||||||
|
if (found) {
|
||||||
|
// @ts-ignore // 例外キャッチできないので事前にIDチェックが必要らしい。!?
|
||||||
audio.setSinkId(audioOutputForGUI)
|
audio.setSinkId(audioOutputForGUI)
|
||||||
|
} else {
|
||||||
|
console.warn("No audio output device. use default")
|
||||||
|
}
|
||||||
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
if (x == AUDIO_ELEMENT_FOR_TEST_CONVERTED_ECHOBACK) {
|
||||||
audio.volume = fileInputEchoback ? 1 : 0
|
audio.volume = fileInputEchoback ? 1 : 0
|
||||||
} else {
|
} else {
|
||||||
@ -284,9 +293,12 @@ export const useDeviceSetting = (): DeviceSettingState => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
setAudioOutput()
|
||||||
}, [audioOutputForGUI])
|
}, [audioOutputForGUI])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadCache = async () => {
|
const loadCache = async () => {
|
||||||
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
const key = await getItem(INDEXEDDB_KEY_AUDIO_OUTPUT)
|
||||||
|
4
client/lib/package-lock.json
generated
4
client/lib/package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "@dannadori/voice-changer-client-js",
|
"name": "@dannadori/voice-changer-client-js",
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"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.96",
|
"version": "1.0.98",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/readable-stream": "^2.3.15",
|
"@types/readable-stream": "^2.3.15",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@dannadori/voice-changer-client-js",
|
"name": "@dannadori/voice-changer-client-js",
|
||||||
"version": "1.0.96",
|
"version": "1.0.98",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"directories": {
|
"directories": {
|
||||||
|
@ -113,6 +113,7 @@ export class VoiceChangerClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (typeof this.setting.audioInput == "string") {
|
if (typeof this.setting.audioInput == "string") {
|
||||||
|
try {
|
||||||
this.currentMediaStream = await navigator.mediaDevices.getUserMedia({
|
this.currentMediaStream = await navigator.mediaDevices.getUserMedia({
|
||||||
audio: {
|
audio: {
|
||||||
deviceId: this.setting.audioInput,
|
deviceId: this.setting.audioInput,
|
||||||
@ -124,6 +125,11 @@ export class VoiceChangerClient {
|
|||||||
noiseSuppression: this.setting.noiseSuppression
|
noiseSuppression: this.setting.noiseSuppression
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(e)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
// this.currentMediaStream.getAudioTracks().forEach((x) => {
|
// this.currentMediaStream.getAudioTracks().forEach((x) => {
|
||||||
// console.log("MIC Setting(cap)", x.getCapabilities())
|
// console.log("MIC Setting(cap)", x.getCapabilities())
|
||||||
// console.log("MIC Setting(const)", x.getConstraints())
|
// console.log("MIC Setting(const)", x.getConstraints())
|
||||||
|
@ -159,6 +159,7 @@ class VoiceChangerWorkletProcessor extends AudioWorkletProcessor {
|
|||||||
|
|
||||||
|
|
||||||
if (voice) {
|
if (voice) {
|
||||||
|
this.volume = this.calcVol(voice, this.volume)
|
||||||
const volumeResponse: VoiceChangerWorkletProcessorResponse = {
|
const volumeResponse: VoiceChangerWorkletProcessorResponse = {
|
||||||
responseType: ResponseType.volume,
|
responseType: ResponseType.volume,
|
||||||
volume: this.volume
|
volume: this.volume
|
||||||
|
@ -1,257 +0,0 @@
|
|||||||
import sys
|
|
||||||
import os
|
|
||||||
if sys.platform.startswith('darwin'):
|
|
||||||
baseDir = [x for x in sys.path if x.endswith("Contents/MacOS")]
|
|
||||||
if len(baseDir) != 1:
|
|
||||||
print("baseDir should be only one ", baseDir)
|
|
||||||
sys.exit()
|
|
||||||
modulePath = os.path.join(baseDir[0], "DDSP-SVC")
|
|
||||||
sys.path.append(modulePath)
|
|
||||||
else:
|
|
||||||
sys.path.append("DDSP-SVC")
|
|
||||||
|
|
||||||
import io
|
|
||||||
from dataclasses import dataclass, asdict, field
|
|
||||||
from functools import reduce
|
|
||||||
import numpy as np
|
|
||||||
import torch
|
|
||||||
import onnxruntime
|
|
||||||
import pyworld as pw
|
|
||||||
import ddsp.vocoder as vo
|
|
||||||
|
|
||||||
import librosa
|
|
||||||
providers = ['OpenVINOExecutionProvider', "CUDAExecutionProvider", "DmlExecutionProvider", "CPUExecutionProvider"]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class DDSP_SVCSettings():
|
|
||||||
gpu: int = 0
|
|
||||||
dstId: int = 0
|
|
||||||
|
|
||||||
f0Detector: str = "dio" # dio or harvest
|
|
||||||
tran: int = 20
|
|
||||||
noiceScale: float = 0.3
|
|
||||||
predictF0: int = 0 # 0:False, 1:True
|
|
||||||
silentThreshold: float = 0.00001
|
|
||||||
extraConvertSize: int = 1024 * 32
|
|
||||||
clusterInferRatio: float = 0.1
|
|
||||||
|
|
||||||
framework: str = "PyTorch" # PyTorch or ONNX
|
|
||||||
pyTorchModelFile: str = ""
|
|
||||||
onnxModelFile: str = ""
|
|
||||||
configFile: str = ""
|
|
||||||
|
|
||||||
speakers: dict[str, int] = field(
|
|
||||||
default_factory=lambda: {}
|
|
||||||
)
|
|
||||||
|
|
||||||
# ↓mutableな物だけ列挙
|
|
||||||
intData = ["gpu", "dstId", "tran", "predictF0", "extraConvertSize"]
|
|
||||||
floatData = ["noiceScale", "silentThreshold", "clusterInferRatio"]
|
|
||||||
strData = ["framework", "f0Detector"]
|
|
||||||
|
|
||||||
|
|
||||||
class DDSP_SVC:
|
|
||||||
def __init__(self, params):
|
|
||||||
self.settings = DDSP_SVCSettings()
|
|
||||||
self.net_g = None
|
|
||||||
self.onnx_session = None
|
|
||||||
|
|
||||||
self.raw_path = io.BytesIO()
|
|
||||||
self.gpu_num = torch.cuda.device_count()
|
|
||||||
self.prevVol = 0
|
|
||||||
self.params = params
|
|
||||||
print("DDSP-SVC initialization:", params)
|
|
||||||
|
|
||||||
def loadModel(self, config: str, pyTorch_model_file: str = None, onnx_model_file: str = None, clusterTorchModel: str = None):
|
|
||||||
|
|
||||||
self.settings.configFile = config
|
|
||||||
# model
|
|
||||||
model, args = vo.load_model(pyTorch_model_file)
|
|
||||||
|
|
||||||
# hubert
|
|
||||||
self.model = model
|
|
||||||
self.args = args
|
|
||||||
|
|
||||||
vec_path = self.params["hubert"]
|
|
||||||
self.encoder = vo.Units_Encoder(
|
|
||||||
args.data.encoder,
|
|
||||||
vec_path,
|
|
||||||
args.data.encoder_sample_rate,
|
|
||||||
args.data.encoder_hop_size,
|
|
||||||
device="cpu")
|
|
||||||
# f0dec
|
|
||||||
self.f0_detector = vo.F0_Extractor(
|
|
||||||
self.settings.f0Detector,
|
|
||||||
44100,
|
|
||||||
512,
|
|
||||||
float(50),
|
|
||||||
float(1100))
|
|
||||||
|
|
||||||
return self.get_info()
|
|
||||||
|
|
||||||
def update_setteings(self, key: str, val: any):
|
|
||||||
if key == "onnxExecutionProvider" and self.onnx_session != None:
|
|
||||||
if val == "CUDAExecutionProvider":
|
|
||||||
if self.settings.gpu < 0 or self.settings.gpu >= self.gpu_num:
|
|
||||||
self.settings.gpu = 0
|
|
||||||
provider_options = [{'device_id': self.settings.gpu}]
|
|
||||||
self.onnx_session.set_providers(providers=[val], provider_options=provider_options)
|
|
||||||
else:
|
|
||||||
self.onnx_session.set_providers(providers=[val])
|
|
||||||
elif key in self.settings.intData:
|
|
||||||
setattr(self.settings, key, int(val))
|
|
||||||
if key == "gpu" and val >= 0 and val < self.gpu_num and self.onnx_session != None:
|
|
||||||
providers = self.onnx_session.get_providers()
|
|
||||||
print("Providers:", providers)
|
|
||||||
if "CUDAExecutionProvider" in providers:
|
|
||||||
provider_options = [{'device_id': self.settings.gpu}]
|
|
||||||
self.onnx_session.set_providers(providers=["CUDAExecutionProvider"], provider_options=provider_options)
|
|
||||||
elif key in self.settings.floatData:
|
|
||||||
setattr(self.settings, key, float(val))
|
|
||||||
elif key in self.settings.strData:
|
|
||||||
setattr(self.settings, key, str(val))
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def get_info(self):
|
|
||||||
data = asdict(self.settings)
|
|
||||||
|
|
||||||
data["onnxExecutionProviders"] = self.onnx_session.get_providers() if self.onnx_session != None else []
|
|
||||||
files = ["configFile", "pyTorchModelFile", "onnxModelFile"]
|
|
||||||
for f in files:
|
|
||||||
if data[f] != None and os.path.exists(data[f]):
|
|
||||||
data[f] = os.path.basename(data[f])
|
|
||||||
else:
|
|
||||||
data[f] = ""
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
def get_processing_sampling_rate(self):
|
|
||||||
return 44100
|
|
||||||
|
|
||||||
def get_unit_f0(self, audio_buffer, tran):
|
|
||||||
if (self.settings.gpu < 0 or self.gpu_num == 0) or self.settings.framework == "ONNX":
|
|
||||||
dev = torch.device("cpu")
|
|
||||||
else:
|
|
||||||
dev = torch.device("cpu")
|
|
||||||
# dev = torch.device("cuda", index=self.settings.gpu)
|
|
||||||
|
|
||||||
wav_44k = audio_buffer
|
|
||||||
f0 = self.f0_detector.extract(wav_44k, uv_interp=True, device=dev)
|
|
||||||
f0 = torch.from_numpy(f0).float().to(dev).unsqueeze(-1).unsqueeze(0)
|
|
||||||
f0 = f0 * 2 ** (float(10) / 12)
|
|
||||||
# print("f0:", f0)
|
|
||||||
|
|
||||||
print("wav_44k:::", wav_44k)
|
|
||||||
c = self.encoder.encode(torch.from_numpy(audio_buffer).float().unsqueeze(0).to(dev), 44100, 512)
|
|
||||||
# print("c:", c)
|
|
||||||
return c, f0
|
|
||||||
|
|
||||||
def generate_input(self, newData: any, inputSize: int, crossfadeSize: int):
|
|
||||||
# newData = newData.astype(np.float32) / 32768.0
|
|
||||||
# newData = newData.astype(np.float32) / self.hps.data.max_wav_value
|
|
||||||
|
|
||||||
if hasattr(self, "audio_buffer"):
|
|
||||||
self.audio_buffer = np.concatenate([self.audio_buffer, newData], 0) # 過去のデータに連結
|
|
||||||
else:
|
|
||||||
self.audio_buffer = newData
|
|
||||||
|
|
||||||
convertSize = inputSize + crossfadeSize + self.settings.extraConvertSize
|
|
||||||
hop_size = int(self.args.data.block_size * 44100 / self.args.data.sampling_rate)
|
|
||||||
print("hopsize", hop_size)
|
|
||||||
if convertSize % hop_size != 0: # モデルの出力のホップサイズで切り捨てが発生するので補う。
|
|
||||||
convertSize = convertSize + (hop_size - (convertSize % hop_size))
|
|
||||||
|
|
||||||
print("convsize", convertSize)
|
|
||||||
self.audio_buffer = self.audio_buffer[-1 * convertSize:] # 変換対象の部分だけ抽出
|
|
||||||
|
|
||||||
crop = self.audio_buffer[-1 * (inputSize + crossfadeSize):-1 * (crossfadeSize)]
|
|
||||||
|
|
||||||
rms = np.sqrt(np.square(crop).mean(axis=0))
|
|
||||||
vol = max(rms, self.prevVol * 0.0)
|
|
||||||
self.prevVol = vol
|
|
||||||
|
|
||||||
c, f0 = self.get_unit_f0(self.audio_buffer, self.settings.tran)
|
|
||||||
return (c, f0, convertSize, vol)
|
|
||||||
|
|
||||||
def _onnx_inference(self, data):
|
|
||||||
if hasattr(self, "onnx_session") == False or self.onnx_session == None:
|
|
||||||
print("[Voice Changer] No onnx session.")
|
|
||||||
return np.zeros(1).astype(np.int16)
|
|
||||||
|
|
||||||
c = data[0]
|
|
||||||
f0 = data[1]
|
|
||||||
convertSize = data[2]
|
|
||||||
vol = data[3]
|
|
||||||
|
|
||||||
if vol < self.settings.silentThreshold:
|
|
||||||
return np.zeros(convertSize).astype(np.int16)
|
|
||||||
|
|
||||||
c, f0, uv = [x.numpy() for x in data]
|
|
||||||
audio1 = self.onnx_session.run(
|
|
||||||
["audio"],
|
|
||||||
{
|
|
||||||
"c": c,
|
|
||||||
"f0": f0,
|
|
||||||
"g": np.array([self.settings.dstId]).astype(np.int64),
|
|
||||||
"uv": np.array([self.settings.dstId]).astype(np.int64),
|
|
||||||
"predict_f0": np.array([self.settings.dstId]).astype(np.int64),
|
|
||||||
"noice_scale": np.array([self.settings.dstId]).astype(np.int64),
|
|
||||||
|
|
||||||
|
|
||||||
})[0][0, 0] * self.hps.data.max_wav_value
|
|
||||||
|
|
||||||
audio1 = audio1 * vol
|
|
||||||
|
|
||||||
result = audio1
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _pyTorch_inference(self, data):
|
|
||||||
|
|
||||||
if hasattr(self, "model") == False or self.model == None:
|
|
||||||
print("[Voice Changer] No pyTorch session.")
|
|
||||||
return np.zeros(1).astype(np.int16)
|
|
||||||
|
|
||||||
if self.settings.gpu < 0 or self.gpu_num == 0:
|
|
||||||
dev = torch.device("cpu")
|
|
||||||
else:
|
|
||||||
dev = torch.device("cpu")
|
|
||||||
# dev = torch.device("cuda", index=self.settings.gpu)
|
|
||||||
|
|
||||||
c = data[0]
|
|
||||||
f0 = data[1]
|
|
||||||
convertSize = data[2]
|
|
||||||
vol = data[3]
|
|
||||||
if vol < self.settings.silentThreshold:
|
|
||||||
return np.zeros(convertSize).astype(np.int16)
|
|
||||||
|
|
||||||
with torch.no_grad():
|
|
||||||
c.to(dev)
|
|
||||||
f0.to(dev)
|
|
||||||
vol = torch.from_numpy(np.array([vol] * c.shape[1])).float().to(dev).unsqueeze(-1).unsqueeze(0)
|
|
||||||
spk_id = torch.LongTensor(np.array([[1]])).to(dev)
|
|
||||||
# print("vol", vol)
|
|
||||||
print("input", c.shape, f0.shape)
|
|
||||||
seg_output, _, (s_h, s_n) = self.model(c, f0, vol, spk_id=spk_id)
|
|
||||||
|
|
||||||
seg_output = seg_output.squeeze().cpu().numpy()
|
|
||||||
print("SEG:", seg_output)
|
|
||||||
|
|
||||||
return seg_output
|
|
||||||
|
|
||||||
def inference(self, data):
|
|
||||||
if self.settings.framework == "ONNX":
|
|
||||||
audio = self._onnx_inference(data)
|
|
||||||
else:
|
|
||||||
audio = self._pyTorch_inference(data)
|
|
||||||
return audio
|
|
||||||
|
|
||||||
def destroy(self):
|
|
||||||
del self.net_g
|
|
||||||
del self.onnx_session
|
|
Loading…
Reference in New Issue
Block a user