# 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` **首次部署后必做 — 预下载 AI 模型**(内网服务器无外网时必需,否则 Whisper 报 `Network is unreachable`): ```bash cd /opt/Trading_Studio bash scripts/download_all_models.sh pm2 restart trading_studio ``` 日常更新(代码已 `git push` 到远端后,在服务器执行): ```bash cd /opt/Trading_Studio bash server-update.sh ``` 若更新涉及模型脚本或首次部署,追加: ```bash bash scripts/download_all_models.sh pm2 restart trading_studio ``` 完整说明见 [DEPLOY.md §0.4.2 / §0.8](./DEPLOY.md)。 ### 手动部署(开发调试) ```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,本地路径 `models/whisper/small/` | | ChatTTS 模型 | `models/ChatTTS/`(须预下载脚本) | | HF 镜像 | `HF_ENDPOINT=https://hf-mirror.com`(`.env` 可改) | | 音色文件 | `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) ├── 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](./DEPLOY.md)。 **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](./PWA_NPS.md) 配置 HTTPS 域名,或改用 Web UI **「上传」** 录音文件。 **Q: TTS 音色不稳定?** A: 重新锁定音色,填写参考音频精确转写,并保持 `temperature=0.3` 低随机性。 **Q: 合成音频为空或噪声?** A: 检查润色文本长度(过短可能导致异常),确认 `speaker_emb.pt` 存在且有效。 --- ## License Private — 仅供个人量化交易复盘使用。