news 2026/9/10 18:43:52

如何用 GPT-SoVITS 的 inference_cli.py 在无 WebUI 环境完成一次合成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 GPT-SoVITS 的 inference_cli.py 在无 WebUI 环境完成一次合成

如何用 GPT-SoVITS 的 inference_cli.py 在无 WebUI 环境完成一次合成

【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS

如果你的机器只能跑命令行(例如没有图形界面的 Linux 服务器、远程容器),GPT-SoVITS 仓库里提供了一个纯命令行合成入口 inference_cli.py。它复用了推理 WebUI 的核心合成函数get_tts_wav,但完全不启动 Gradio 页面:你传入 GPT/SoVITS 模型、参考音频、参考文本和目标文本,它就执行一次合成并把结果写成output.wav。适用前提是环境已按 README.md 安装好依赖、FFmpeg 和预训练模型,且你手上有已训练的 GPT 模型(.ckpt)与 SoVITS 模型(.pth)。

准备工作:环境、模型与参考文件

inference_cli.py没有任何独立的依赖清单,它from GPT_SoVITS.inference_webui import ...直接复用 WebUI 模块的加载与合成逻辑,所以环境要求和 WebUI 推理完全一致。按 README 的 Linux 安装路径准备:

conda create -n GPTSoVits python=3.10 conda activate GPTSoVits bash install.sh --device <CU126|CU128|ROCM|CPU> --source <HF|HF-Mirror|ModelScope> [--download-uvr5]

README 明确说明:install.sh成功执行后,可以跳过手动下载预训练模型的步骤;否则需要把 Hugging Face 上的 GPT-SoVITS Models 下载到GPT_SoVITS/pretrained_models。中文合成还需要把 G2PWModel 解压重命名为G2PWModel放到GPT_SoVITS/text

推理时还会用到两个预训练资源,inference_webui.py的默认路径是GPT_SoVITS/pretrained_models/chinese-hubert-base(可用环境变量cnhubert_base_path覆盖)和GPT_SoVITS/pretrained_models/chinese-roberta-wwm-ext-large(可用bert_path覆盖),一般随预训练模型一起就位即可。

合成前还需准备四类文件:

  • GPT 模型文件与 SoVITS 模型文件(微调产物的.ckpt/.pth);
  • 一段参考音频:get_tts_wav内部会按 16kHz 重采样检查长度,超出 3~10 秒范围会直接抛出OSError:参考音频在3~10秒范围外,请更换!,所以参考音频必须落在这个区间;
  • 参考文本文件(UTF-8 文本):与参考音频对应的逐字转写,inference_cli.py会整文件读取;
  • 目标文本文件(UTF-8 文本):要合成的内容,同样整文件读取。

注意两点:参考文本和目标文本都是按“整个文件内容”读入的,不要在一个文件里混放多段无关内容;inference_cli.py内部合成参数固定为top_p=1temperature=1,不提供 CLI 参数覆盖。

执行合成:参数与命令

脚本定义了 8 个必填参数(见 inference_cli.py 的 argparse 定义),语言取值是硬编码的枚举:

参数说明取值
--gpt_modelGPT 模型文件路径必填
--sovits_modelSoVITS 模型文件路径必填
--ref_audio参考音频文件路径(3~10 秒)必填
--ref_text参考文本文件路径(UTF-8)必填
--ref_language参考音频语言中文/英文/日文
--target_text目标文本文件路径(UTF-8)必填
--target_language目标文本语言中文/英文/日文/中英混合/日英混合/多语种混合
--output_path输出目录必填

项目根目录下执行(下面的路径按你实际的文件位置替换,语言参数必须用上面枚举中的中文值原样传入):

python GPT_SoVITS/inference_cli.py \ --gpt_model <gpt模型文件.ckpt> \ --sovits_model <sovits模型文件.pth> \ --ref_audio <参考音频.wav> \ --ref_text <参考文本.txt> \ --ref_language 中文 \ --target_text <目标文本.txt> \ --target_language 中文 \ --output_path ./out

