add native

This commit is contained in:
wataru 2023-01-28 11:51:56 +09:00
parent 5f885d9e21
commit 9f59f78079

View File

@ -1,4 +1,16 @@
import sys, os, argparse, platform import multiprocessing as mp
import subprocess
from const import SSL_KEY_DIR
from restapi.MMVC_Rest import MMVC_Rest
from sio.MMVC_SocketIOApp import MMVC_SocketIOApp
from voice_changer.VoiceChangerManager import VoiceChangerManager
from mods.ssl import create_self_signed_cert
import webbrowser
import uvicorn
import sys
import os
import argparse
import platform
import socket import socket
import misc.log_control import misc.log_control
@ -8,15 +20,6 @@ from distutils.util import strtobool
sys.path.append("MMVC_Client/python") sys.path.append("MMVC_Client/python")
import uvicorn
import webbrowser
from mods.ssl import create_self_signed_cert
from voice_changer.VoiceChangerManager import VoiceChangerManager
from sio.MMVC_SocketIOApp import MMVC_SocketIOApp
from restapi.MMVC_Rest import MMVC_Rest
from const import SSL_KEY_DIR
def setupArgParser(): def setupArgParser():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
@ -64,14 +67,16 @@ def printMessage(message, level=0):
# global app_socketio # global app_socketio
# global app_fastapi # global app_fastapi
parser = setupArgParser() parser = setupArgParser()
args = parser.parse_args() # args = parser.parse_args()
args, unknown = parser.parse_known_args()
# printMessage(f"Phase name:{__name__}", level=2) # printMessage(f"Phase name:{__name__}", level=2)
# thisFilename = os.path.basename(__file__)[:-3] # thisFilename = os.path.basename(__file__)[:-3]
# if __name__ == thisFilename or args.colab == True: # if __name__ == thisFilename or args.colab == True:
# printMessage(f"PHASE3:{__name__}", level=2) # printMessage(f"PHASE3:{__name__}", level=2)
TYPE = args.t TYPE = args.t
PORT = args.p PORT = args.p
CONFIG = args.c CONFIG = args.c
@ -79,13 +84,23 @@ MODEL = args.m if args.m != None else None
ONNX_MODEL = args.o if args.o != None else None ONNX_MODEL = args.o if args.o != None else None
def localServer():
uvicorn.run(
f"{os.path.basename(__file__)[:-3]}:app_socketio",
host="0.0.0.0",
port=int(PORT),
reload=False if hasattr(sys, "_MEIPASS") else True,
log_level="warning"
)
if args.colab == True: if args.colab == True:
os.environ["colab"] = "True" os.environ["colab"] = "True"
# if os.getenv("EX_TB_PORT"): # if os.getenv("EX_TB_PORT"):
# EX_TB_PORT = os.environ["EX_TB_PORT"] # EX_TB_PORT = os.environ["EX_TB_PORT"]
# exApplitionInfo.external_tensorboard_port = int(EX_TB_PORT) # exApplitionInfo.external_tensorboard_port = int(EX_TB_PORT)
voiceChangerManager = VoiceChangerManager.get_instance() voiceChangerManager = VoiceChangerManager.get_instance()
if CONFIG and (MODEL or ONNX_MODEL): if CONFIG and (MODEL or ONNX_MODEL):
voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL) voiceChangerManager.loadModel(CONFIG, MODEL, ONNX_MODEL)
app_fastapi = MMVC_Rest.get_instance(voiceChangerManager) app_fastapi = MMVC_Rest.get_instance(voiceChangerManager)
@ -96,6 +111,9 @@ if __name__ == '__mp_main__':
printMessage(f"サーバプロセスを起動しています。", level=2) printMessage(f"サーバプロセスを起動しています。", level=2)
if __name__ == '__main__': if __name__ == '__main__':
if sys.platform.startswith('win'):
mp.freeze_support()
printMessage(f"Voice Changerを起動しています。", level=2) printMessage(f"Voice Changerを起動しています。", level=2)
TYPE = args.t TYPE = args.t
PORT = args.p PORT = args.p
@ -153,10 +171,9 @@ if __name__ == '__main__':
printMessage(f"protocol: HTTP", level=1) printMessage(f"protocol: HTTP", level=1)
printMessage(f"-- ---- -- ", level=1) printMessage(f"-- ---- -- ", level=1)
# アドレス表示 # アドレス表示
printMessage( printMessage(
f"ブラウザで次のURLを開いてください.", level=2) f"ブラウザで次のURLを開いてください.", level=2)
if args.https == 1: if args.https == 1:
printMessage( printMessage(
f"https://<IP>:<PORT>/", level=1) f"https://<IP>:<PORT>/", level=1)
@ -177,7 +194,7 @@ if __name__ == '__main__':
printMessage(f"https://{ip}:{EX_PORT}/{path}", level=1) printMessage(f"https://{ip}:{EX_PORT}/{path}", level=1)
else: else:
printMessage(f"http://localhost:{EX_PORT}/{path}", level=1) printMessage(f"http://localhost:{EX_PORT}/{path}", level=1)
else: # 直接python起動 else: # 直接python起動
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80)) s.connect(("8.8.8.8", 80))
hostname = s.getsockname()[0] hostname = s.getsockname()[0]
@ -194,7 +211,7 @@ if __name__ == '__main__':
f"{os.path.basename(__file__)[:-3]}:app_socketio", f"{os.path.basename(__file__)[:-3]}:app_socketio",
host="0.0.0.0", host="0.0.0.0",
port=int(PORT), port=int(PORT),
reload = False if hasattr(sys, "_MEIPASS") else True, reload=False if hasattr(sys, "_MEIPASS") else True,
ssl_keyfile=key_path, ssl_keyfile=key_path,
ssl_certfile=cert_path, ssl_certfile=cert_path,
# log_level="warning" # log_level="warning"
@ -209,11 +226,21 @@ if __name__ == '__main__':
log_level="warning" log_level="warning"
) )
else: else:
uvicorn.run( # uvicorn.run(
f"{os.path.basename(__file__)[:-3]}:app_socketio", # f"{os.path.basename(__file__)[:-3]}:app_socketio",
host="0.0.0.0", # host="0.0.0.0",
port=int(PORT), # port=int(PORT),
reload = False if hasattr(sys, "_MEIPASS") else True, # reload = False if hasattr(sys, "_MEIPASS") else True,
log_level="warning" # log_level="warning"
) # )
p = mp.Process(name="p", target=localServer)
p.start()
try:
if sys.platform.startswith('win'):
process = subprocess.Popen(["voice-changer-native-client.exe", "-u", f"http://localhost:{PORT}/{path}"])
return_code = process.wait()
print("client clonsed.")
p.terminate()
except Exception as e:
print(e)