Files
Trading_Studio/README.md
T

198 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
```bash
# 1. 克隆仓库
git clone https://git.bz121.com/dekun/Trading_Studio.git
cd Trading_Studio
# 2. 创建虚拟环境并安装依赖(详见 DEPLOY.md)
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
# 3. 启动中控
python app.py
# 浏览器访问: http://<服务器IP>:5683
```
---
## 使用流程
### 首次使用:锁定音色
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 守护运行
```bash
# 方式 1ecosystem 配置
pm2 start ecosystem.config.js
# 方式 2:直接命令
pm2 start app.py --name "trading_studio" --interpreter ./venv/bin/python
# 常用管理
pm2 status
pm2 logs trading_studio
pm2 restart trading_studio
pm2 save && pm2 startup # 开机自启
```
---
## .gitignore 配置
提交 Git 时请确保忽略以下产物(已在 `.gitignore` 中预设):
```gitignore
venv/
*.wav
*.pt
*.log
uploads/
outputs/
```
**说明:**
- `venv/` — Python 虚拟环境,每台机器独立创建
- `*.wav` — 录音与合成音频,体积大且含隐私
- `*.pt` — ChatTTS 音色 Embedding 与模型权重
- `*.log` — 运行日志
---
## 目录结构
```
Trading_Studio/
├── 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 输出
```
---
## 硬件要求
- **GPU** NVIDIA RTX 3060 Ti8GB 显存,建议锁定 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 — 仅供个人量化交易复盘使用。