Strip Markdown and stage directions before ChatTTS synthesis with chunked long scripts; document model pre-download, server-update, and microphone HTTPS notes. Co-authored-by: Cursor <cursoragent@cursor.com>
8.7 KiB
Trading Studio
本地量化交易复盘 → B 站长视频配音生产流水线
Trading Studio 是一套运行在 Ubuntu 物理服务器(RTX 3060 Ti)上的自动化配音系统,专为数字资产量化交易员设计。通过「盲录碎碎念 → 本地 GPU 识别 → 局域网大模型严厉润色 → 本地 GPU 声音克隆」的闭环,高效产出 B 站反思类长视频配音,辅助交易纪律的自我进化。
Git 仓库: https://git.bz121.com/dekun/Trading_Studio.git
系统定位
| 环节 | 技术栈 | 运行位置 |
|---|---|---|
| 碎碎念录音转写 | Faster-Whisper (CUDA float16) | 本地 3060 Ti |
| 纪律审判式润色 | Gemma4 Abliterated @ Ollama | 局域网 192.168.8.64 |
| 固定音色配音 | ChatTTS (CUDA) | 本地 3060 Ti |
| Web 中控 | Gradio | 端口 5683 |
架构说明
┌─────────────────────────────────────────────────────────────┐
│ Gradio 中控 (app.py:5683) │
├──────────────┬──────────────────────┬───────────────────────┤
│ 音色锁定 │ 音频识别 │ 润色 + 合成 │
│ tts_service │ whisper_service │ llm_service │
│ │ │ tts_service │
└──────┬───────┴──────────┬───────────┴──────────┬────────────┘
│ │ │
▼ ▼ ▼
speaker_emb.pt Faster-Whisper Ollama HTTP
(本地持久化) CUDA / small 192.168.8.64:11434
gemma-4-abliterated
模块解耦
| 文件 | 职责 |
|---|---|
config.py |
Ollama 地址、模型名、Prompt、路径等全局配置 |
whisper_service.py |
Faster-Whisper CUDA 转写 |
llm_service.py |
远程 Ollama HTTP 非流式润色 |
tts_service.py |
ChatTTS 音色提取与 wav 合成 |
app.py |
Gradio 前端与流程编排 |
快速开始
完整环境配置请参阅 DEPLOY.md
一键部署(生产环境推荐)
以 root 用户部署到 /opt/Trading_Studio 并由 PM2 常驻:
sudo -i
git clone https://git.bz121.com/dekun/Trading_Studio.git /opt/Trading_Studio
cd /opt/Trading_Studio
chmod +x deploy.sh
bash deploy.sh
浏览器访问:http://<服务器IP>:5683
首次部署后必做 — 预下载 AI 模型(内网服务器无外网时必需,否则 Whisper 报 Network is unreachable):
cd /opt/Trading_Studio
bash scripts/download_all_models.sh
pm2 restart trading_studio
日常更新(代码已 git push 到远端后,在服务器执行):
cd /opt/Trading_Studio
bash server-update.sh
若更新涉及模型脚本或首次部署,追加:
bash scripts/download_all_models.sh
pm2 restart trading_studio
完整说明见 DEPLOY.md §0.4.2 / §0.8。
手动部署(开发调试)
git clone https://git.bz121.com/dekun/Trading_Studio.git /opt/Trading_Studio
cd /opt/Trading_Studio
python3 -m venv venv
source venv/bin/activate
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
python app.py
使用流程
首次使用:锁定音色
- 进入 「音色锁定」 标签页
- 上传 10-30 秒干净人声参考(你的碎碎念盲录样本)
- (可选)填写参考音频的精确转写,提升 zero-shot 还原度
- 点击 锁定音色 → 生成
speaker_emb.pt
日常生产
方式 A — 分步操作:
- 音频极速识别:上传复盘录音 → Whisper 转写
- Gemma4 纪律审判:一键润色,生成逻辑清晰、语气严厉的反思稿
- ChatTTS 合成:输出 24kHz
.wav成品配音
方式 B — 一键生产:
上传录音后点击 启动全流程,系统自动串联三步。
核心配置(config.py)
| 配置项 | 默认值 |
|---|---|
| 中控端口 | 5683(0.0.0.0 局域网可访问) |
| Ollama 地址 | http://192.168.8.64:11434 |
| 模型名称 | huihui_ai/gemma-4-abliterated:e4b |
| Whisper 模型 | small / CUDA / float16,本地路径 models/whisper/small/ |
| ChatTTS 模型 | models/ChatTTS/(须预下载脚本) |
| HF 镜像 | HF_ENDPOINT=https://hf-mirror.com(.env 可改) |
| 音色文件 | speaker_emb.pt |
| 音频输出 | outputs/ 目录 |
PM2 守护运行
标准路径 /opt/Trading_Studio,root 用户:
# 一键部署 + PM2 启动(推荐)
cd /opt/Trading_Studio && bash deploy.sh
# 或手动 PM2
pm2 start ecosystem.config.js
# 常用管理
pm2 status
pm2 logs trading_studio
bash deploy.sh restart # 重启
bash deploy.sh update # 拉代码 + 更新依赖 + 重启
pm2 save && pm2 startup # 开机自启(deploy.sh 已自动配置)
.gitignore 配置
提交 Git 时请确保忽略以下产物(已在 .gitignore 中预设):
venv/
*.wav
*.pt
*.log
uploads/
outputs/
说明:
venv/— Python 虚拟环境,每台机器独立创建*.wav— 录音与合成音频,体积大且含隐私*.pt— ChatTTS 音色 Embedding 与模型权重*.log— 运行日志
目录结构
Trading_Studio/
├── deploy.sh # 一键部署脚本(/opt + PM2)
├── server-update.sh # 强制同步远端 main + PM2 重启
├── app.py # Gradio 主入口
├── config.py # 全局配置(Ollama 等请用 .env 覆盖)
├── whisper_service.py # Whisper CUDA 识别(优先本地模型)
├── llm_service.py # Ollama 远程润色
├── tts_service.py # ChatTTS 音色与合成(优先本地模型)
├── scripts/
│ ├── download_all_models.sh # Whisper + ChatTTS 一键下载
│ ├── download_whisper_models.sh
│ └── download_chattts_models.sh
├── models/ # AI 模型(预下载,不入 Git)
│ ├── whisper/small/
│ └── ChatTTS/
├── ecosystem.config.js # PM2 守护配置
├── requirements.txt # Python 依赖
├── .env.example # 服务器本地配置模板 → 复制为 .env
├── README.md # 本文件
├── DEPLOY.md # 部署指南(含模型预下载、故障排查)
├── PWA_NPS.md # HTTPS / NPS 穿透 / 手机麦克风教程
├── .gitignore
├── speaker_emb.pt # 音色文件(运行时生成,不入库)
├── uploads/ # 上传临时目录
└── outputs/ # 合成 wav 输出
生产标准路径: /opt/Trading_Studio
硬件要求
- GPU: NVIDIA RTX 3060 Ti(8GB 显存,建议锁定 120W 功耗墙)
- 系统: Ubuntu 22.04 / 24.04 LTS
- CUDA: 12.1+(与 PyTorch cu121 匹配)
- 局域网: 可访问
192.168.8.64:11434的 Ollama 节点
常见问题
Q: Whisper 报 Network is unreachable?
A: 内网服务器无法访问 HuggingFace。执行 bash scripts/download_whisper_models.sh small,确认 models/whisper/small/model.bin 存在后 pm2 restart trading_studio。详见 DEPLOY.md §0.8。
Q: Whisper 报 CUDA 错误?
A: 确认 nvidia-smi 正常,且未同时运行其他占显存任务。Whisper 使用 float16 已针对 8GB 优化。可在 .env 设置 WHISPER_MODEL_SIZE=base 并重新下载。
Q: ChatTTS 报 GitHub / 下载超时?
A: 执行 bash scripts/download_chattts_models.sh,或一键 bash scripts/download_all_models.sh。
Q: Ollama 连接失败?
A: 在服务器上执行 curl http://192.168.8.64:11434/api/tags 验证连通性,确认模型已 ollama pull。Ollama IP 写在 .env 的 OLLAMA_HOST。
Q: 手机显示「找不到麦克风」?
A: http://内网IP:5683 非 HTTPS,浏览器禁用麦克风。请按 PWA_NPS.md 配置 HTTPS 域名,或改用 Web UI 「上传」 录音文件。
Q: TTS 音色不稳定?
A: 重新锁定音色,填写参考音频精确转写,并保持 temperature=0.3 低随机性。
Q: 合成音频为空或噪声?
A: 检查润色文本长度(过短可能导致异常),确认 speaker_emb.pt 存在且有效。
License
Private — 仅供个人量化交易复盘使用。