This commit is contained in:
wataru 2022-10-30 19:28:27 +09:00
parent b282f677a0
commit 717fbca538
3 changed files with 34 additions and 14 deletions

View File

@ -8,6 +8,7 @@ from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder
from fastapi import FastAPI, HTTPException
from fastapi.staticfiles import StaticFiles
from pydantic import BaseModel
from scipy.io.wavfile import write, read
@ -101,21 +102,32 @@ def printMessage(message, level=0):
print(f"\033[47m {message}\033[0m")
global app_socketio
global app_fastapi
parser = setupArgParser()
args = parser.parse_args()
printMessage(f"Phase name:{__name__}", level=2)
thisFilename = os.path.basename(__file__)[:-3]
if __name__ == thisFilename:
if __name__ == thisFilename or args.colab == True:
printMessage(f"PHASE3:{__name__}", level=2)
parser = setupArgParser()
args = parser.parse_args()
PORT = args.p
CONFIG = args.c
MODEL = args.m
app_fastapi = FastAPI()
app_fastapi.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app_fastapi.mount("/front", StaticFiles(directory="../frontend/dist", html=True), name="static")
sio = socketio.AsyncServer(
async_mode='asgi',
cors_allowed_origins='*'
@ -223,8 +235,6 @@ if __name__ == '__mp_main__':
if __name__ == '__main__':
printMessage(f"PHASE1:{__name__}", level=2)
parser = setupArgParser()
args = parser.parse_args()
PORT = args.p
CONFIG = args.c
MODEL = args.m
@ -298,10 +308,20 @@ if __name__ == '__main__':
)
else:
# HTTP サーバ起動
uvicorn.run(
f"{os.path.basename(__file__)[:-3]}:app_socketio",
host="0.0.0.0",
port=int(PORT),
reload=True,
log_level="critical"
)
if args.colab == True:
uvicorn.run(
f"{os.path.basename(__file__)[:-3]}:app_fastapi",
host="0.0.0.0",
port=int(PORT),
log_level="critical"
)
else:
uvicorn.run(
f"{os.path.basename(__file__)[:-3]}:app_socketio",
host="0.0.0.0",
port=int(PORT),
reload=True,
log_level="critical"
)

View File

