mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-01-23 05:25:01 +03:00
modify animation setting, update supportting onnx for mmvc v.1.5.x
This commit is contained in:
parent
9718afaa0d
commit
586d83c550
1
.gitignore
vendored
1
.gitignore
vendored
@ -26,6 +26,7 @@ server/model_so-vits-svc-40/
|
||||
server/model_so-vits-svc-40_mahiro/
|
||||
server/model_so-vits-svc-40_amitaro/
|
||||
server/model_so-vits-svc-40_tsukuyomi/
|
||||
server/model_so-vits-svc-40_kikotokurage
|
||||
model_DDSP-SVC/
|
||||
server/model_sovits
|
||||
server/test
|
||||
|
2
client/demo_DDSP-SVC/dist/index.js
vendored
2
client/demo_DDSP-SVC/dist/index.js
vendored
File diff suppressed because one or more lines are too long
1920
client/demo_DDSP-SVC/package-lock.json
generated
1920
client/demo_DDSP-SVC/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,7 +51,7 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
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
1920
client/demo_so-vits-svc_40/package-lock.json
generated
1920
client/demo_so-vits-svc_40/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,7 +51,7 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
@ -1,40 +1,40 @@
|
||||
[
|
||||
{ "mode": "normal", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 500, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 800, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 1000, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 1000, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 1000, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 80, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 500, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 50, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 50, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 200, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 400, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 400, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 200, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1000, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 10, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 10, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 20, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 20, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 1, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 1, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1, "layer_path": "ROOT_漫符_なし" }
|
||||
]
|
||||
|
@ -2,5 +2,5 @@
|
||||
"charaName": "あみたろ",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 0.1
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
Binary file not shown.
@ -2,13 +2,13 @@
|
||||
{ "mode": "normal", "z_index": 0, "number": 40, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 100, "layer_path": "ROOT_normal3" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_normal1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 50, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_talk-u4" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_normal1" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 5, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 4, "layer_path": "ROOT_talk-u4" }
|
||||
]
|
||||
|
@ -2,5 +2,5 @@
|
||||
"charaName": "黄琴海月",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 4
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
@ -1,14 +1,40 @@
|
||||
[
|
||||
{ "mode": "normal", "z_index": 0, "number": 40, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 100, "layer_path": "ROOT_normal3" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 80, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_normal1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 50, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_talk-u4" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_normal1" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 20, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 20, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 1, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 1, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1, "layer_path": "ROOT_漫符_なし" }
|
||||
]
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"charaName": "黄琴海月",
|
||||
"charaName": "あみたろ",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 4
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
2
client/demo_so-vits-svc_40_c/dist/index.js
vendored
2
client/demo_so-vits-svc_40_c/dist/index.js
vendored
File diff suppressed because one or more lines are too long
1934
client/demo_so-vits-svc_40_c/package-lock.json
generated
1934
client/demo_so-vits-svc_40_c/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,8 +51,8 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/psdanimator": "^1.0.17",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/psdanimator": "^1.0.19",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
@ -1,40 +1,40 @@
|
||||
[
|
||||
{ "mode": "normal", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 500, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 800, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 1000, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 1000, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 1000, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 80, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 500, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 50, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 50, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 100, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 200, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 400, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 400, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 200, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1000, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1000, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 10, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 10, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 10, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 20, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 20, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 1, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 1, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1, "layer_path": "ROOT_漫符_なし" }
|
||||
]
|
||||
|
@ -2,5 +2,5 @@
|
||||
"charaName": "あみたろ",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 0.1
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
Binary file not shown.
@ -2,13 +2,13 @@
|
||||
{ "mode": "normal", "z_index": 0, "number": 40, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 100, "layer_path": "ROOT_normal3" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_normal1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 50, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_talk-u4" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_normal1" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 5, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 10, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 11, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 4, "layer_path": "ROOT_talk-u4" }
|
||||
]
|
||||
|
@ -2,5 +2,5 @@
|
||||
"charaName": "黄琴海月",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 4
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
@ -1,14 +1,40 @@
|
||||
[
|
||||
{ "mode": "normal", "z_index": 0, "number": 40, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 100, "layer_path": "ROOT_normal3" },
|
||||
{ "mode": "normal", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "normal", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 80, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "normal", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*おすまし" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "normal", "z_index": 3, "number": 100, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "normal", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "normal", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_なし" },
|
||||
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_normal1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 50, "layer_path": "ROOT_talk2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_talk1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_normal2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u1" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u2" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 110, "layer_path": "ROOT_talk-u3" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 40, "layer_path": "ROOT_talk-u4" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 100, "layer_path": "ROOT_normal1" }
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 50, "layer_path": "ROOT_!目_*通常" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*通常→" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∩∩" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*微笑" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*お" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_* -" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 5, "layer_path": "ROOT_!口_*う" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 10, "layer_path": "ROOT_!口_*にこ" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 20, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*通常" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 40, "layer_path": "ROOT_!眉_*ドヤ" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 20, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 100, "layer_path": "ROOT_表情_赤面" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 10, "layer_path": "ROOT_漫符_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 100, "layer_path": "ROOT_漫符_*♪" },
|
||||
{ "mode": "talking", "z_index": 0, "number": 1, "layer_path": "ROOT_全身" },
|
||||
{ "mode": "talking", "z_index": 1, "number": 1, "layer_path": "ROOT_!目_*∪∪" },
|
||||
{ "mode": "talking", "z_index": 2, "number": 1, "layer_path": "ROOT_!口_*え" },
|
||||
{ "mode": "talking", "z_index": 3, "number": 1, "layer_path": "ROOT_!眉_*平行" },
|
||||
{ "mode": "talking", "z_index": 4, "number": 1, "layer_path": "ROOT_表情_なし" },
|
||||
{ "mode": "talking", "z_index": 5, "number": 1, "layer_path": "ROOT_漫符_なし" }
|
||||
]
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"charaName": "黄琴海月",
|
||||
"charaName": "あみたろ",
|
||||
"psdFile": "/assets/settings/image.psd",
|
||||
"motionFile": "/assets/settings/motion.json",
|
||||
"motionSpeedRate": 4
|
||||
"motionSpeedRate": 1
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ export const usePsdAnimation = (): PsdAnimationStateAndMethod => {
|
||||
const canvas = document.getElementById(TSUKUYOMI_CANVAS) as HTMLCanvasElement
|
||||
// const c = generateConfig(psdFile, canvas, 640, 480, true)
|
||||
const c = generateConfig(psd, canvas, 640, 640, false)
|
||||
c.processorURL = "https://cdn.jsdelivr.net/npm/@dannadori/psdanimator@1.0.17/dist/process.js"
|
||||
c.processorURL = "https://cdn.jsdelivr.net/npm/@dannadori/psdanimator@1.0.19/dist/process.js"
|
||||
c.transfer = [c.canvas]
|
||||
await w.init(c)
|
||||
console.log("[psd animator] Initialized")
|
||||
|
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
1920
client/demo_so-vits-svc_40v2/package-lock.json
generated
1920
client/demo_so-vits-svc_40v2/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,7 +51,7 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
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
2413
client/demo_v13/package-lock.json
generated
2413
client/demo_v13/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,7 +51,7 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
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
1936
client/demo_v15/package-lock.json
generated
1936
client/demo_v15/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
||||
"@babel/preset-react": "^7.18.6",
|
||||
"@babel/preset-typescript": "^7.21.4",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "^18.0.31",
|
||||
"@types/react": "^18.0.32",
|
||||
"@types/react-dom": "^18.0.11",
|
||||
"autoprefixer": "^10.4.14",
|
||||
"babel-loader": "^9.1.2",
|
||||
@ -51,7 +51,7 @@
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dannadori/voice-changer-client-js": "^1.0.99",
|
||||
"@dannadori/voice-changer-client-js": "^1.0.101",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.4.0",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.4.0",
|
||||
|
292
client/lib/package-lock.json
generated
292
client/lib/package-lock.json
generated
@ -1,16 +1,16 @@
|
||||
{
|
||||
"name": "@dannadori/voice-changer-client-js",
|
||||
"version": "1.0.99",
|
||||
"version": "1.0.101",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@dannadori/voice-changer-client-js",
|
||||
"version": "1.0.99",
|
||||
"version": "1.0.101",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@types/readable-stream": "^2.3.15",
|
||||
"amazon-chime-sdk-js": "^3.11.0",
|
||||
"amazon-chime-sdk-js": "^3.12.0",
|
||||
"buffer": "^6.0.3",
|
||||
"localforage": "^1.10.0",
|
||||
"react": "^18.2.0",
|
||||
@ -18,24 +18,24 @@
|
||||
"socket.io-client": "^4.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/audioworklet": "^0.0.38",
|
||||
"@types/node": "^18.15.0",
|
||||
"@types/react": "18.0.28",
|
||||
"@types/audioworklet": "^0.0.41",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "18.0.32",
|
||||
"@types/react-dom": "18.0.11",
|
||||
"eslint": "^8.36.0",
|
||||
"eslint-config-prettier": "^8.7.0",
|
||||
"eslint": "^8.37.0",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-webpack-plugin": "^4.0.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "^2.8.4",
|
||||
"prettier": "^2.8.7",
|
||||
"raw-loader": "^4.0.2",
|
||||
"rimraf": "^4.4.0",
|
||||
"rimraf": "^4.4.1",
|
||||
"ts-loader": "^9.4.2",
|
||||
"typescript": "^4.9.5",
|
||||
"webpack": "^5.76.1",
|
||||
"typescript": "^5.0.3",
|
||||
"webpack": "^5.77.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"webpack-dev-server": "^4.11.1"
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-crypto/ie11-detection": {
|
||||
@ -1428,14 +1428,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
|
||||
"integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
|
||||
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.5.0",
|
||||
"espree": "^9.5.1",
|
||||
"globals": "^13.19.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
@ -1451,9 +1451,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
|
||||
"integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
|
||||
"version": "8.37.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz",
|
||||
"integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@ -1686,9 +1686,9 @@
|
||||
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
|
||||
},
|
||||
"node_modules/@types/audioworklet": {
|
||||
"version": "0.0.38",
|
||||
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.38.tgz",
|
||||
"integrity": "sha512-wChYxkstf8v8y6IFucqzZvKUMLvaXxHnY8Tjyi81AzhuP3ut7B4grzX2sxwbB+lowde8RvzFg1e8NGu5ui2qMg==",
|
||||
"version": "0.0.41",
|
||||
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.41.tgz",
|
||||
"integrity": "sha512-8BWffzGoSRz436IviQVPye75YYWfac4OKdcLgkZxb3APZxSmAOp2SMtsH1yuM1x57/z/J7bsm05Yq98Hzk1t/w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/body-parser": {
|
||||
@ -1829,9 +1829,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz",
|
||||
"integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
|
||||
"version": "18.15.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
|
||||
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q=="
|
||||
},
|
||||
"node_modules/@types/prop-types": {
|
||||
"version": "15.7.5",
|
||||
@ -1852,9 +1852,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/react": {
|
||||
"version": "18.0.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
||||
"version": "18.0.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.32.tgz",
|
||||
"integrity": "sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/prop-types": "*",
|
||||
@ -2259,9 +2259,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/amazon-chime-sdk-js": {
|
||||
"version": "3.11.0",
|
||||
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.11.0.tgz",
|
||||
"integrity": "sha512-YBYnT/P2BxqcUoHvsjVbqKRmWnjC02ofz6DVANJXbaMEjZj5Ih55COFcYYJa0+0MPNMuvGDC6Z8PS+xjfjkgHg==",
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.12.0.tgz",
|
||||
"integrity": "sha512-h71cPO67TO2ZkLlhyWyB7NDYf7abK7/aqOX8Ojju7jn+x3MZXUSmF0K9bdRHiII+7MILyK/7Yf8JmpcCswuq8Q==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-js": "^2.0.1",
|
||||
"@aws-sdk/client-chime-sdk-messaging": "^3.0.0",
|
||||
@ -3230,15 +3230,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz",
|
||||
"integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==",
|
||||
"version": "8.37.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz",
|
||||
"integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.1",
|
||||
"@eslint/js": "8.36.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.37.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@ -3249,8 +3249,8 @@
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-visitor-keys": "^3.3.0",
|
||||
"espree": "^9.5.0",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"esquery": "^1.4.2",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
@ -3287,9 +3287,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-prettier": {
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz",
|
||||
"integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==",
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
|
||||
"integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"eslint-config-prettier": "bin/cli.js"
|
||||
@ -3374,12 +3374,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-visitor-keys": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
|
||||
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-webpack-plugin": {
|
||||
@ -3407,14 +3410,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "9.5.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz",
|
||||
"integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==",
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
|
||||
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
"eslint-visitor-keys": "^3.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@ -4828,6 +4831,16 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/launch-editor": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
|
||||
"integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"picocolors": "^1.0.0",
|
||||
"shell-quote": "^1.7.3"
|
||||
}
|
||||
},
|
||||
"node_modules/levn": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
@ -5830,9 +5843,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "2.8.4",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz",
|
||||
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
|
||||
"version": "2.8.7",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"prettier": "bin-prettier.js"
|
||||
@ -6246,9 +6259,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rimraf": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"glob": "^9.2.0"
|
||||
@ -7179,16 +7192,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.9.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
||||
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz",
|
||||
"integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.2.0"
|
||||
"node": ">=12.20"
|
||||
}
|
||||
},
|
||||
"node_modules/ua-parser-js": {
|
||||
@ -7333,9 +7346,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.76.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz",
|
||||
"integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==",
|
||||
"version": "5.77.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.77.0.tgz",
|
||||
"integrity": "sha512-sbGNjBr5Ya5ss91yzjeJTLKyfiwo5C628AFjEa6WSXcZa4E+F57om3Cc8xLb1Jh0b243AWuSYRf3dn7HVeFQ9Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.3",
|
||||
@ -7457,9 +7470,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/webpack-dev-server": {
|
||||
"version": "4.11.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz",
|
||||
"integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==",
|
||||
"version": "4.13.2",
|
||||
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.2.tgz",
|
||||
"integrity": "sha512-5i6TrGBRxG4vnfDpB6qSQGfnB6skGBXNL5/542w2uRGLimX6qeE5BQMLrzIC3JYV/xlGOv+s+hTleI9AZKUQNw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/bonjour": "^3.5.9",
|
||||
@ -7481,6 +7494,7 @@
|
||||
"html-entities": "^2.3.2",
|
||||
"http-proxy-middleware": "^2.0.3",
|
||||
"ipaddr.js": "^2.0.1",
|
||||
"launch-editor": "^2.6.0",
|
||||
"open": "^8.0.9",
|
||||
"p-retry": "^4.5.0",
|
||||
"rimraf": "^3.0.2",
|
||||
@ -7490,7 +7504,7 @@
|
||||
"sockjs": "^0.3.24",
|
||||
"spdy": "^4.0.2",
|
||||
"webpack-dev-middleware": "^5.3.1",
|
||||
"ws": "^8.4.2"
|
||||
"ws": "^8.13.0"
|
||||
},
|
||||
"bin": {
|
||||
"webpack-dev-server": "bin/webpack-dev-server.js"
|
||||
@ -7506,6 +7520,9 @@
|
||||
"webpack": "^4.37.0 || ^5.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"webpack": {
|
||||
"optional": true
|
||||
},
|
||||
"webpack-cli": {
|
||||
"optional": true
|
||||
}
|
||||
@ -7526,6 +7543,27 @@
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/webpack-dev-server/node_modules/ws": {
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/webpack-merge": {
|
||||
"version": "5.8.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz",
|
||||
@ -9083,14 +9121,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz",
|
||||
"integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
|
||||
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.5.0",
|
||||
"espree": "^9.5.1",
|
||||
"globals": "^13.19.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
@ -9100,9 +9138,9 @@
|
||||
}
|
||||
},
|
||||
"@eslint/js": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz",
|
||||
"integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==",
|
||||
"version": "8.37.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz",
|
||||
"integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==",
|
||||
"dev": true
|
||||
},
|
||||
"@humanwhocodes/config-array": {
|
||||
@ -9298,9 +9336,9 @@
|
||||
"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
|
||||
},
|
||||
"@types/audioworklet": {
|
||||
"version": "0.0.38",
|
||||
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.38.tgz",
|
||||
"integrity": "sha512-wChYxkstf8v8y6IFucqzZvKUMLvaXxHnY8Tjyi81AzhuP3ut7B4grzX2sxwbB+lowde8RvzFg1e8NGu5ui2qMg==",
|
||||
"version": "0.0.41",
|
||||
"resolved": "https://registry.npmjs.org/@types/audioworklet/-/audioworklet-0.0.41.tgz",
|
||||
"integrity": "sha512-8BWffzGoSRz436IviQVPye75YYWfac4OKdcLgkZxb3APZxSmAOp2SMtsH1yuM1x57/z/J7bsm05Yq98Hzk1t/w==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/body-parser": {
|
||||
@ -9441,9 +9479,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.15.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz",
|
||||
"integrity": "sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
|
||||
"version": "18.15.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
|
||||
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q=="
|
||||
},
|
||||
"@types/prop-types": {
|
||||
"version": "15.7.5",
|
||||
@ -9464,9 +9502,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/react": {
|
||||
"version": "18.0.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
|
||||
"integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
|
||||
"version": "18.0.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.32.tgz",
|
||||
"integrity": "sha512-gYGXdtPQ9Cj0w2Fwqg5/ak6BcK3Z15YgjSqtyDizWUfx7mQ8drs0NBUzRRsAdoFVTO8kJ8L2TL8Skm7OFPnLUw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/prop-types": "*",
|
||||
@ -9819,9 +9857,9 @@
|
||||
"requires": {}
|
||||
},
|
||||
"amazon-chime-sdk-js": {
|
||||
"version": "3.11.0",
|
||||
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.11.0.tgz",
|
||||
"integrity": "sha512-YBYnT/P2BxqcUoHvsjVbqKRmWnjC02ofz6DVANJXbaMEjZj5Ih55COFcYYJa0+0MPNMuvGDC6Z8PS+xjfjkgHg==",
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npmjs.org/amazon-chime-sdk-js/-/amazon-chime-sdk-js-3.12.0.tgz",
|
||||
"integrity": "sha512-h71cPO67TO2ZkLlhyWyB7NDYf7abK7/aqOX8Ojju7jn+x3MZXUSmF0K9bdRHiII+7MILyK/7Yf8JmpcCswuq8Q==",
|
||||
"requires": {
|
||||
"@aws-crypto/sha256-js": "^2.0.1",
|
||||
"@aws-sdk/client-chime-sdk-messaging": "^3.0.0",
|
||||
@ -10531,15 +10569,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "8.36.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz",
|
||||
"integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==",
|
||||
"version": "8.37.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz",
|
||||
"integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.1",
|
||||
"@eslint/js": "8.36.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.37.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@ -10550,8 +10588,8 @@
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-visitor-keys": "^3.3.0",
|
||||
"espree": "^9.5.0",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"esquery": "^1.4.2",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
@ -10579,9 +10617,9 @@
|
||||
}
|
||||
},
|
||||
"eslint-config-prettier": {
|
||||
"version": "8.7.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz",
|
||||
"integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==",
|
||||
"version": "8.8.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
|
||||
"integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
@ -10639,9 +10677,9 @@
|
||||
}
|
||||
},
|
||||
"eslint-visitor-keys": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
|
||||
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
|
||||
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"eslint-webpack-plugin": {
|
||||
@ -10658,14 +10696,14 @@
|
||||
}
|
||||
},
|
||||
"espree": {
|
||||
"version": "9.5.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz",
|
||||
"integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==",
|
||||
"version": "9.5.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
|
||||
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^8.8.0",
|
||||
"acorn-jsx": "^5.3.2",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
"eslint-visitor-keys": "^3.4.0"
|
||||
}
|
||||
},
|
||||
"esquery": {
|
||||
@ -11688,6 +11726,16 @@
|
||||
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
||||
"dev": true
|
||||
},
|
||||
"launch-editor": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz",
|
||||
"integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"picocolors": "^1.0.0",
|
||||
"shell-quote": "^1.7.3"
|
||||
}
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
@ -12435,9 +12483,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"prettier": {
|
||||
"version": "2.8.4",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz",
|
||||
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
|
||||
"version": "2.8.7",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
|
||||
"integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
|
||||
"dev": true
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
@ -12734,9 +12782,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
|
||||
"integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
|
||||
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"glob": "^9.2.0"
|
||||
@ -13444,9 +13492,9 @@
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.9.5",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
||||
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.3.tgz",
|
||||
"integrity": "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==",
|
||||
"dev": true
|
||||
},
|
||||
"ua-parser-js": {
|
||||
@ -13544,9 +13592,9 @@
|
||||
}
|
||||
},
|
||||
"webpack": {
|
||||
"version": "5.76.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.1.tgz",
|
||||
"integrity": "sha512-4+YIK4Abzv8172/SGqObnUjaIHjLEuUasz9EwQj/9xmPPkYJy2Mh03Q/lJfSD3YLzbxy5FeTq5Uw0323Oh6SJQ==",
|
||||
"version": "5.77.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.77.0.tgz",
|
||||
"integrity": "sha512-sbGNjBr5Ya5ss91yzjeJTLKyfiwo5C628AFjEa6WSXcZa4E+F57om3Cc8xLb1Jh0b243AWuSYRf3dn7HVeFQ9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/eslint-scope": "^3.7.3",
|
||||
@ -13653,9 +13701,9 @@
|
||||
}
|
||||
},
|
||||
"webpack-dev-server": {
|
||||
"version": "4.11.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz",
|
||||
"integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==",
|
||||
"version": "4.13.2",
|
||||
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.2.tgz",
|
||||
"integrity": "sha512-5i6TrGBRxG4vnfDpB6qSQGfnB6skGBXNL5/542w2uRGLimX6qeE5BQMLrzIC3JYV/xlGOv+s+hTleI9AZKUQNw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/bonjour": "^3.5.9",
|
||||
@ -13677,6 +13725,7 @@
|
||||
"html-entities": "^2.3.2",
|
||||
"http-proxy-middleware": "^2.0.3",
|
||||
"ipaddr.js": "^2.0.1",
|
||||
"launch-editor": "^2.6.0",
|
||||
"open": "^8.0.9",
|
||||
"p-retry": "^4.5.0",
|
||||
"rimraf": "^3.0.2",
|
||||
@ -13686,7 +13735,7 @@
|
||||
"sockjs": "^0.3.24",
|
||||
"spdy": "^4.0.2",
|
||||
"webpack-dev-middleware": "^5.3.1",
|
||||
"ws": "^8.4.2"
|
||||
"ws": "^8.13.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"rimraf": {
|
||||
@ -13697,6 +13746,13 @@
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "8.13.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@dannadori/voice-changer-client-js",
|
||||
"version": "1.0.99",
|
||||
"version": "1.0.101",
|
||||
"description": "",
|
||||
"main": "dist/index.js",
|
||||
"directories": {
|
||||
@ -26,28 +26,28 @@
|
||||
"author": "wataru.okada@flect.co.jp",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@types/audioworklet": "^0.0.38",
|
||||
"@types/node": "^18.15.0",
|
||||
"@types/react": "18.0.28",
|
||||
"@types/audioworklet": "^0.0.41",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/react": "18.0.32",
|
||||
"@types/react-dom": "18.0.11",
|
||||
"eslint": "^8.36.0",
|
||||
"eslint-config-prettier": "^8.7.0",
|
||||
"eslint": "^8.37.0",
|
||||
"eslint-config-prettier": "^8.8.0",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-react": "^7.32.2",
|
||||
"eslint-webpack-plugin": "^4.0.0",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"prettier": "^2.8.4",
|
||||
"prettier": "^2.8.7",
|
||||
"raw-loader": "^4.0.2",
|
||||
"rimraf": "^4.4.0",
|
||||
"rimraf": "^4.4.1",
|
||||
"ts-loader": "^9.4.2",
|
||||
"typescript": "^4.9.5",
|
||||
"webpack": "^5.76.1",
|
||||
"typescript": "^5.0.3",
|
||||
"webpack": "^5.77.0",
|
||||
"webpack-cli": "^5.0.1",
|
||||
"webpack-dev-server": "^4.11.1"
|
||||
"webpack-dev-server": "^4.13.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/readable-stream": "^2.3.15",
|
||||
"amazon-chime-sdk-js": "^3.11.0",
|
||||
"amazon-chime-sdk-js": "^3.12.0",
|
||||
"buffer": "^6.0.3",
|
||||
"localforage": "^1.10.0",
|
||||
"react": "^18.2.0",
|
||||
|
@ -34,16 +34,12 @@ ADD dummy /
|
||||
|
||||
RUN git clone -b v1.5.0.0_SiFiGAN https://github.com/isletennos/MMVC_Trainer.git
|
||||
WORKDIR /MMVC_Trainer/
|
||||
#RUN git checkout c242d3d1cf7f768af70d9735082ca2bdd90c45f3
|
||||
RUN git checkout 8cca023f5f709c70c2c2fc3e880cb1a119e18f44
|
||||
RUN git checkout 0fa4662a8741a127cc0bdb6ccdecfc17bdcba709
|
||||
|
||||
|
||||
RUN git clone https://github.com/isletennos/MMVC_Client.git
|
||||
WORKDIR /MMVC_Trainer/MMVC_Client
|
||||
#RUN git checkout 3374a1177b73e3f6d600e5dbe93af033c36ee120
|
||||
RUN git checkout 1424609e53c79e2d629add10ae4bfb16fc0c3c82
|
||||
|
||||
|
||||
|
||||
RUN git checkout 461cb231b57cbb17243110eaac8435d9cca24a26
|
||||
|
||||
WORKDIR /
|
||||
# ↓ テストスクリプトはTrainerのrootに置くとmodelsがconflictする。
|
||||
|
257
server/voice_changer/DDSP_SVC/DDSP_SVC_old.py
Normal file
257
server/voice_changer/DDSP_SVC/DDSP_SVC_old.py
Normal file
@ -0,0 +1,257 @@
|
||||
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
|
@ -17,7 +17,7 @@ import onnxruntime
|
||||
import pyworld as pw
|
||||
|
||||
from models import SynthesizerTrn
|
||||
from voice_changer.MMVCv15.client_modules import convert_continuos_f0, spectrogram_torch, TextAudioSpeakerCollate, get_hparams_from_file, load_checkpoint
|
||||
from voice_changer.MMVCv15.client_modules import convert_continuos_f0, spectrogram_torch, get_hparams_from_file, load_checkpoint
|
||||
|
||||
providers = ['OpenVINOExecutionProvider', "CUDAExecutionProvider", "DmlExecutionProvider", "CPUExecutionProvider"]
|
||||
|
||||
@ -56,34 +56,39 @@ class MMVCv15:
|
||||
|
||||
if pyTorch_model_file != None:
|
||||
self.settings.pyTorchModelFile = pyTorch_model_file
|
||||
else:
|
||||
self.settings.pyTorchModelFile = ""
|
||||
if onnx_model_file:
|
||||
self.settings.onnxModelFile = onnx_model_file
|
||||
else:
|
||||
self.settings.onnxModelFile = ""
|
||||
|
||||
print("self.settings.onnxModelFile::", self.settings.onnxModelFile)
|
||||
# PyTorchモデル生成
|
||||
self.net_g = SynthesizerTrn(
|
||||
spec_channels=self.hps.data.filter_length // 2 + 1,
|
||||
segment_size=self.hps.train.segment_size // self.hps.data.hop_length,
|
||||
inter_channels=self.hps.model.inter_channels,
|
||||
hidden_channels=self.hps.model.hidden_channels,
|
||||
upsample_rates=self.hps.model.upsample_rates,
|
||||
upsample_initial_channel=self.hps.model.upsample_initial_channel,
|
||||
upsample_kernel_sizes=self.hps.model.upsample_kernel_sizes,
|
||||
n_flow=self.hps.model.n_flow,
|
||||
dec_out_channels=1,
|
||||
dec_kernel_size=7,
|
||||
n_speakers=self.hps.data.n_speakers,
|
||||
gin_channels=self.hps.model.gin_channels,
|
||||
requires_grad_pe=self.hps.requires_grad.pe,
|
||||
requires_grad_flow=self.hps.requires_grad.flow,
|
||||
requires_grad_text_enc=self.hps.requires_grad.text_enc,
|
||||
requires_grad_dec=self.hps.requires_grad.dec
|
||||
)
|
||||
if pyTorch_model_file != None:
|
||||
self.net_g = SynthesizerTrn(
|
||||
spec_channels=self.hps.data.filter_length // 2 + 1,
|
||||
segment_size=self.hps.train.segment_size // self.hps.data.hop_length,
|
||||
inter_channels=self.hps.model.inter_channels,
|
||||
hidden_channels=self.hps.model.hidden_channels,
|
||||
upsample_rates=self.hps.model.upsample_rates,
|
||||
upsample_initial_channel=self.hps.model.upsample_initial_channel,
|
||||
upsample_kernel_sizes=self.hps.model.upsample_kernel_sizes,
|
||||
n_flow=self.hps.model.n_flow,
|
||||
dec_out_channels=1,
|
||||
dec_kernel_size=7,
|
||||
n_speakers=self.hps.data.n_speakers,
|
||||
gin_channels=self.hps.model.gin_channels,
|
||||
requires_grad_pe=self.hps.requires_grad.pe,
|
||||
requires_grad_flow=self.hps.requires_grad.flow,
|
||||
requires_grad_text_enc=self.hps.requires_grad.text_enc,
|
||||
requires_grad_dec=self.hps.requires_grad.dec
|
||||
)
|
||||
self.net_g.eval()
|
||||
load_checkpoint(pyTorch_model_file, self.net_g, None)
|
||||
# utils.load_checkpoint(pyTorch_model_file, self.net_g, None)
|
||||
|
||||
# ONNXモデル生成
|
||||
self.onxx_input_length = 8192
|
||||
if onnx_model_file != None:
|
||||
ort_options = onnxruntime.SessionOptions()
|
||||
ort_options.intra_op_num_threads = 8
|
||||
@ -91,10 +96,15 @@ class MMVCv15:
|
||||
onnx_model_file,
|
||||
providers=providers
|
||||
)
|
||||
inputs_info = self.onnx_session.get_inputs()
|
||||
for i in inputs_info:
|
||||
# print("ONNX INPUT SHAPE", i.name, i.shape)
|
||||
if i.name == "sin":
|
||||
self.onxx_input_length = i.shape[2]
|
||||
return self.get_info()
|
||||
|
||||
def update_setteings(self, key: str, val: any):
|
||||
if key == "onnxExecutionProvider" and self.onnx_session != None:
|
||||
if key == "onnxExecutionProvider" and self.settings.onnxModelFile != "": # self.onnx_session != None:
|
||||
if val == "CUDAExecutionProvider":
|
||||
if self.settings.gpu < 0 or self.settings.gpu >= self.gpu_num:
|
||||
self.settings.gpu = 0
|
||||
@ -104,7 +114,7 @@ class MMVCv15:
|
||||
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:
|
||||
if key == "gpu" and val >= 0 and val < self.gpu_num and self.settings.onnxModelFile != "": # self.onnx_session != None:
|
||||
providers = self.onnx_session.get_providers()
|
||||
print("Providers:", providers)
|
||||
if "CUDAExecutionProvider" in providers:
|
||||
@ -122,7 +132,7 @@ class MMVCv15:
|
||||
def get_info(self):
|
||||
data = asdict(self.settings)
|
||||
|
||||
data["onnxExecutionProviders"] = self.onnx_session.get_providers() if self.onnx_session != None else []
|
||||
data["onnxExecutionProviders"] = self.onnx_session.get_providers() if self.settings.onnxModelFile != "" else []
|
||||
files = ["configFile", "pyTorchModelFile", "onnxModelFile"]
|
||||
for f in files:
|
||||
if data[f] != None and os.path.exists(data[f]):
|
||||
@ -170,44 +180,46 @@ class MMVCv15:
|
||||
if convertSize % self.hps.data.hop_length != 0: # モデルの出力のホップサイズで切り捨てが発生するので補う。
|
||||
convertSize = convertSize + (self.hps.data.hop_length - (convertSize % self.hps.data.hop_length))
|
||||
|
||||
# ONNX は固定長
|
||||
if self.settings.framework == "ONNX":
|
||||
convertSize = self.onxx_input_length
|
||||
|
||||
self.audio_buffer = self.audio_buffer[-1 * convertSize:] # 変換対象の部分だけ抽出
|
||||
|
||||
f0 = self._get_f0(self.settings.f0Detector, self.audio_buffer) # f0 生成
|
||||
spec = self._get_spec(self.audio_buffer)
|
||||
f0 = self._get_f0(self.settings.f0Detector, self.audio_buffer) # torch
|
||||
f0 = (f0 * self.settings.f0Factor).unsqueeze(0).unsqueeze(0)
|
||||
spec = self._get_spec(self.audio_buffer) # torch
|
||||
sid = torch.LongTensor([int(self.settings.srcId)])
|
||||
|
||||
data = TextAudioSpeakerCollate(
|
||||
sample_rate=self.hps.data.sampling_rate,
|
||||
hop_size=self.hps.data.hop_length,
|
||||
f0_factor=self.settings.f0Factor
|
||||
)([(spec, sid, f0)])
|
||||
|
||||
return data
|
||||
return [spec, f0, sid]
|
||||
|
||||
def _onnx_inference(self, data):
|
||||
if hasattr(self, "onnx_session") == False or self.onnx_session == None:
|
||||
if self.settings.onnxModelFile == "":
|
||||
print("[Voice Changer] No ONNX session.")
|
||||
return np.zeros(1).astype(np.int16)
|
||||
|
||||
spec, spec_lengths, sid_src, sin, d = data
|
||||
spec, f0, sid_src = data
|
||||
spec = spec.unsqueeze(0)
|
||||
spec_lengths = torch.tensor([spec.size(2)])
|
||||
sid_tgt1 = torch.LongTensor([self.settings.dstId])
|
||||
sin, d = self.net_g.make_sin_d(f0)
|
||||
(d0, d1, d2, d3) = d
|
||||
audio1 = self.onnx_session.run(
|
||||
["audio"],
|
||||
{
|
||||
"specs": spec.numpy(),
|
||||
"lengths": spec_lengths.numpy(),
|
||||
"sin": sin.numpy(),
|
||||
"d0": d[0][:1].numpy(),
|
||||
"d1": d[1][:1].numpy(),
|
||||
"d2": d[2][:1].numpy(),
|
||||
"d3": d[3][:1].numpy(),
|
||||
"d0": d0.numpy(),
|
||||
"d1": d1.numpy(),
|
||||
"d2": d2.numpy(),
|
||||
"d3": d3.numpy(),
|
||||
"sid_src": sid_src.numpy(),
|
||||
"sid_tgt": sid_tgt1.numpy()
|
||||
})[0][0, 0] * self.hps.data.max_wav_value
|
||||
return audio1
|
||||
|
||||
def _pyTorch_inference(self, data):
|
||||
if hasattr(self, "net_g") == False or self.net_g == None:
|
||||
if self.settings.pyTorchModelFile == "":
|
||||
print("[Voice Changer] No pyTorch session.")
|
||||
return np.zeros(1).astype(np.int16)
|
||||
|
||||
@ -217,15 +229,14 @@ class MMVCv15:
|
||||
dev = torch.device("cuda", index=self.settings.gpu)
|
||||
|
||||
with torch.no_grad():
|
||||
spec, spec_lengths, sid_src, sin, d = data
|
||||
spec = spec.to(dev)
|
||||
spec_lengths = spec_lengths.to(dev)
|
||||
spec, f0, sid_src = data
|
||||
spec = spec.unsqueeze(0).to(dev)
|
||||
spec_lengths = torch.tensor([spec.size(2)]).to(dev)
|
||||
f0 = f0.to(dev)
|
||||
sid_src = sid_src.to(dev)
|
||||
sin = sin.to(dev)
|
||||
d = tuple([d[:1].to(dev) for d in d])
|
||||
sid_target = torch.LongTensor([self.settings.dstId]).to(dev)
|
||||
|
||||
audio1 = self.net_g.to(dev).voice_conversion(spec, spec_lengths, sin, d, sid_src, sid_target)[0, 0].data * self.hps.data.max_wav_value
|
||||
audio1 = self.net_g.to(dev).voice_conversion(spec, spec_lengths, f0, sid_src, sid_target)[0, 0].data * self.hps.data.max_wav_value
|
||||
result = audio1.float().cpu().numpy()
|
||||
return result
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
|
||||
|
||||
from features import SignalGenerator, dilated_factor
|
||||
from scipy.interpolate import interp1d
|
||||
import torch
|
||||
import numpy as np
|
||||
@ -9,90 +8,8 @@ import os
|
||||
hann_window = {}
|
||||
|
||||
|
||||
class TextAudioSpeakerCollate():
|
||||
""" Zero-pads model inputs and targets
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
sample_rate,
|
||||
hop_size,
|
||||
f0_factor=1.0,
|
||||
dense_factors=[0.5, 1, 4, 8],
|
||||
upsample_scales=[8, 4, 2, 2],
|
||||
sine_amp=0.1,
|
||||
noise_amp=0.003,
|
||||
signal_types=["sine"],
|
||||
):
|
||||
self.dense_factors = dense_factors
|
||||
self.prod_upsample_scales = np.cumprod(upsample_scales)
|
||||
self.sample_rate = sample_rate
|
||||
self.signal_generator = SignalGenerator(
|
||||
sample_rate=sample_rate,
|
||||
hop_size=hop_size,
|
||||
sine_amp=sine_amp,
|
||||
noise_amp=noise_amp,
|
||||
signal_types=signal_types,
|
||||
)
|
||||
self.f0_factor = f0_factor
|
||||
|
||||
def __call__(self, batch):
|
||||
"""Collate's training batch from normalized text, audio and speaker identities
|
||||
PARAMS
|
||||
------
|
||||
batch: [text_normalized, spec_normalized, wav_normalized, sid, note]
|
||||
"""
|
||||
|
||||
spec_lengths = torch.LongTensor(len(batch))
|
||||
sid = torch.LongTensor(len(batch))
|
||||
spec_padded = torch.FloatTensor(len(batch), batch[0][0].size(0), batch[0][0].size(1))
|
||||
f0_padded = torch.FloatTensor(len(batch), 1, batch[0][2].size(0))
|
||||
# 返り値の初期化
|
||||
spec_padded.zero_()
|
||||
f0_padded.zero_()
|
||||
|
||||
# dfs
|
||||
dfs_batch = [[] for _ in range(len(self.dense_factors))]
|
||||
|
||||
# row spec, sid, f0
|
||||
for i in range(len(batch)):
|
||||
row = batch[i]
|
||||
|
||||
spec = row[0]
|
||||
spec_padded[i, :, :spec.size(1)] = spec
|
||||
spec_lengths[i] = spec.size(1)
|
||||
|
||||
sid[i] = row[1]
|
||||
# 推論時 f0/cf0にf0の倍率を乗算してf0/cf0を求める
|
||||
f0 = row[2] * self.f0_factor
|
||||
f0_padded[i, :, :f0.size(0)] = f0
|
||||
|
||||
# dfs
|
||||
dfs = []
|
||||
# dilated_factor の入力はnumpy!!
|
||||
for df, us in zip(self.dense_factors, self.prod_upsample_scales):
|
||||
dfs += [
|
||||
np.repeat(dilated_factor(torch.unsqueeze(f0, dim=1).to('cpu').detach().numpy(), self.sample_rate, df), us)
|
||||
]
|
||||
|
||||
# よくわからないけど、後で論文ちゃんと読む
|
||||
for i in range(len(self.dense_factors)):
|
||||
dfs_batch[i] += [
|
||||
dfs[i].astype(np.float32).reshape(-1, 1)
|
||||
] # [(T', 1), ...]
|
||||
# よくわからないdfsを転置
|
||||
for i in range(len(self.dense_factors)):
|
||||
dfs_batch[i] = torch.FloatTensor(np.array(dfs_batch[i])).transpose(
|
||||
2, 1
|
||||
) # (B, 1, T')
|
||||
|
||||
# f0/cf0を実際に使うSignalに変換する
|
||||
in_batch = self.signal_generator(f0_padded)
|
||||
|
||||
return spec_padded, spec_lengths, sid, in_batch, dfs_batch
|
||||
|
||||
|
||||
def convert_continuos_f0(f0, f0_size):
|
||||
# 正式版チェックOK
|
||||
# get start and end of f0
|
||||
if (f0 == 0).all():
|
||||
return np.zeros((f0_size,))
|
||||
@ -108,13 +25,13 @@ def convert_continuos_f0(f0, f0_size):
|
||||
nz_frames = np.where(cf0 != 0)[0]
|
||||
# perform linear interpolation
|
||||
f = interp1d(nz_frames, cf0[nz_frames], bounds_error=False, fill_value=0.0)
|
||||
cf0_ = f(np.arange(0, f0_size))
|
||||
# print(cf0.shape, cf0_.shape, f0.shape, f0_size)
|
||||
# print(cf0_)
|
||||
return f(np.arange(0, f0_size))
|
||||
|
||||
|
||||
def spectrogram_torch(y, n_fft, sampling_rate, hop_size, win_size, center=False):
|
||||
# 正式版チェックOK
|
||||
if torch.min(y) < -1.:
|
||||
print('min value is ', torch.min(y))
|
||||
if torch.max(y) > 1.:
|
||||
@ -137,6 +54,7 @@ def spectrogram_torch(y, n_fft, sampling_rate, hop_size, win_size, center=False)
|
||||
|
||||
|
||||
def get_hparams_from_file(config_path):
|
||||
# 正式版チェックOK
|
||||
with open(config_path, "r", encoding="utf-8") as f:
|
||||
data = f.read()
|
||||
config = json.loads(data)
|
||||
@ -146,6 +64,7 @@ def get_hparams_from_file(config_path):
|
||||
|
||||
|
||||
class HParams():
|
||||
# 正式版チェックOK
|
||||
def __init__(self, **kwargs):
|
||||
for k, v in kwargs.items():
|
||||
if type(v) == dict:
|
||||
@ -178,6 +97,7 @@ class HParams():
|
||||
|
||||
|
||||
def load_checkpoint(checkpoint_path, model, optimizer=None):
|
||||
# 正式版チェックOK
|
||||
assert os.path.isfile(checkpoint_path), f"No such file or directory: {checkpoint_path}"
|
||||
checkpoint_dict = torch.load(checkpoint_path, map_location='cpu')
|
||||
iteration = checkpoint_dict['iteration']
|
||||
|
Loading…
Reference in New Issue
Block a user