Move reverse proxy docs to PWA_NPS.md for NPS setup; remove bundled nginx config.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,219 +1,220 @@
|
||||
# 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](./DEPLOY.md)
|
||||
|
||||
### 一键部署(生产环境推荐)
|
||||
|
||||
以 **root** 用户部署到 `/opt/Trading_Studio` 并由 PM2 常驻:
|
||||
|
||||
```bash
|
||||
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`
|
||||
|
||||
日常更新:
|
||||
|
||||
```bash
|
||||
cd /opt/Trading_Studio && bash deploy.sh update
|
||||
```
|
||||
|
||||
### 手动部署(开发调试)
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 使用流程
|
||||
|
||||
### 首次使用:锁定音色
|
||||
|
||||
1. 进入 **「音色锁定」** 标签页
|
||||
2. 上传 10-30 秒干净人声参考(你的碎碎念盲录样本)
|
||||
3. (可选)填写参考音频的精确转写,提升 zero-shot 还原度
|
||||
4. 点击 **锁定音色** → 生成 `speaker_emb.pt`
|
||||
|
||||
### 日常生产
|
||||
|
||||
**方式 A — 分步操作:**
|
||||
|
||||
1. **音频极速识别**:上传复盘录音 → Whisper 转写
|
||||
2. **Gemma4 纪律审判**:一键润色,生成逻辑清晰、语气严厉的反思稿
|
||||
3. **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 |
|
||||
| 音色文件 | `speaker_emb.pt` |
|
||||
| 音频输出 | `outputs/` 目录 |
|
||||
|
||||
---
|
||||
|
||||
## PM2 守护运行
|
||||
|
||||
标准路径 `/opt/Trading_Studio`,root 用户:
|
||||
|
||||
```bash
|
||||
# 一键部署 + 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` 中预设):
|
||||
|
||||
```gitignore
|
||||
venv/
|
||||
*.wav
|
||||
*.pt
|
||||
*.log
|
||||
uploads/
|
||||
outputs/
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
- `venv/` — Python 虚拟环境,每台机器独立创建
|
||||
- `*.wav` — 录音与合成音频,体积大且含隐私
|
||||
- `*.pt` — ChatTTS 音色 Embedding 与模型权重
|
||||
- `*.log` — 运行日志
|
||||
|
||||
---
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
Trading_Studio/
|
||||
├── deploy.sh # 一键部署脚本(/opt + PM2)
|
||||
├── app.py # Gradio 主入口
|
||||
├── config.py # 全局配置
|
||||
├── whisper_service.py # Whisper CUDA 识别
|
||||
├── llm_service.py # Ollama 远程润色
|
||||
├── tts_service.py # ChatTTS 音色与合成
|
||||
├── ecosystem.config.js # PM2 守护配置
|
||||
├── requirements.txt # Python 依赖
|
||||
├── README.md # 本文件
|
||||
├── DEPLOY.md # 部署指南(含一键部署教程)
|
||||
├── .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 报 CUDA 错误?**
|
||||
A: 确认 `nvidia-smi` 正常,且未同时运行其他占显存任务。Whisper 使用 `float16` 已针对 8GB 优化。
|
||||
|
||||
**Q: Ollama 连接失败?**
|
||||
A: 在服务器上执行 `curl http://192.168.8.64:11434/api/tags` 验证连通性,确认模型已 `ollama pull`。
|
||||
|
||||
**Q: TTS 音色不稳定?**
|
||||
A: 重新锁定音色,填写参考音频精确转写,并保持 `temperature=0.3` 低随机性。
|
||||
|
||||
**Q: 合成音频为空或噪声?**
|
||||
A: 检查润色文本长度(过短可能导致异常),确认 `speaker_emb.pt` 存在且有效。
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
Private — 仅供个人量化交易复盘使用。
|
||||
# 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](./DEPLOY.md)
|
||||
|
||||
### 一键部署(生产环境推荐)
|
||||
|
||||
以 **root** 用户部署到 `/opt/Trading_Studio` 并由 PM2 常驻:
|
||||
|
||||
```bash
|
||||
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`
|
||||
|
||||
日常更新:
|
||||
|
||||
```bash
|
||||
cd /opt/Trading_Studio && bash deploy.sh update
|
||||
```
|
||||
|
||||
### 手动部署(开发调试)
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 使用流程
|
||||
|
||||
### 首次使用:锁定音色
|
||||
|
||||
1. 进入 **「音色锁定」** 标签页
|
||||
2. 上传 10-30 秒干净人声参考(你的碎碎念盲录样本)
|
||||
3. (可选)填写参考音频的精确转写,提升 zero-shot 还原度
|
||||
4. 点击 **锁定音色** → 生成 `speaker_emb.pt`
|
||||
|
||||
### 日常生产
|
||||
|
||||
**方式 A — 分步操作:**
|
||||
|
||||
1. **音频极速识别**:上传复盘录音 → Whisper 转写
|
||||
2. **Gemma4 纪律审判**:一键润色,生成逻辑清晰、语气严厉的反思稿
|
||||
3. **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 |
|
||||
| 音色文件 | `speaker_emb.pt` |
|
||||
| 音频输出 | `outputs/` 目录 |
|
||||
|
||||
---
|
||||
|
||||
## PM2 守护运行
|
||||
|
||||
标准路径 `/opt/Trading_Studio`,root 用户:
|
||||
|
||||
```bash
|
||||
# 一键部署 + 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` 中预设):
|
||||
|
||||
```gitignore
|
||||
venv/
|
||||
*.wav
|
||||
*.pt
|
||||
*.log
|
||||
uploads/
|
||||
outputs/
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
- `venv/` — Python 虚拟环境,每台机器独立创建
|
||||
- `*.wav` — 录音与合成音频,体积大且含隐私
|
||||
- `*.pt` — ChatTTS 音色 Embedding 与模型权重
|
||||
- `*.log` — 运行日志
|
||||
|
||||
---
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
Trading_Studio/
|
||||
├── deploy.sh # 一键部署脚本(/opt + PM2)
|
||||
├── app.py # Gradio 主入口
|
||||
├── config.py # 全局配置
|
||||
├── whisper_service.py # Whisper CUDA 识别
|
||||
├── llm_service.py # Ollama 远程润色
|
||||
├── tts_service.py # ChatTTS 音色与合成
|
||||
├── ecosystem.config.js # PM2 守护配置
|
||||
├── requirements.txt # Python 依赖
|
||||
├── README.md # 本文件
|
||||
├── DEPLOY.md # 部署指南(含一键部署教程)
|
||||
├── PWA_NPS.md # 云服务器反代 + NPS 穿透 + PWA 安装教程
|
||||
├── .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 报 CUDA 错误?**
|
||||
A: 确认 `nvidia-smi` 正常,且未同时运行其他占显存任务。Whisper 使用 `float16` 已针对 8GB 优化。
|
||||
|
||||
**Q: Ollama 连接失败?**
|
||||
A: 在服务器上执行 `curl http://192.168.8.64:11434/api/tags` 验证连通性,确认模型已 `ollama pull`。
|
||||
|
||||
**Q: TTS 音色不稳定?**
|
||||
A: 重新锁定音色,填写参考音频精确转写,并保持 `temperature=0.3` 低随机性。
|
||||
|
||||
**Q: 合成音频为空或噪声?**
|
||||
A: 检查润色文本长度(过短可能导致异常),确认 `speaker_emb.pt` 存在且有效。
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
Private — 仅供个人量化交易复盘使用。
|
||||
|
||||
Reference in New Issue
Block a user