@ -3913,7 +3913,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"fetchTextResource\": () => (/* binding */ fetchTextResource),\n/* harmony export */ \"postVoice\": () => (/* binding */ postVoice),\n/* harmony export */ \"uploadModelProps\": () => (/* binding */ uploadModelProps),\n/* harmony export */ \"uploadModelPropsResumable\": () => (/* binding */ uploadModelPropsResumable)\n/* harmony export */ });\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")[\"Buffer\"];\n// import Resumable from 'resumablejs'\n// import { file } from \"jszip\";\nconst fetchTextResource = async (url) => {\n const res = await fetch(url, {\n method: \"GET\"\n });\n const text = res.text();\n return text;\n};\nconst postVoice = async (url, gpu, srcId, dstId, timestamp, buffer) => {\n const obj = {\n gpu, srcId, dstId, timestamp, buffer: Buffer.from(buffer).toString('base64')\n };\n const body = JSON.stringify(obj);\n const res = await fetch(`${url}`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: body\n });\n const receivedJson = await res.json();\n const changedVoiceBase64 = receivedJson[\"changedVoiceBase64\"];\n const buf = Buffer.from(changedVoiceBase64, \"base64\");\n const ab = new ArrayBuffer(buf.length);\n // console.log(\"RECIV\", buf.length)\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n};\nconst uploadModelProps = (modelFile, configFile, onprogress) => {\n const req = new XMLHttpRequest();\n const formData = new FormData();\n formData.append(\"modelFile\", modelFile);\n formData.append(\"configFile\", configFile);\n req.upload.onprogress = (ev) => {\n const progress = Math.ceil(ev.loaded / ev.total * 10000 / 100);\n console.log(\"Progress:\", ev.loaded, ev.total, progress);\n onprogress(progress, ev.loaded == ev.total);\n };\n req.upload.onloadend = (ev) => {\n console.log(\"Progress[END!]:\", ev.loaded, ev.total, Math.ceil(ev.loaded / ev.total * 10000 / 100));\n onprogress(100, true);\n };\n req.open(\"POST\", '/upload_model_file');\n req.send(formData);\n};\nconst uploadModelPropsResumable = async (modelFile, _configFile, _onprogress) => {\n const size = 128 * 1024;\n const fileChunks = [];\n let index = 0; // index値\n for (let cur = 0; cur < modelFile.size; cur += size) {\n fileChunks.push({\n hash: index++,\n chunk: modelFile.slice(cur, cur + size),\n });\n }\n console.log(\"FILE_CHUNKS:\", fileChunks);\n for (const x of fileChunks) {\n const p = new Promise((resolve, _reject) => {\n const req = new XMLHttpRequest();\n const formData = new FormData();\n formData.append(\"file\", x.chunk);\n formData.append(\"filename\", \"file_\" + x.hash);\n req.upload.onprogress = (ev) => {\n const progress = Math.ceil(ev.loaded / ev.total * 10000 / 100);\n console.log(\"Progress:\", ev.loaded, ev.total, progress);\n // onprogress(progress, ev.loaded == ev.total)\n };\n req.upload.onloadend = (ev) => {\n console.log(\"Progress[END!]:\", ev.loaded, ev.total, Math.ceil(ev.loaded / ev.total * 10000 / 100));\n resolve();\n // onprogress(100, true)\n };\n req.open(\"POST\", '/resumable');\n req.send(formData);\n });\n await p;\n }\n // const res = new Resumable({\n // target: '/resumable',\n // // chunkSize: 100 * 1024,\n // simultaneousUploads: 1,\n // })\n // res.on(\"progress\", () => {\n // console.log(\"PROGRESS:\", res.progress)\n // })\n // res.on(\"uploadStart\", () => {\n // console.log(\"uploadStart:\")\n // })\n // res.on(\"fileSuccess\", (file: Resumable.ResumableFile) => {\n // console.log(\"fileSuccess:\", file)\n // })\n // res.on(\"fileAdded\", () => {\n // console.log(\"fileAdded:\")\n // })\n // res.on(\"fileError\", () => {\n // console.log(\"fileError:\")\n // })\n // res.addFile(modelFile)\n // res.addFile(_configFile)\n // console.log(\"send\", res.files, res.getSize())\n // res.upload()\n};\n\n\n//# sourceURL=webpack://voice-changer-internal/./frontend/src/001_clients_and_managers/002_ResourceLoader.ts?");
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"fetchTextResource\": () => (/* binding */ fetchTextResource),\n/* harmony export */ \"postVoice\": () => (/* binding */ postVoice),\n/* harmony export */ \"uploadModelProps\": () => (/* binding */ uploadModelProps),\n/* harmony export */ \"uploadModelPropsResumable\": () => (/* binding */ uploadModelPropsResumable)\n/* harmony export */ });\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")[\"Buffer\"];\n// import Resumable from 'resumablejs'\n// import { file } from \"jszip\";\nconst fetchTextResource = async (url) => {\n const res = await fetch(url, {\n method: \"GET\"\n });\n const text = res.text();\n return text;\n};\nconst postVoice = async (url, gpu, srcId, dstId, timestamp, buffer) => {\n const obj = {\n gpu, srcId, dstId, timestamp, buffer: Buffer.from(buffer).toString('base64')\n };\n const body = JSON.stringify(obj);\n const res = await fetch(`${url}`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: body\n });\n const receivedJson = await res.json();\n const changedVoiceBase64 = receivedJson[\"changedVoiceBase64\"];\n const buf = Buffer.from(changedVoiceBase64, \"base64\");\n const ab = new ArrayBuffer(buf.length);\n // console.log(\"RECIV\", buf.length)\n const view = new Uint8Array(ab);\n for (let i = 0; i < buf.length; ++i) {\n view[i] = buf[i];\n }\n return ab;\n};\nconst uploadModelProps = (modelFile, configFile, onprogress) => {\n const req = new XMLHttpRequest();\n const formData = new FormData();\n formData.append(\"modelFile\", modelFile);\n formData.append(\"configFile\", configFile);\n req.upload.onprogress = (ev) => {\n const progress = Math.ceil(ev.loaded / ev.total * 10000 / 100);\n console.log(\"Progress:\", ev.loaded, ev.total, progress);\n onprogress(progress, ev.loaded == ev.total);\n };\n req.upload.onloadend = (ev) => {\n console.log(\"Progress[END!]:\", ev.loaded, ev.total, Math.ceil(ev.loaded / ev.total * 10000 / 100));\n onprogress(100, true);\n };\n req.open(\"POST\", '/upload_model_file');\n req.send(formData);\n};\nconst uploadModelPropsResumable = async (modelFile, _configFile, _onprogress) => {\n const size = 128 * 1024;\n const fileChunks = [];\n let index = 0; // index値\n for (let cur = 0; cur < modelFile.size; cur += size) {\n fileChunks.push({\n hash: index++,\n chunk: modelFile.slice(cur, cur + size),\n });\n }\n console.log(\"FILE_CHUNKS:\", fileChunks);\n for (const x of fileChunks) {\n console.log(\"SEND CHUNK:\", x.hash);\n const p = new Promise((resolve, _reject) => {\n const req = new XMLHttpRequest();\n const formData = new FormData();\n formData.append(\"file\", x.chunk);\n formData.append(\"filename\", \"file_\" + x.hash);\n req.upload.onprogress = (ev) => {\n const progress = Math.ceil(ev.loaded / ev.total * 10000 / 100);\n console.log(\"Progress:\", ev.loaded, ev.total, progress);\n // onprogress(progress, ev.loaded == ev.total)\n };\n req.upload.onloadend = (ev) => {\n console.log(\"Progress[END!]:\", ev.loaded, ev.total, Math.ceil(ev.loaded / ev.total * 10000 / 100));\n resolve();\n // onprogress(100, true)\n };\n req.open(\"POST\", '/resumable');\n req.send(formData);\n });\n console.log(\"SEND CHUNK wait:\", x.hash);\n await p;\n console.log(\"SEND CHUNK done:\", x.hash);\n }\n // const res = new Resumable({\n // target: '/resumable',\n // // chunkSize: 100 * 1024,\n // simultaneousUploads: 1,\n // })\n // res.on(\"progress\", () => {\n // console.log(\"PROGRESS:\", res.progress)\n // })\n // res.on(\"uploadStart\", () => {\n // console.log(\"uploadStart:\")\n // })\n // res.on(\"fileSuccess\", (file: Resumable.ResumableFile) => {\n // console.log(\"fileSuccess:\", file)\n // })\n // res.on(\"fileAdded\", () => {\n // console.log(\"fileAdded:\")\n // })\n // res.on(\"fileError\", () => {\n // console.log(\"fileError:\")\n // })\n // res.addFile(modelFile)\n // res.addFile(_configFile)\n // console.log(\"send\", res.files, res.getSize())\n // res.upload()\n};\n\n\n//# sourceURL=webpack://voice-changer-internal/./frontend/src/001_clients_and_managers/002_ResourceLoader.ts?");
/***/ }),

View File

@ -1,4 +1,4 @@
FROM dannadori/voice-changer-internal:20221030_185857 as front
FROM dannadori/voice-changer-internal:20221030_192652 as front
FROM debian:bullseye-slim as base
ARG DEBIAN_FRONTEND=noninteractive