This commit is contained in:
DelLevin-Home
2026-06-16 13:03:06 +08:00
parent 2e05854f9d
commit bb66913eab
5 changed files with 63 additions and 24 deletions

View File

@@ -58,8 +58,9 @@ def _default_config():
'top_k': 5, 'top_p': 1.0, 'temperature': 1.0,
'batch_size': 1, 'speed_factor': 1.0, 'seed': -1,
'gpt_model_dir': '', 'sovits_model_dir': '',
'gpt_model_dir_mode': 'absolute', 'sovits_model_dir_mode': 'absolute',
'last_gpt_model': '', 'last_sovits_model': '',
'refer_audio_folder': '',
'refer_audio_folder': '', 'refer_audio_folder_mode': 'absolute',
}
@@ -230,12 +231,16 @@ def get_config():
cfg = _load_config()
cfg['engine_status'] = _engine_status
# 扫描模型列表
gpt_dir = cfg.get('gpt_model_dir', '')
sovits_dir = cfg.get('sovits_model_dir', '')
sovits_path = cfg.get('sovits_project_path', '')
gpt_dir_raw = cfg.get('gpt_model_dir', '')
gpt_dir = gpt_dir_raw if cfg.get('gpt_model_dir_mode') == 'absolute' else os.path.join(sovits_path, gpt_dir_raw)
sovits_dir_raw = cfg.get('sovits_model_dir', '')
sovits_dir = sovits_dir_raw if cfg.get('sovits_model_dir_mode') == 'absolute' else os.path.join(sovits_path, sovits_dir_raw)
cfg['gpt_models'] = _scan_models(gpt_dir, '*.ckpt')
cfg['sovits_models'] = _scan_models(sovits_dir, '*.pth')
# 扫描参考音频
refer_folder = cfg.get('refer_audio_folder', '')
refer_raw = cfg.get('refer_audio_folder', '')
refer_folder = refer_raw if cfg.get('refer_audio_folder_mode') == 'absolute' else os.path.join(sovits_path, refer_raw)
if refer_folder and os.path.isdir(refer_folder):
AUDIO_EXTS = ('.wav', '.mp3', '.flac', '.ogg', '.aac', '.m4a', '.wma')
files = [os.path.join(refer_folder, f) for f in os.listdir(refer_folder)
@@ -255,8 +260,9 @@ def save_config():
'last_prompt_text', 'last_prompt_lang',
'last_text_lang', 'last_text_split_method',
'top_k', 'top_p', 'temperature', 'batch_size', 'speed_factor', 'seed',
'gpt_model_dir', 'sovits_model_dir',
'last_gpt_model', 'last_sovits_model', 'refer_audio_folder'):
'gpt_model_dir', 'sovits_model_dir', 'refer_audio_folder',
'gpt_model_dir_mode', 'sovits_model_dir_mode', 'refer_audio_folder_mode',
'last_gpt_model', 'last_sovits_model'):
if key in data:
cfg[key] = data[key]
_save_config(cfg)
@@ -329,8 +335,10 @@ def switch_model():
return jsonify({'success': False, 'error': '缺少参数'}), 400
cfg = _load_config()
sovits_path = cfg.get('sovits_project_path', '')
if model_type == 'gpt':
model_dir = cfg.get('gpt_model_dir', '')
model_dir_raw = cfg.get('gpt_model_dir', '')
model_dir = model_dir_raw if cfg.get('gpt_model_dir_mode') == 'absolute' else os.path.join(sovits_path, model_dir_raw)
full_path = os.path.join(model_dir, filename) if model_dir else filename
ok, err = _reload_model('reload_gpt', full_path)
if ok:
@@ -339,7 +347,8 @@ def switch_model():
return jsonify({'success': True, 'message': f'GPT 模型已切换: {filename}'})
return jsonify({'success': False, 'error': err})
elif model_type == 'sovits':
model_dir = cfg.get('sovits_model_dir', '')
model_dir_raw = cfg.get('sovits_model_dir', '')
model_dir = model_dir_raw if cfg.get('sovits_model_dir_mode') == 'absolute' else os.path.join(sovits_path, model_dir_raw)
full_path = os.path.join(model_dir, filename) if model_dir else filename
ok, err = _reload_model('reload_sovits', full_path)
if ok: