Files
dekun 0cce6cda7c Fix CUDA OOM by mutually unloading Whisper and ChatTTS on 8GB GPU.
Release GPU memory before TTS/ASR switches, lower TTS token limits, and set PYTORCH_CUDA_ALLOC_CONF in PM2.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 17:03:37 +08:00

24 KiB
Raw Permalink Blame History

Trading Studio 部署指南 (DEPLOY.md)

本文档面向 Ubuntu 物理服务器(搭载 RTX 3060 Ti,已锁定 120W 功耗墙)的完整环境配置与 PM2 常驻部署流程。适用于首次安装或迁移重装场景。

标准安装路径: /opt/Trading_Studioroot 用户)
Git 仓库: https://git.bz121.com/dekun/Trading_Studio.git


目录

  1. 一键部署(推荐) — 含 模型预下载服务器更新手机麦克风
  2. 硬件与系统前提
  3. 3060 Ti 120W 功耗墙配置
  4. NVIDIA 驱动与 CUDA
  5. Python 虚拟环境
  6. PyTorch CUDA 12.1 安装
  7. 项目依赖安装
  8. 远程 Ollama 节点配置
  9. 首次运行与验证
  10. PM2 进程守护
  11. 迁移与故障排查

0. 一键部署(推荐)

项目内置 deploy.sh,以 root 用户将 Trading Studio 部署到 /opt/Trading_Studio,并自动完成依赖安装、虚拟环境、PyTorch CUDA、PM2 常驻与开机自启。

0.1 前提条件

在运行脚本前,请确保服务器已满足:

项目 说明
系统 Ubuntu 22.04 / 24.04 LTS
用户 rootsudo -i 切换)
GPU 驱动 nvidia-smi 可正常输出
网络 可访问 git.bz121.com 拉取代码
Ollama 局域网 192.168.8.64:11434 可达(润色功能)

Git 认证:git clone 需要登录,请先在 root 下配置 HTTPS 凭据或 SSH 密钥,再执行部署脚本。

服务器本地配置(Ollama IP 等): 不要直接改 config.py,请使用 .env 文件:

cp .env.example .env
nano .env   # 修改 OLLAMA_HOST=你的局域网IP
pm2 restart trading_studio

git pull 报本地修改冲突? 多半是 Windows CRLF 换行符幽灵改动(内容其实没变)。执行:

bash server-update.sh

或手动:

git fetch origin && git reset --hard origin/main
pm2 restart trading_studio

切勿 git stash popOllama 地址请写在 .env 里。

0.2 首次一键部署

# 切换 root
sudo -i

# 方式 A:从 Git 克隆后执行(推荐)
git clone https://git.bz121.com/dekun/Trading_Studio.git /opt/Trading_Studio
cd /opt/Trading_Studio
chmod +x deploy.sh
bash deploy.sh

# 方式 B:若已有本地代码目录,直接在该目录执行
cd /opt/Trading_Studio
chmod +x deploy.sh
bash deploy.sh

若报错 $'\r': command not found 说明脚本含 Windows 换行符,先执行 sed -i 's/\r$//' deploy.sh 再重试,或 git pull 拉取已修复版本。

脚本自动执行以下步骤:

  1. 安装系统依赖(python3、ffmpeg、libsndfile 等)
  2. 安装 Node.js 20 + PM2
  3. 克隆/更新代码到 /opt/Trading_Studio
  4. 创建 venv/ 并安装 PyTorch cu121 + requirements.txt
  5. 创建 logs/uploads/outputs/ 目录
  6. 设置 GPU 120W 功耗墙(若 nvidia-smi 可用)
  7. 放行防火墙端口 5683(若 ufw 已启用)
  8. pm2 start ecosystem.config.js 并配置开机自启

部署成功后访问:

http://<服务器局域网IP>:5683

重要:首次部署后必须预下载 AI 模型Whisper + ChatTTS)。内网服务器无法访问 HuggingFace / GitHub 时,不执行此步会在 Web UI 报 Network is unreachableRead timed out。详见 0.8 AI 模型预下载

0.3 脚本命令速查

cd /opt/Trading_Studio

bash deploy.sh              # 首次完整部署 + PM2 启动
bash deploy.sh update       # git pull + 更新依赖 + PM2 重启
bash deploy.sh restart      # 仅重启 PM2
bash deploy.sh stop         # 停止 PM2
bash deploy.sh status       # 查看 PM2 / GPU / 端口状态
bash deploy.sh logs         # 查看 PM2 最近 80 行日志
bash deploy.sh help         # 显示帮助

0.4 日常更新流程

代码推送到 Git 后,在服务器上执行:

sudo -i
cd /opt/Trading_Studio
bash deploy.sh update

git pull 报本地修改冲突? 新版 deploy.sh 会自动 stash 后同步;若仍失败可手动: git fetch origin && git reset --hard origin/main

0.4.2 代码推送后的服务器更新(推荐)

本地开发机 git push 到远端后,在 Ubuntu 服务器上同步并重启:

cd /opt/Trading_Studio
bash server-update.sh

server-update.sh 会执行:

  1. git fetch origin main
  2. git reset --hard origin/main(覆盖 CRLF 等幽灵改动;Ollama 地址请写在 .env,勿改 config.py
  3. pm2 restart trading_studio

若本次更新涉及 Whisper / ChatTTS 离线加载(首次部署或新增模型脚本),还需预下载模型:

cd /opt/Trading_Studio
bash server-update.sh
bash scripts/download_all_models.sh
pm2 restart trading_studio
脚本 作用
bash server-update.sh 强制与远端 main 同步 + PM2 重启
bash scripts/download_all_models.sh 一次性下载 Whisper (small) + ChatTTS
bash scripts/download_whisper_models.sh small 仅下载 Whisper
bash scripts/download_chattts_models.sh 仅下载 ChatTTS

验证 Whisper 是否就绪:

ls -lh /opt/Trading_Studio/models/whisper/small/model.bin

应看到约 500MBmodel.bin 文件。

0.4.1 pip / PyTorch 下载超时

PyTorch + triton 约 2-3GB,国内网络默认启用清华镜像,并延长超时到 600 秒:

# 默认已开启国内镜像,若仍慢可加大超时
USE_CN_MIRROR=1 PIP_TIMEOUT=900 bash deploy.sh deps

# 仅补装依赖(不拉代码、不启 PM2)
bash deploy.sh deps

# PyTorch 已手动装好时跳过
SKIP_PYTORCH=1 bash deploy.sh deps

下载过程中出现 Retrying... Read timed out 属于正常重试,并非卡死,请耐心等待 10-30 分钟。

0.7 PWA 安装 App(需 HTTPS

访问方式 浏览器行为
http://内网IP:5683 只能「快捷方式 / 添加到主屏幕」
https://域名(经云服务器反代) Chrome/Edge 可 「安装 Trading Studio」

内网 HTTP 直连无法一键安装 App,这是浏览器 PWA 安全策略,不是程序缺陷。

反向代理不在本仓库代码中配置。 若你使用 云服务器 + NPS 内网穿透(或其它反代方案),请阅读独立教程:

👉 PWA_NPS.md — 云服务器 HTTPS 反代 + NPS 穿透到 5683 的完整步骤

要点摘要:

  1. 内网物理机 PM2 监听 5683 即可
  2. NPS 将 127.0.0.1:5683 穿透到云服务器
  3. 云服务器用已有 Nginx/面板配置 HTTPS 域名 反代到 NPS 端口
  4. 反代须透传 WebSocketGradio 必需)
  5. 用户通过 https://你的域名 访问后再安装 App

0.8 AI 模型预下载(内网服务器必做)

Trading Studio 的 Whisper 语音识别ChatTTS 音色合成 均需在服务器本地存放模型文件。
内网物理机通常无法访问 huggingface.co / github.com,若未预下载,Web UI 会出现:

模块 典型报错
Whisper Network is unreachable / ConnectError
ChatTTS Read timed out / github.com 连接失败

推荐:一键下载全部模型

cd /opt/Trading_Studio
bash scripts/download_all_models.sh
pm2 restart trading_studio

分步下载(可选)

# Whisper small(约 500MB,识别默认模型)
bash scripts/download_whisper_models.sh small

# ChatTTS(约 1–2GB,音色锁定与合成必需)
bash scripts/download_chattts_models.sh

pm2 restart trading_studio

模型落盘路径

模型 目录 关键文件
Whisper small /opt/Trading_Studio/models/whisper/small/ model.bin
ChatTTS /opt/Trading_Studio/models/ChatTTS/ asset/
HF 缓存 /opt/Trading_Studio/models/hf_cache/ 下载中间缓存

.env 可选配置(复制 .env.example.env):

HF_ENDPOINT=https://hf-mirror.com
WHISPER_MODEL_DIR=/opt/Trading_Studio/models/whisper
WHISPER_MODEL_SIZE=small
CHATTTS_MODEL_DIR=/opt/Trading_Studio/models/ChatTTS

国内服务器建议保留 HF_ENDPOINT=https://hf-mirror.com(脚本与 whisper_service.py 均会读取)。

0.9 手机「找不到麦克风」

通过 http://192.168.x.x:5683 内网 HTTP 访问时,手机浏览器会显示 「找不到麦克风」「检测不到麦克风」
这是浏览器安全策略:getUserMedia(麦克风)仅在 HTTPS 或 localhost 下可用,不是程序 bug。

访问方式 电脑录音 手机录音
http://内网IP:5683 可能可用 不可用
https://域名NPS + 云反代)

解决办法(任选其一):

  1. PWA_NPS.md 配置 NPS 穿透 + 云服务器 HTTPS 域名,用手机访问 https://你的域名
  2. 在 HTTP 内网环境下,使用音频区域的 「上传」 标签,上传手机「语音备忘录」导出的 .m4a / .wav(与现场录音效果相同)

Whisper 离线模型就绪后,上传音频文件 可正常识别;麦克风实时录音需 HTTPS。


0.5 PM2 运维(root 环境)

pm2 status                          # 进程状态
pm2 logs trading_studio             # 实时日志
pm2 restart trading_studio          # 手动重启
pm2 monit                           # 资源监控

# 应用日志
tail -f /opt/Trading_Studio/trading_studio.log
tail -f /opt/Trading_Studio/logs/pm2-out.log

0.6 目录布局(/opt 标准路径)

/opt/Trading_Studio/
├── deploy.sh              # 一键部署脚本
├── server-update.sh       # 强制同步远端 + PM2 重启
├── app.py                 # Gradio 主入口
├── venv/                  # Python 虚拟环境
├── scripts/
│   ├── download_all_models.sh      # Whisper + ChatTTS 一键下载
│   ├── download_whisper_models.sh  # Whisper 预下载(HF 镜像)
│   └── download_chattts_models.sh  # ChatTTS 预下载(HF 镜像)
├── models/                # AI 模型(预下载脚本写入,不入 Git)
│   ├── whisper/small/     # Faster-Whisper(含 model.bin
│   ├── ChatTTS/           # ChatTTS 权重
│   └── hf_cache/          # HuggingFace 缓存
├── logs/                  # PM2 日志
├── uploads/               # 上传临时文件
├── outputs/               # 合成 wav 输出
├── .env                   # 服务器本地配置(Ollama IP 等,不入 Git
├── speaker_emb.pt         # 音色文件(Web UI 生成,需手动备份)
└── trading_studio.log     # 应用日志

1. 硬件与系统前提

项目 要求
GPU NVIDIA RTX 3060 Ti 8GB
功耗墙 120W(推荐锁定,见下文)
系统 Ubuntu 22.04 / 24.04 LTS
内存 ≥ 16GB
磁盘 ≥ 30GB 可用(含模型缓存)
网络 局域网可访问 192.168.8.64:11434
# 基础工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget build-essential \
    python3 python3-venv python3-dev \
    ffmpeg libsndfile1 portaudio19-dev

python3-venv 包名报错,使用 python3-venv


2. 3060 Ti 120W 功耗墙配置

锁定 GPU 功耗有助于稳定 7×24 运行、降低散热压力,避免 Whisper + ChatTTS 并发时触发功耗波动。

2.1 安装 nvidia-smi 功耗管理工具

驱动安装后自带 nvidia-smi。确认 GPU 可见:

nvidia-smi

2.2 临时设置 120W 功耗上限

# 查看支持的功耗范围
nvidia-smi -q -d POWER | grep -A3 "Power Limit"

# 设置最大功耗为 120W(需 root)
sudo nvidia-smi -pl 120

2.3 开机持久化(推荐)

创建 systemd 服务,每次启动自动应用:

sudo tee /etc/systemd/system/nvidia-powerlimit.service << 'EOF'
[Unit]
Description=Set NVIDIA GPU Power Limit to 120W
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi -pl 120
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable nvidia-powerlimit.service
sudo systemctl start nvidia-powerlimit.service

# 验证
nvidia-smi --query-gpu=power.limit --format=csv

3. NVIDIA 驱动与 CUDA

3.1 安装驱动(推荐 535+ 或 550+)

# Ubuntu 自动安装推荐驱动
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
# 或指定版本: sudo apt install nvidia-driver-550

sudo reboot

重启后验证:

nvidia-smi
nvcc --version   # 若未安装 nvcc 不影响 PyTorch,可选

3.2 cuDNNFaster-Whisper / PyTorch 需要)

