# -*- coding: utf-8 -*- """ RVC 变声后台工作进程 通过 stdin/stdout 二进制协议与 Flask 通信 sys.stdout 重定向到 stderr,防止 RVC 的 print() 污染通信通道 """ import sys import os import json import struct import traceback _comm_stdout = sys.stdout.buffer sys.stdout = sys.stderr rvc_dir = sys.argv[1] if len(sys.argv) > 1 else os.path.dirname(os.path.abspath(__file__)) os.chdir(rvc_dir) if rvc_dir not in sys.path: sys.path.insert(0, rvc_dir) # 必须在 Config() 之前,防止 argparse 解析失败 sys.argv = sys.argv[:1] def send_msg(obj): data = json.dumps(obj, ensure_ascii=False).encode('utf-8') _comm_stdout.write(struct.pack('