separate fileuploader

This commit is contained in:
wataru 2022-12-31 18:56:23 +09:00
parent 705f014a6c
commit 069737ff0a
3 changed files with 61 additions and 62 deletions

View File

@ -134,27 +134,27 @@ if __name__ == thisFilename or args.colab == True:
MODEL_DIR = "MMVC_Trainer/logs" MODEL_DIR = "MMVC_Trainer/logs"
os.makedirs(MODEL_DIR, exist_ok=True) os.makedirs(MODEL_DIR, exist_ok=True)
@app_fastapi.post("/upload_file") # @app_fastapi.post("/upload_file")
async def post_upload_file( # async def post_upload_file(
file: UploadFile = File(...), # file: UploadFile = File(...),
filename: str = Form(...) # filename: str = Form(...)
): # ):
return upload_file(UPLOAD_DIR, file, filename) # return upload_file(UPLOAD_DIR, file, filename)
@app_fastapi.post("/load_model") # @app_fastapi.post("/load_model")
async def post_load_model( # async def post_load_model(
modelFilename: str = Form(...), # modelFilename: str = Form(...),
modelFilenameChunkNum: int = Form(...), # modelFilenameChunkNum: int = Form(...),
configFilename: str = Form(...) # configFilename: str = Form(...)
): # ):
modelFilePath = concat_file_chunks( # modelFilePath = concat_file_chunks(
UPLOAD_DIR, modelFilename, modelFilenameChunkNum, UPLOAD_DIR) # UPLOAD_DIR, modelFilename, modelFilenameChunkNum, UPLOAD_DIR)
print(f'File saved to: {modelFilePath}') # print(f'File saved to: {modelFilePath}')
configFilePath = os.path.join(UPLOAD_DIR, configFilename) # configFilePath = os.path.join(UPLOAD_DIR, configFilename)
voiceChangerManager.loadModel(configFilePath, modelFilePath) # voiceChangerManager.loadModel(configFilePath, modelFilePath)
return {"load": f"{modelFilePath}, {configFilePath}"} # return {"load": f"{modelFilePath}, {configFilePath}"}
@app_fastapi.post("/load_model_for_train") @app_fastapi.post("/load_model_for_train")
async def post_load_model_for_train( async def post_load_model_for_train(
@ -184,49 +184,6 @@ if __name__ == thisFilename or args.colab == True:
# Voice Changer # Voice Changer
# ########## # ##########
@app_fastapi.post("/test2")
async def post_test2(voice: VoiceModel):
try:
# print("POST REQUEST PROCESSING....")
gpu = voice.gpu
srcId = voice.srcId
dstId = voice.dstId
timestamp = voice.timestamp
prefixChunkSize = voice.prefixChunkSize
buffer = voice.buffer
wav = base64.b64decode(buffer)
if wav == 0:
samplerate, data = read("dummy.wav")
unpackedData = data
else:
unpackedData = np.array(struct.unpack(
'<%sh' % (len(wav) // struct.calcsize('<h')), wav))
# write("logs/received_data.wav", 24000,
# unpackedData.astype(np.int16))
changedVoice = voiceChangerManager.changeVoice(
gpu, srcId, dstId, timestamp, prefixChunkSize, unpackedData)
changedVoiceBase64 = base64.b64encode(changedVoice).decode('utf-8')
data = {
"gpu": gpu,
"srcId": srcId,
"dstId": dstId,
"timestamp": timestamp,
"prefixChunkSize": prefixChunkSize,
"changedVoiceBase64": changedVoiceBase64
}
json_compatible_item_data = jsonable_encoder(data)
return JSONResponse(content=json_compatible_item_data)
except Exception as e:
print("REQUEST PROCESSING!!!! EXCEPTION!!!", e)
print(traceback.format_exc())
return str(e)
# Trainer REST API ※ ColabがTop直下のパスにしかPOSTを投げれないようなので"REST風" # Trainer REST API ※ ColabがTop直下のパスにしかPOSTを投げれないようなので"REST風"
@app_fastapi.get("/get_speakers") @app_fastapi.get("/get_speakers")

View File

@ -7,7 +7,7 @@ from voice_changer.VoiceChangerManager import VoiceChangerManager
from restapi.MMVC_Rest_Hello import MMVC_Rest_Hello from restapi.MMVC_Rest_Hello import MMVC_Rest_Hello
from restapi.MMVC_Rest_VoiceChanger import MMVC_Rest_VoiceChanger from restapi.MMVC_Rest_VoiceChanger import MMVC_Rest_VoiceChanger
from restapi.MMVC_Rest_Fileuploader import MMVC_Rest_Fileuploader
class ValidationErrorLoggingRoute(APIRoute): class ValidationErrorLoggingRoute(APIRoute):
def get_route_handler(self) -> Callable: def get_route_handler(self) -> Callable:
original_route_handler = super().get_route_handler() original_route_handler = super().get_route_handler()
@ -51,6 +51,8 @@ class MMVC_Rest:
app_fastapi.include_router(restHello.router) app_fastapi.include_router(restHello.router)
restVoiceChanger = MMVC_Rest_VoiceChanger(voiceChangerManager) restVoiceChanger = MMVC_Rest_VoiceChanger(voiceChangerManager)
app_fastapi.include_router(restVoiceChanger.router) app_fastapi.include_router(restVoiceChanger.router)
fileUploader = MMVC_Rest_Fileuploader(voiceChangerManager)
app_fastapi.include_router(fileUploader.router)
cls._instance = app_fastapi cls._instance = app_fastapi
return cls._instance return cls._instance

View File

@ -0,0 +1,40 @@
import os
from fastapi import APIRouter
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
from fastapi import HTTPException, FastAPI, UploadFile, File, Form
from mods.FileUploader import upload_file, concat_file_chunks
from voice_changer.VoiceChangerManager import VoiceChangerManager
UPLOAD_DIR = "upload_dir"
os.makedirs(UPLOAD_DIR, exist_ok=True)
MODEL_DIR = "MMVC_Trainer/logs"
os.makedirs(MODEL_DIR, exist_ok=True)
class MMVC_Rest_Fileuploader:
def __init__(self, voiceChangerManager:VoiceChangerManager):
self.voiceChangerManager = voiceChangerManager
self.router = APIRouter()
self.router.add_api_route("/upload_file", self.post_upload_file, methods=["POST"])
self.router.add_api_route("/load_model", self.post_load_model, methods=["POST"])
def post_upload_file(self, file: UploadFile = File(...), filename: str = Form(...)):
return upload_file(UPLOAD_DIR, file, filename)
def post_load_model(
self,
modelFilename: str = Form(...),
modelFilenameChunkNum: int = Form(...),
configFilename: str = Form(...)
):
modelFilePath = concat_file_chunks(
UPLOAD_DIR, modelFilename, modelFilenameChunkNum, UPLOAD_DIR)
configFilePath = os.path.join(UPLOAD_DIR, configFilename)
self.voiceChangerManager.loadModel(configFilePath, modelFilePath)
return {"load": f"{modelFilePath}, {configFilePath}"}