PyTorch cu121 wheel 通常自带运行时库。若 Whisper 报 cuDNN 错误:

# 参考 NVIDIA 官方文档安装 cuDNN for CUDA 12.x
# https://developer.nvidia.com/cudnn

4. Python 虚拟环境

# 克隆项目
cd /opt
git clone https://git.bz121.com/dekun/Trading_Studio.git
cd Trading_Studio

# 创建虚拟环境(必须使用 venv,与 PM2 interpreter 路径一致)
python3 -m venv venv

# 激活
source venv/bin/activate

# 升级 pip
pip install --upgrade pip setuptools wheel

重要: PM2 配置中 interpreter 指向 ./venv/bin/python,请确保在项目根目录创建 venv/


5. PyTorch CUDA 12.1 安装

必须先于其他 GPU 依赖安装,避免 pip 拉取 CPU 版 torch。

source venv/bin/activate

pip install torch torchvision torchaudio \
    --index-url https://download.pytorch.org/whl/cu121

验证 CUDA 可用:

python -c "
import torch
print('PyTorch:', torch.__version__)
print('CUDA available:', torch.cuda.is_available())
print('GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')
"

期望输出类似:

PyTorch: 2.x.x+cu121
CUDA available: True
GPU: NVIDIA GeForce RTX 3060 Ti