为什么强调在项目根目录执行:inference_webui.py在导入时会读写当前工作目录下的./weight.json来缓存/选择权重(change_gpt_weightschange_sovits_weights成功后会把本次加载的模型路径写入该文件的GPT/SoVITS键),而仓库根目录没有__init__.py,从根目录运行才能正常解析GPT_SoVITStools等顶层模块。因此该脚本除了产生音频外,还会更新当前工作目录的weight.json——这是可预期的副作用,不是报错。

结果验证:output.wav 在哪里

synthesize()会取合成结果生成器产出的最后一段音频,用 soundfile 写到os.path.join(output_path, "output.wav"),并在终端打印一行:

Audio saved to ./out/output.wav

上面是文档外的实际输出格式(脚本原文为print(f"Audio saved to {output_wav_path}")output_wav_path随你传的--output_path变化)。判定成功的依据就是这行打印加上--output_path目录下出现output.wav,用任意播放器核对内容即可。

如果运行中断,对照两处代码里明确定义的行为:

  • 参考音频不是 3~10 秒:终端出现参考音频在3~10秒范围外,请更换!OSError),换一段参考音频即可;
  • 目标版本是 v3 LoRA 权重但对应的 v3 底模缺失:change_sovits_weights会抛出FileExistsError,提示底模缺失、无法加载相应 LoRA 权重——需要先把GPT_SoVITS/pretrained_models中 v3 底模补齐(见 README 的 V3 Release Notes)。

限制与可选路径

  • 语言枚举有限:--ref_language只接受中文/英文/日文三选一,参考音频是韩语、粤语时无法用此脚本表达;目标文本才支持混合语言选项。
  • 输出文件名固定为output.wav:多次运行同一--output_path会互相覆盖,需要留存时每次换目录或事后改名。
  • top_ptemperature在脚本里写死为 1,想要 WebUI 里的top_k/top_p/temperature微调,CLI 不提供入口。
  • 如果你的环境其实可以开浏览器,README 给出的替代路径是python GPT_SoVITS/inference_webui.py(或python webui.py后打开1-GPT-SoVITS-TTS/1C-inference标签页),功能面更全;但在无 WebUI 环境,inference_cli.py就是这条最短路径。

【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 18:42:31

8款热门AI论文软件横向实测,本硕博论文避坑全攻略

前言&#xff1a;AI 写论文乱象频发&#xff0c;实测 8 款工具理清适配边界 每到毕业季&#xff0c;本科生、硕博生都会集中寻找 AI 论文辅助工具&#xff0c;市面各类写作软件层出不穷&#xff0c;但普遍存在几类硬伤&#xff1a;虚假参考文献、无法匹配本校格式、不支持公式代…

作者头像 李华
网站建设 2026/9/10 18:42:18

Kong 如何在 IDE 中用 EmmyLua 打断点调试 Lua 代码

Kong 如何在 IDE 中用 EmmyLua 打断点调试 Lua 代码 【免费下载链接】kong &#x1f98d; The API and AI Gateway 项目地址: https://gitcode.com/GitHub_Trending/ko/kong 在开发 Kong 插件或阅读 Kong 源码时&#xff0c;光靠日志很难看清请求上下文里的变量。DEVELO…

作者头像 李华
网站建设 2026/9/10 18:41:52

Rocky Linux 9仓库配置与优化指南

1. Rocky Linux 9 仓库配置的必要性作为RHEL的替代发行版&#xff0c;Rocky Linux 9继承了企业级Linux的稳定特性。但默认仓库往往无法满足实际需求&#xff0c;特别是在国内网络环境下。我最近在部署Rocky Linux 9时发现&#xff0c;官方仓库的访问速度时快时慢&#xff0c;而…

作者头像 李华
网站建设 2026/9/10 18:40:59

K8s调度器与反亲和:Pod更新如何触发关联Pod迁移

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 18:37:25

Android手势识别开发全指南:从基础到高级实现

1. Android手势操作基础解析在移动应用开发领域&#xff0c;手势交互已经成为提升用户体验的关键要素。作为Android开发者&#xff0c;掌握手势识别技术能够让你的应用从"能用"升级到"好用"的层次。不同于简单的点击事件&#xff0c;手势操作允许用户通过更…

作者头像 李华