0%

链路:西门子 S7-200 + MCGS 触摸屏 + 蓝蜂物联网网关

工具:

  • STEP 7-Micro/WIN V4.0 SP9 编程软件
  • MCGSPro / MCGS Embed 触摸屏设计软件
  • 蓝蜂配置工具

OPC UA(OLE Process Control Unified Architecture) 用于过程控制的接口(Object link&Embeded OLE)统一架构

用于不同PLC厂商的通信协议封装集成 介于上位机/云端 与设备之间 配合网关 代理服务 避免上位机保持几十上百个tcp连接

通过协议传输语义化数据 描述 文档等

PLC实现的核心控制功能

  • 开关与逻辑控制
  • 模拟量与过程控制 数模转换 比例、积分、微分、模糊控制
  • 脉冲接受或输出
  • 累计现场数据

了解Pascal风格的ST(structured text)编程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// -----------------------------------------------------------------
// 1. 指令边缘捕捉
// -----------------------------------------------------------------
rtEnable(CLK := mbSV_Enable);
rtDisable(CLK := mbSV_Disable);

// -----------------------------------------------------------------
// 2. 核心逻辑控制 (修正使能逻辑)
// -----------------------------------------------------------------

// ON 指令触发 -> 开启使能
IF rtEnable.Q THEN
bServoPowerOn := TRUE;
mbSV_Enable := FALSE;
END_IF

// OFF 指令触发 -> 强制关闭使能
IF rtDisable.Q THEN
bServoPowerOn := FALSE;
mbSV_Disable := FALSE;
END_IF
...
IF fbMoveAbs.Done OR fbMoveAbs.Error THEN mbSV_MoveAbs := FALSE; END_IF

fb是功能块

串口 RS232 RS485 都是物理层标准
RS485

其中RS232使用较高差异的电平(±3-12v)区分逻辑 结构简单 用在芯片之间通讯 或在1m以内的PLC与上位机通讯

RS485使用差分信号区分逻辑(如A>B为逻辑0 反之为1) 使用缠绕双绞线以抗干扰 传输距离可以在1200m 半双工!

上位机编程一般直接根据串口逻辑进行(使用通用串口总线)

Modbus

ModBus链路

ModBus链路

一个项目中还可能有多条 同一链路上使用相同波特率 主站->从站 以实现轮询/问答

仪表要配置 站地址(站号) 通讯参数(波特率 校验 数据位 停止位)

  • Modebus RTU (Remote Terminal Unit) 远程终端设备
  • Modebus TCP

寄存器

  • 线圈寄存器 bit 可读可写
  • 离散输入寄存器 bit 可读
  • 保持寄存器 word(16bit) 可读可写
  • 输入寄存器 word(16bit) 可读可写

功能码

功能码 (Hex) 操作名称 读写权限 对应地址前缀 典型用途与场景
01 读线圈 0x (00001-) 查看开关输出状态
例如:检查继电器是否吸合、电机是否运行、指示灯状态。
02 读离散输入 1x (10001-) 读取外部开关信号
例如:读取按钮按下状态、限位开关触发、传感器到位信号。
03 读保持寄存器 读/写 4x (40001-) 最常用的功能
读取/设置设备参数(如目标温度、PID参数)、读取模拟量输出值。
04 读输入寄存器 只读 3x (30001-) 采集实时测量值
读取传感器数据(如当前电压、电流、温度、压力),通常不可修改。
05 写单个线圈 0x (00001-) 控制开关动作
远程启动/停止电机、强制置位继电器、开关阀门。
06 写单个保持寄存器 4x (40001-) 修改单个参数
修改变频器的频率设定、调整温控器的设定值。
10 (16) 写多个保持寄存器 4x (40001-) 批量下发配置
一次性写入一组PID参数、设置多段速运行指令,提高效率。

视觉设计到刀版图

刀版图Texture

设计交互

editor

[Github QDesign]

1
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';

OpenClaw 深度解析:架构拆解、工具执行机制、记忆系统与AI Agent的演进方向

其架构核心是长生命周期进程 通过面向本地计算环境的智能体编排网关(Local Orchestration Gateway)拿到对系统管理员级别的操作权限

其超额消耗的token主要不是来自用户输入,而是来自上下文。每次推理时,模型往往要同时读取系统提示词、历史对话、记忆库、Skill 说明、工具返回结果和当前任务。

OpenClaw 也摒弃RAG 以文件即真实的唯一来源, OpenClaw的系统Prompt文件:

  • SOUL.md: 定义 Agent 的基础系统指令、角色、安全边界。
  • AGENTS.md: 定义可用工具和基础协议。
  • MEMORY.md: 高浓度、人工或系统提纯的长期核心记忆。
  • memory/今天.md和昨天.md: 近 48 小时的操作流水。

LLM的API调用 甚至 Heartbeat 触发(每 30 分钟)都会将这些文件全量丢给LLM

Skill 像是一份操作手册(SKILL.md)。它告诉模型“什么时候做什么事、如何使用哪些工具”。Tool 提供能力,例如读文件、执行命令;Skill 则教模型如何组合和使用这些能力。

当新增一个 GitHub Skill 后,模型并没有变聪明,而是获得了一份新的操作说明书,因此知道如何创建 PR、查看 Issue 或执行相关命令。

ChromaDB向量数据库

LLM Embedding(大语言模型嵌入) 是指利用特定的LLM将文本(如单词、句子、段落)转换为固定长度的数值向量(即“嵌入向量”,embedding vector) 的过程。这些向量能够捕捉文本的语义信息,使得语义相近的文本在向量空间中距离更近。

用于LLM Embedding的特定的模型叫Embedding LLM(手动滑稽),业内有BGE、GTE等

Canvas2DRenderingContext2D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ctx.beginPath();
ctx.fillStyle = '#5E8C7B';
ctx.strokeStyle = '#FFFFFF';
ctx.lineWidth = 4;
ctx.lineJoin = 'round';

// Draw left side (head to tail)
ctx.moveTo(leftPoints[0].x, leftPoints[0].y);
for (let i = 1; i < leftPoints.length; i++) {
const xc = (leftPoints[i].x + leftPoints[i - 1].x) / 2;
const yc = (leftPoints[i].y + leftPoints[i - 1].y) / 2;
ctx.quadraticCurveTo(leftPoints[i - 1].x, leftPoints[i - 1].y, xc, yc);
}
ctx.closePath();
ctx.fill();
ctx.stroke();

运行在浏览器的扩展程序可直接与当前网页交互 可以实现自动评论 媒体捕获等功能

框架

YOLO(You Only Look Once) 高效目标检测算法框架 与传统目标检测方法不同 可以同时识别出图中多个物体的类别和位置

通常我们获取某个主流实现,如Ultralytics YOLOv8 其提供了多种安装方案、命令、API等

一键安装Ultralytics YOLO工具箱

1
pip install -U ultralytics

上述命令下载安装包括

  • YOLO算法的调用代码 包含了 YOLOv5, YOLOv8, YOLOv11 等不同版本模型的定义、训练、验证和推理的全部 Python 代码。
  • 相关依赖如Pytorch NumPy OpenCV等
  • CLI工具 以支持在终端直接调用yolo命令

使用Ultralytics YOLO几乎不需要编写代码

训练项目形如:

1
2
3
4
5
6
7
8
my_dataset/
├── images/
│ ├── train/ # 训练图片
│ └── val/ # 验证图片
├── labels/
│ ├── train/ # 训练标签
│ └── val/ # 验证标签
└── data.yaml # 数据配置文件

data.yaml配置:

1
2
3
4
train: my_dataset/images/train
val: my_dataset/images/val
nc: 2 # 类别数量
names: ['cat', 'dog'] # 类别名称

yolo命令

1
2
# 训练
yolo train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640

其中yolov8n.pt是预训练模型的标志符 也可以是路径;data.yaml传入数据集 100轮训练 图片尺寸640*640

训练完成生成.pt文件 如best.pt

1
2
3
4
# 验证
yolo val model=runs/detect/train/weights/best.pt data=my_dataset.yaml
#推理
yolo predict model=best.pt source=path/to/your/image.jpg

python api:

1
2
3
from ultralytics import YOLO
model = YOLO('best.pt') # 加载模型
results = model('bus.jpg') # 进行推理

实践:钢铁缺陷检测

PaddlePaddle竞赛

项目目录

1

EDA数据分析

在钢铁缺陷检测实践中 需识别图像中是否存在龟裂、夹杂、点蚀、划痕、斑块、氧化铁皮压入6种缺陷,在导入模型训练前,对样本标记结果进行如下分析

  1. 类别分布
  2. 标注框尺寸分布
  3. 缺陷面积箱线图
  4. 类别不均衡程度

根据数据分析结果做特定的数据增强操作

数据增强

  • Pillow 做图像旋转、翻转
  • 亮度 对比度调整
  • 噪声(NumPy)
  • Albumentations

YOLO训练中自动开启的数据增强:

  • Mosaic
  • MixUp
  • 几何变换
  • 色彩变换

一款神经网络音频编解码器 可用于影视角色台词二创

Autodl 部署GPT-sovits

📋 任务概述

目标:使用原音频训练声音模型,生成新台词语音

原台词

我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了,现在好不容易有了便宜药,你们非说他是假药,那药假不假,我们能不知道吗?那药才买五百块钱一瓶,药贩子根本没赚钱,谁家能不遇上个病人,你能保证你这一辈子不生病吗,啊?你们把他抓走了,我们都得等死,我不想死,我想活着

新台词

我失业了三年,四万块钱一个月的房贷我扛了三年,房子扛没了,家人被我啃垮了,现在好不容易有了openclaw,你们非说他没用,龙虾有没有用,我们能不知道吗?那软件是开源的,原作者根本没赚钱,谁家能保证自己不失业,你能保证你这一辈子不被AI取代吗,啊?你们把AI泡沫戳破了,我们都得等死,我不想死,我想活着


第一部分:租用AutoDL实例

AutoDL 4090 社区镜像关键字RVC-Boss/GPT-sovits

1.4 获取连接信息

实例启动后,在AutoDL控制台获取:

  • SSH连接命令(如:ssh -p 12345 root@region-x.autodl.pro
  • 密码

第二部分:环境配置

2.1 连接实例

1
2
3
# 使用AutoDL提供的SSH命令连接
ssh -p <端口> root@<地址>
# 输入密码

2.2 安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 更新系统
apt update && apt upgrade -y

# 安装ffmpeg和git
apt install -y ffmpeg git

# 创建工作目录
mkdir -p /root/workspace
cd /root/workspace

# 克隆GPT-SoVITS仓库(使用国内镜像加速)
git clone https://gitee.com/RVC-Boss/GPT-SoVITS.git
# 或使用GitHub
# git clone https://github.com/RVC-Boss/GPT-SoVITS.git

cd GPT-SoVITS

2.3 使用Conda环境

1
2
3
4
5
6
7
8
9
10
11
12
13
# 检查conda是否存在
which conda

# 创建Python环境
conda create -n GPTSoVits python=3.10 -y
conda activate GPTSoVits

若需conda init:

```bash
conda init bash
source ~/.bashrc
conda activate GPTSoVits

安装PyTorch(根据CUDA版本选择)

查看CUDA版本

nvidia-smi | grep “CUDA Version”

显示

1
| NVIDIA-SMI 580.105.08             Driver Version: 580.105.08     CUDA Version: 13.0     |

查看pytorch
1
python -c "import torch; print(torch.__version__)"

1
2.10.0+cu128

安装项目依赖

1
2
cd /root/workspace/GPT-SoVITS
bash install.sh --device CU128 --source ModelScope

torch版本未指定问题

1
2
3
4
5
6
# 卸载可能冲突的包
pip uninstall torch torchvision torchaudio triton
# 清理 pip 缓存(可选)
pip cache purge
# 用正确命令重装(以 cu121 为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

2.4 下载预训练模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 方法1:使用安装脚本(推荐,自动下载所有必需模型)


# 方法2:手动下载(如果脚本失败)
# 创建模型目录
mkdir -p GPT_SoVITS/pretrained_models
mkdir -p GPT_SoVITS/text
mkdir -p tools/UVR5/UVR5_weights

# 使用modelscope下载(国内镜像) 因为使用的python3.8 需要安装旧版本modelscope
pip install modelscope=1.11.0

modelscope download iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch

mv ~/.cache/modelscope/hub/iic/* ~/GPT-SoVITS/tools/asr/models

第三部分:准备训练数据

3.1 上传音频文件

方法1:使用AutoDL文件管理器(推荐)

  1. 在AutoDL控制台打开”文件管理”
  2. 创建目录 /root/workspace/audio/
  3. 上传音频文件 output.wav

方法2:使用SCP上传

1
2
# 在本地电脑执行
scp -P <端口> output.wav root@<地址>:/root/workspace/audio/

方法3:使用rclone或其他工具

1
# 如果音频在网盘,可以使用rclone下载

3.2 音频要求

  • 格式:WAV(推荐)、MP3、FLAC
  • 采样率:建议16kHz以上,24kHz最佳
  • 声道:单声道
  • 时长:建议1-5分钟的清晰人声
  • 质量:无背景音乐、无噪音、无混响

3.3 音频预处理(可选)

如果音频有背景音乐或噪音,需要先处理:

1
2
3
4
5
6
7
8
cd /root/workspace/GPT-SoVITS

# 启动WebUI
python webui.py zh_CN

# 浏览器访问 http://<实例IP>:9874
# 进入 "0a-UVR5人声伴奏分离&去混响去延迟工具"
# 上传音频,选择模型,点击"分离"

第四部分:训练模型

4.1 方案A:快速推理(零样本,无需训练)

适合快速测试,效果可能不如微调:

1
2
3
4
5
6
7
cd /root/workspace/GPT-SoVITS
python webui.py

# 浏览器访问 http://<实例IP>:9874
# 1. 在"请上传参考音频"处上传音频文件
# 2. 在"输入目标文本"处输入新台词
# 3. 点击"生成"按钮

4.2 方案B:微调训练(推荐,效果更好)

步骤1:配置AutoDL端口映射

  1. 在AutoDL控制台 → 自定义服务 → 开启端口映射
  2. 添加端口 9874(WebUI默认端口)
  3. 获取访问链接
1
ssh -p 19612 -L 9874:localhost:9874 root@connect.bjb2.seetacloud.com

步骤2:启动WebUI

1
2
3
4
5
6
7
8
cd /root/workspace/GPT-SoVITS
conda activate GPTSoVits

# 启动WebUI(监听所有端口)
python webui.py --listen 0.0.0.0

# 或指定端口
python webui.py --listen 0.0.0.0 --port 9874

package issues

1
2
pip install opencc==1.1.6
pip install torchcodec

use pytorch 2.8

1
2
pip uninstall torch torchaudio torchvision torchcodec -y
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0

步骤3:使用WebUI训练

  1. 打开WebUI:浏览器访问端口映射地址

  2. 音频切分(如果音频较长):

    • 进入 0b-音频切片工具
    • 上传音频,设置切片参数(建议每段10-15秒)
    • 点击”切分”
  3. 语音识别

    • 进入 0c-中文ASR工具
    • 选择切分后的音频目录
    • 点击”识别”,生成文本标注
  4. 文本校对

    • 进入 0d-文本校对工具
    • 校对识别结果,确保文本与音频内容一致
    • 保存标注文件
  5. 训练集格式化

    • 进入 1A-训练集格式化工具
    • 选择处理好的音频和标注文件
    • 点击”格式化”,生成训练数据
  6. 微调训练

    • 进入 1B-微调训练
    • 设置训练参数:
      • SoVITS训练轮数:建议10-20轮
      • GPT训练轮数:建议10-20轮
      • 批量大小:根据显存调整(RTX 4090可用8-12)
      • 学习率:使用默认值
    • 点击”开始训练”
    • 等待训练完成(约30分钟-1小时)
  7. 推理测试

    • 训练完成后,回到主页
    • 选择训练好的模型
    • 输入新台词,点击”生成”
    • 下载生成的音频

第五部分:命令行训练(高级用户)

如果WebUI不可用,可以使用命令行:

5.1 准备训练数据

1
2
3
4
5
6
7
8
9
10
# 创建训练数据目录
mkdir -p /root/workspace/GPT-SoVITS/Data/your_speaker_name

# 复制音频文件
cp /root/workspace/audio/output.wav /root/workspace/GPT-SoVITS/Data/your_speaker_name/

# 创建标注文件
cat > /root/workspace/GPT-SoVITS/Data/your_speaker_name/esd.list << 'EOF'
/root/workspace/GPT-SoVITS/Data/your_speaker_name/output.wav|your_speaker_name|我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了,现在好不容易有了便宜药,你们非说他是假药,那药假不假,我们能不知道吗?那药才买五百块钱一瓶,药贩子根本没赚钱,谁家能不遇上个病人,你能保证你这一辈子不生病吗,啊?你们把他抓走了,我们都得等死,我不想死,我想活着
EOF

5.2 处理训练数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cd /root/workspace/GPT-SoVITS
conda activate GPTSoVits

# 生成文本特征
python prepare_datasets/1-get-text.py \
--inp_text Data/your_speaker_name/esd.list \
--inp_wav_dir Data/your_speaker_name \
--opt_dir Data/your_speaker_name/processed

# 生成hubert特征
python prepare_datasets/2-get-hubert.py \
--inp_text Data/your_speaker_name/processed/esd.list \
--inp_wav_dir Data/your_speaker_name \
--opt_dir Data/your_speaker_name/processed

# 生成语义特征
python prepare_datasets/3-get-semantic.py \
--inp_text Data/your_speaker_name/processed/esd.list \
--inp_wav_dir Data/your_speaker_name \
--opt_dir Data/your_speaker_name/processed

5.3 训练SoVITS模型

1
2
3
4
5
6
7
8
9
10
11
# 修改配置文件
cp configs/s2.json configs/s2_custom.json

# 编辑配置文件,设置训练参数
# 主要修改:
# - train_dataset_path: 训练数据路径
# - batch_size: 批量大小(根据显存调整)
# - total_epoch: 训练轮数(建议10-20)

# 开始训练
python s2_train.py --config configs/s2_custom.json

5.4 训练GPT模型

1
2
3
4
5
# 修改配置文件
cp configs/s1.json configs/s1_custom.json

# 开始训练
python s1_train.py --config configs/s1_custom.json

5.5 推理生成

1
2
3
4
5
6
7
8
# 使用训练好的模型生成语音
python inference.py \
--s2_model_path logs/s2/your_model.pth \
--s1_model_path logs/s1/your_model.ckpt \
--ref_audio /root/workspace/audio/output.wav \
--ref_text "我病了三年,四万块钱一瓶的正版药我吃了三年" \
--target_text "我失业了三年,四万块钱一个月的房贷我扛了三年" \
--output_path output.wav

第六部分:使用API调用

6.1 启动API服务

1
2
3
4
5
6
7
8
cd /root/workspace/GPT-SoVITS
conda activate GPTSoVits

# 启动API服务
python api_v2.py --listen 0.0.0.0 --port 9880

# 后台运行
nohup python api_v2.py --listen 0.0.0.0 --port 9880 > api.log 2>&1 &

6.2 API调用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import requests

url = "http://<实例IP>:9880/tts"

data = {
"text": "我失业了三年,四万块钱一个月的房贷我扛了三年,房子扛没了,家人被我啃垮了,现在好不容易有了openclaw,你们非说他没用,龙虾有没有用,我们能不知道吗?那软件是开源的,原作者根本没赚钱,谁家能保证自己不失业,你能保证你这一辈子不被AI取代吗,啊?你们把AI泡沫戳破了,我们都得等死,我不想死,我想活着",
"text_lang": "zh",
"ref_audio_path": "/root/workspace/audio/output.wav",
"prompt_text": "我病了三年,四万块钱一瓶的正版药我吃了三年,房子吃没了,家人被我吃垮了",
"prompt_lang": "zh",
"top_k": 5,
"top_p": 1.0,
"temperature": 1.0,
"text_split_method": "cut5",
"batch_size": 1,
"speed_factor": 1.0,
"split_bucket": True
}

response = requests.post(url, json=data)
with open("output.wav", "wb") as f:
f.write(response.content)

6.3 curl调用示例

1
2
3
4
5
6
7
8
9
10
curl -X POST "http://<实例IP>:9880/tts" \
-H "Content-Type: application/json" \
-d '{
"text": "我失业了三年,四万块钱一个月的房贷我扛了三年",
"text_lang": "zh",
"ref_audio_path": "/root/workspace/audio/output.wav",
"prompt_text": "我病了三年,四万块钱一瓶的正版药我吃了三年",
"prompt_lang": "zh"
}' \
--output output.wav

第七部分:下载生成的音频

7.1 使用AutoDL文件管理器

  1. 在AutoDL控制台打开”文件管理”
  2. 找到生成的音频文件
  3. 点击下载

7.2 使用SCP下载

1
2
# 在本地电脑执行
scp -P <端口> root@<地址>:/root/workspace/GPT-SoVITS/output.wav ./

7.3 使用rclone同步

1
2
3
4
5
# 在云主机上配置rclone
rclone config

# 同步到网盘
rclone copy /root/workspace/GPT-SoVITS/output.wav remote:backup/

第八部分:常见问题

Q1:显存不足怎么办?

1
2
3
4
5
6
7
8
# 减小batch_size
# 修改配置文件中的batch_size参数
# RTX 3090/4090: batch_size = 8-12
# RTX 3080: batch_size = 4-6
# RTX 2080: batch_size = 2-4

# 或使用fp16训练
export CUDA_LAUNCH_BLOCKING=1

Q2:训练速度慢?

  • 检查是否正确使用GPU:nvidia-smi
  • 确认CUDA版本与PyTorch版本匹配
  • 使用更快的GPU(如RTX 4090)

Q3:生成的语音效果不好?

  • 增加训练轮数(20-50轮)
  • 使用更高质量的训练音频
  • 确保训练音频与目标文本风格一致
  • 调整推理参数(top_k, top_p, temperature)

Q4:WebUI无法访问?

  • 检查端口映射是否正确配置
  • 确认防火墙设置
  • 使用 --listen 0.0.0.0 参数

Q5:模型下载失败?

  • 使用国内镜像(HF-Mirror, ModelScope)
  • 手动下载模型文件

第九部分:费用估算

AutoDL计费参考

GPU型号 参考价格(元/小时) 预计训练时间 预计费用
RTX 4090 约 3-4 元 30分钟-1小时 约 2-4 元
RTX 3090 约 2-3 元 1-2小时 约 3-6 元
A100 约 10-15 元 20-40分钟 约 5-10 元

建议:选择RTX 4090,性价比最高,总费用约5元以内


第十部分:完整操作流程总结

快速版(零样本推理,无需训练)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1. 连接实例
ssh -p <端口> root@<地址>

# 2. 克隆仓库
git clone https://gitee.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS

# 3. 安装依赖
conda create -n GPTSoVits python=3.10 -y
conda activate GPTSoVits
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt

# 4. 下载模型
bash install.sh --device CU118 --source HF-Mirror

# 5. 上传音频到 /root/workspace/audio/output.wav

# 6. 启动WebUI
python webui.py --listen 0.0.0.0

# 7. 浏览器访问,上传音频,输入新台词,生成语音

完整版(微调训练,效果更好)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1-4步同上

# 5. 启动WebUI
python webui.py --listen 0.0.0.0

# 6. 使用WebUI工具:
# - 0b: 音频切片
# - 0c: 语音识别
# - 0d: 文本校对
# - 1A: 训练集格式化
# - 1B: 微调训练

# 7. 训练完成后,使用新模型生成语音

# 8. 下载生成的音频

2025最新GPT-SoVITS教程

总结 该项目对python pytorch版本要求严格 cuda向下兼容 使用cu124/cu128无差