6. 项目依赖安装

source venv/bin/activate
cd /opt/Trading_Studio

# 安装其余依赖
pip install -r requirements.txt

6.1 Faster-Whisper(必须预下载)

requirements.txt 安装。whisper_service.py 优先从本地目录加载,未预下载时会尝试在线拉取 HuggingFace 模型。

内网服务器无法访问外网时会报:

Whisper 模型加载失败: Network is unreachable

处理:0.8 AI 模型预下载,或执行:

bash scripts/download_whisper_models.sh small
pm2 restart trading_studio

本地路径:/opt/Trading_Studio/models/whisper/small/model.bin(约 500MB)。

可选环境变量(.env):WHISPER_MODEL_DIRWHISPER_MODEL_SIZEHF_ENDPOINT

6.2 ChatTTS(必须预下载,勿依赖 GitHub)

从 GitHub 源码安装 pip 包(已在 requirements.txt 中指定):

pip install ChatTTS @ git+https://github.com/2noise/ChatTTS.git

重要: 默认 chat.load() 会访问 github.com 下载 asset,国内/内网服务器常报 Read timed out
tts_service.py 已支持从 models/ChatTTS 离线加载,部署后必须预下载:

bash scripts/download_chattts_models.sh
pm2 restart trading_studio

模型保存至 /opt/Trading_Studio/models/ChatTTS(约 12GB,不入 Git)。
下载完成后再在 Web UI 点击「锁定音色」。

一键下载 Whisper + ChatTTSbash scripts/download_all_models.sh

6.3 Gradio

pip install gradio>=4.44.0

7. 远程 Ollama 节点配置

Trading Studio 的 LLM 润色模块连接局域网 Ollama,不在本机运行大模型

配置项
地址 http://192.168.8.64:11434
API POST /api/chat
模型 huihui_ai/gemma-4-abliterated:e4b
流式 stream: false

7.1 在 Ollama 节点(192.168.8.64)上

# 安装 Ollama(若未安装)
curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型
ollama pull huihui_ai/gemma-4-abliterated:e4b

# 允许局域网访问(编辑 systemd 或环境变量)
sudo systemctl edit ollama

添加:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollama

7.2 在本机(Trading Studio 服务器)验证

curl http://192.168.8.64:11434/api/tags

curl http://192.168.8.64:11434/api/chat -d '{
  "model": "huihui_ai/gemma-4-abliterated:e4b",
  "messages": [{"role": "user", "content": "ping"}],
  "stream": false
}'

8. 首次运行与验证

source venv/bin/activate
cd /opt/Trading_Studio

# 前台启动(调试)
python app.py

浏览器访问:

http://<本机局域网IP>:5683

8.1 验证清单

  • models/whisper/small/model.bin 存在(bash scripts/download_whisper_models.sh small
  • models/ChatTTS/ 已预下载(bash scripts/download_chattts_models.sh
  • 页面加载,Ollama 状态显示在线
  • 上传 10-30s 参考人声 → 音色锁定成功,生成 speaker_emb.pt
  • 上传复盘录音 → Whisper 识别出中文文本(无需外网)
  • 点击润色 → 返回 Gemma4 处理后的文稿
  • 点击合成 → outputs/ 下生成 24kHz wav

8.2 日志位置

  • 应用日志:trading_studio.log(项目根目录)
  • PM2 日志:logs/pm2-out.loglogs/pm2-error.log
mkdir -p logs

9. PM2 进程守护

Trading Studio 原生支持 PM2 常驻管理,确保 Gradio 服务崩溃后自动重启、开机自启。

9.1 安装 Node.js 与 PM2

# 安装 Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# 全局安装 PM2
sudo npm install -g pm2

9.2 方式 A:使用 ecosystem.config.js(推荐)

项目已内置 ecosystem.config.js

module.exports = {
  apps: [{
    name: "trading_studio",
    script: "app.py",
    interpreter: "./venv/bin/python",
    cwd: __dirname,
    instances: 1,
    autorestart: true,
    max_memory_restart: "6G",
    env: {
      PYTHONUNBUFFERED: "1",
      CUDA_VISIBLE_DEVICES: "0",
    },
  }],
};

启动:

cd /opt/Trading_Studio
mkdir -p logs

pm2 start ecosystem.config.js
pm2 status
pm2 logs trading_studio --lines 50

推荐: 直接使用 bash deploy.sh 一键完成上述步骤,见 第 0 节

9.3 方式 B:直接命令行

cd /opt/Trading_Studio

pm2 start app.py \
    --name "trading_studio" \
    --interpreter ./venv/bin/python

pm2 save

9.4 开机自启

pm2 startup
# 按提示执行输出的 sudo 命令

pm2 save

9.5 常用运维命令

pm2 restart trading_studio    # 重启(改代码后)
pm2 stop trading_studio       # 停止
pm2 delete trading_studio     # 移除
pm2 monit                     # 实时监控 CPU/内存

9.6 更新代码后重新部署

cd /opt/Trading_Studio
bash deploy.sh update

或手动:

cd /opt/Trading_Studio
git pull
source venv/bin/activate
pip install -r requirements.txt   # 若有新依赖
pm2 restart trading_studio

10. 迁移与故障排查

10.1 迁移到新机器

  1. 备份 /opt/Trading_Studio/speaker_emb.pt(音色文件,不入 Git
  2. 新机器执行 bash deploy.sh 一键部署
  3. speaker_emb.pt 复制回 /opt/Trading_Studio/
  4. bash deploy.sh restart

10.2 CUDA / 显存问题

# 查看显存占用
nvidia-smi

# 若 OOM,确保无其他 GPU 进程
fuser -v /dev/nvidia*

Whisper 与 ChatTTS 不能同时常驻 8GB 显存(会 CUDA OOM)。应用已自动互斥卸载:

  • 识别前卸载 ChatTTS
  • 合成 / 锁定音色前卸载 Whisper

若仍 OOM

pm2 restart trading_studio
nvidia-smi   # 确认无其他占 GPU 进程

.env 调低合成峰值:

TTS_MAX_CHARS_PER_CHUNK=150
TTS_MAX_NEW_TOKEN=768

PM2 已配置 PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True 缓解碎片。建议锁定 120W 功耗墙。

10.3 Whisper 模型加载失败

A. Network is unreachable / ConnectError(内网无外网)

原因: 未预下载 Whisper 模型,程序尝试访问 HuggingFace Hub 失败。

处理:

cd /opt/Trading_Studio
bash scripts/download_whisper_models.sh small
ls -lh models/whisper/small/model.bin   # 确认约 500MB
pm2 restart trading_studio

若服务器可访问外网但 HuggingFace 慢,在 .env 中设置 HF_ENDPOINT=https://hf-mirror.com 后重试下载。

B. CUDA / 显存报错

错误: CUDA initialization failed / out of memory

处理:

  1. 重启 PM2 进程释放显存
  2. 确认 compute_type="float16"(已在 config.py 配置)
  3. .env 中降级模型:WHISPER_MODEL_SIZE=base,并执行 bash scripts/download_whisper_models.sh base

10.4 Ollama 超时

连接 Ollama 超时(>60s

处理:

  1. 确认 Ollama 节点模型已预加载:ollama run huihui_ai/gemma-4-abliterated:e4b
  2. 增大 config.pyOLLAMA_TIMEOUT
  3. 检查防火墙:sudo ufw allow from 192.168.8.0/24 to any port 11434(在 Ollama 节点)

10.5 ChatTTS 合成报 Corrupt input data

原因: 音色参数传错。sample_audio_speaker() 的结果应作为 spk_smp,不能同时误传给 spk_embLZMA 解压失败)。旧版 speaker_emb.pt 或未填参考转写时常见。

处理:

rm /opt/Trading_Studio/speaker_emb.pt
pm2 restart trading_studio

在 Web UI「音色锁定」:

  1. 上传 1030 秒干净参考人声
  2. 填写与录音完全一致的「参考音频精确转写」(必填)
  3. 重新点击「锁定音色」后再合成

10.6 ChatTTS 音色文件损坏

rm speaker_emb.pt
# 重新在 Web UI「音色锁定」上传参考人声并填写转写

10.7 端口 5683 被占用

sudo lsof -i :5683
# 或
ss -tlnp | grep 5683

10.8 手机「找不到麦克风」

内网 http://192.168.x.x:5683 下手机无法使用实时录音,属浏览器 HTTPS 安全限制。
完整说明与 NPS 穿透方案见 0.9 手机「找不到麦克风」PWA_NPS.md 第九节。

临时方案: Web UI 音频区域使用 「上传」 导入录音文件,Whisper 识别流程相同。


附录:防火墙(本机 Gradio

若需局域网其他设备访问 Web UI

sudo ufw allow 5683/tcp
sudo ufw reload

访问地址:http://<服务器局域网IP>:5683


附录:config.py / .env 关键配置速查

服务器本地覆盖请用 .envcp .env.example .env),避免 git pull 冲突:

OLLAMA_HOST=192.168.8.64
OLLAMA_PORT=11434
HF_ENDPOINT=https://hf-mirror.com
WHISPER_MODEL_DIR=/opt/Trading_Studio/models/whisper
WHISPER_MODEL_SIZE=small
CHATTTS_MODEL_DIR=/opt/Trading_Studio/models/ChatTTS

config.py 默认值(可被 .env 覆盖):

HOST = "0.0.0.0"
PORT = 5683
WHISPER_MODEL_SIZE = "small"          # .env: WHISPER_MODEL_SIZE
WHISPER_MODEL_DIR = "models/whisper"  # .env: WHISPER_MODEL_DIR
WHISPER_DEVICE = "cuda"
WHISPER_COMPUTE_TYPE = "float16"
CHATTTS_MODEL_DIR = "models/ChatTTS"
HF_ENDPOINT = "https://hf-mirror.com"
SPEAKER_EMB_PATH = "speaker_emb.pt"
TTS_SAMPLE_RATE = 24000

部署完成后,请先在「音色锁定」模块完成首次音色提取,再进行日常复盘配音生产。