Skip to content

Support multi-model configs and plugin-based inference #244

Open
@zhzLuke96

Description

@zhzLuke96

增强模型加载器与插件化推理架构支持多模型配置加载

可能关联 issue:

背景

随着社区中 TTS 模型微调能力的不断增强,涌现出越来越多的定制化模型。例如,Unsloth 社区对 spark-tts 的微调方法已被验证效果良好,资源消耗极低
(参考:https://docs.unsloth.ai/basics/text-to-speech-tts-fine-tuning

为适配这类多样化的模型结构,我们急需在推理系统中引入“一套推理逻辑支持多个模型文件”(1infer => many model files)的能力。


推理系统中模型的抽象设计

当前系统中,一个模型推理流程需涉及以下几个核心模块:

  1. downloader(可选):定义如何从网络下载模型文件;
  2. infer(必须):推理代码的核心,目前 TTS 没有统一架构,不同模型实现差异较大;
  3. tn(可选):文本归一化模块,系统默认的 TN 流水线适配大多数场景,但某些模型仍需自定义;
  4. 其他(待补充)

配置文件结构(预想)

配置文件将以 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 的设计。当前设计已实现推理代码与系统主流程的隔离,因此“模型插件化”将进一步提升系统扩展性。

插件化的方向:

  1. ModelZoo → ModelRegistry:从静态模型集合转向动态注册体系,不再默认包含任何模型;
  2. 插件系统?:或许无需复杂插件机制,仅通过读取配置中的模块路径即可完成“注入”,待进一步验证。

Metadata

Metadata

Assignees

No one assigned

    Labels

    StoryNext iteration summary and TODO list

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions