Open
Description
增强模型加载器与插件化推理架构支持多模型配置加载
可能关联 issue:
背景
随着社区中 TTS 模型微调能力的不断增强,涌现出越来越多的定制化模型。例如,Unsloth 社区对 spark-tts
的微调方法已被验证效果良好,资源消耗极低
(参考:https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning)
为适配这类多样化的模型结构,我们急需在推理系统中引入“一套推理逻辑支持多个模型文件”(1infer => many model files
)的能力。
推理系统中模型的抽象设计
当前系统中,一个模型推理流程需涉及以下几个核心模块:
- downloader(可选):定义如何从网络下载模型文件;
- infer(必须):推理代码的核心,目前 TTS 没有统一架构,不同模型实现差异较大;
- tn(可选):文本归一化模块,系统默认的 TN 流水线适配大多数场景,但某些模型仍需自定义;
- 其他(待补充)
配置文件结构(预想)
配置文件将以 YAML 格式定义,存放于 ./configs
目录下:
downloader:
model_name: gpt_sovits_v4
from_huggingface:
repo: lj1995/GPT-SoVITS
just_download_required_files: True
required_files:
- gsv-v4-pretrained/s2Gv4.pth
- gsv-v4-pretrained/vocoder.pth
# ...
from_modelscope:
# ...
infer:
target: modules.core.tts.GptSoVits.GptSoVitsModel.GptSoVitsModel
params:
version: v4
# ...
tn:
target: modules.core.tn.base_tn.BaseTN
params: {}
model:
# model registry id
id: gpt_sovits_v4_official
default_params:
temperature: 1
top_p: 1
top_k: 10
# ...
目录结构示意:
./models/
└── XXX_TTS/
└── model.pt
./configs/
└── XXX_TTS.yaml
对于新增模型,仅需:
- 提供一份配置文件到
configs/
;- 确保
infer
对应实现存在。
插件化构想
尽管该库以 WebUI 为特色,其核心价值更在于 TTS 流水线的抽象与统一 API 的设计。当前设计已实现推理代码与系统主流程的隔离,因此“模型插件化”将进一步提升系统扩展性。
插件化的方向:
- ModelZoo → ModelRegistry:从静态模型集合转向动态注册体系,不再默认包含任何模型;
- 插件系统?:或许无需复杂插件机制,仅通过读取配置中的模块路径即可完成“注入”,待进一步验证。