# clipforge **Repository Path**: nhitinga/clipforge ## Basic Information - **Project Name**: clipforge - **Description**: base: import MoneyPrinterTurbo v1.3.5 fixed version - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-25 - **Last Updated**: 2026-09-20 ## Categories & Tags **Categories**: multimedia **Tags**: None ## README
# clipforge ✂️ ### AI 短视频生成 SaaS 服务 面向中国大陆用户的短视频生成 SaaS 网关:**不自建用户/账号/计费系统**,以 `app_key + sign` 签名接入外部客户系统(ldbsrv 统一用户中心);任务入队 → 独立 worker 渲染 → 回调结果。**模型全部本地预置,运行期零网络下载**。
--- ## 工程概览 | 层 | 说明 | |---|---| | `saas_gateway/` | FastAPI SaaS 网关(:8090):任务签名鉴权 / 三级租户隔离(全局→app_key→用户)/ 任务队列与并发配额 / 回调重试 / 监控清理 / OSS 成片上传 | | `frontend/` | Vue 3 + Element Plus 控制台(网关 `/console` 托管):任务/成片/用户/素材管理,三入口登录(admin/customer/user,对接 ldbsrv JWT) | | `app/` | 视频渲染内核(源自 MoneyPrinterTurbo):脚本→素材→配音→字幕→合成 | | `models/` | 本地模型(不入库、不打包镜像):whisper ASR + Piper/Kokoro onnx TTS | | `docker/` | SaaS 镜像构建(模型卷挂载,镜像精简) | **对接文档**:[系统设计文档](docs/系统设计文档.md) · [外部系统对接协议](docs/api-protocol.md) · [外部网络调用清单](docs/external-network-list.md) · [本地 ASR/TTS 实现总结](docs/architecture/local-asr-and-tts.md) · [本地 TTS 模型说明](docs/models/local-tts-models.md) · [Docker 打包与部署](docs/docker-deployment.md) ## 本地语音(ASR + TTS) 全部 **onnxruntime CPU 推理**,免 API key、免联网: - **ASR**:`faster-whisper`(small / large-v3)— 字幕时间轴 + 草稿/爆款理解 - **TTS `piper:`**:中文 3 音色(华研·女声 / 晓雅·女声 / 朝文·男声),极快 - **TTS `kokoro:`**:中文 103 音色(zf 女 / zm 男),**misaki 注音音素**产出地道普通话 - 云端 provider(edge / azure / siliconflow / minimax / elevenlabs 等)依旧并存,`config.toml [app] tts_provider` 切换 测试与批量工具: ```bash python tools/test_tts.py --model kokoro --voice zf_001 "你好,测试" python tools/test_tts.py --model kokoro --show-voice # 103 音色+中文名+特点 ``` ## 快速开始(本地 · 开发调试) ```bash conda activate music python download-models.py --small # 预下载 whisper(断点续传;生产用 --large-v3) ./start.sh # 前台调试:网关 :8090 + worker + 前端 vite(5173),Ctrl+C 全停 ./start.sh --ldbsrv # 服务器模式:SSH 隧道连 ldbsrv 的 Redis/MySQL ./start.sh --no-ui # 只跑后端,不起前端 vite ./start.sh logs # 前台滚动看日志(不改变启动方式) ``` ## Docker 部署(docker.sh · 正式) 模型**不打包进镜像**,由 `docker-compose.saas.yml` 卷挂载宿主机 `./models/` → 容器 `/app/models:ro`。启动前务必先下载模型到 `./models/`。**Redis / MySQL 也走宿主机**(`host.docker.internal`),配置在 `.env.docker`(参考 `.env.docker.example`)。**上传素材/任务产物(/app/storage)绑定宿主机 `./storage`**,换版本不丢。 ```bash cp .env.docker.example .env.docker # 首次:按需改 Redis/MySQL 地址与密码 ./docker.sh --build --ver 0.4.0 # 构建镜像 clipforge:0.4.0 ./docker.sh --start --ver 0.4.0 # 启动(版本缺省则自动/交互选择;不重建) ./docker.sh --stop --ver 0.4.0 # 停止并移除服务 ./docker.sh --status # 列出已发布镜像版本 ./docker.sh --log # 跟踪运行日志(未启动会提示) ``` > ⚠️ `start.sh`(本地调试)与 `docker.sh`(正式)配置文件互不影响:前者用 `.env`,后者用 `.env.docker`。 > ⚠️ 项目外的 Docker 配置(`~/.docker/daemon.json` 镜像加速)易遗漏,部署服务器前必配,见 [Docker 打包与部署](docs/docker-deployment.md)。 ### 任务进度实时推送(SSE) 任务列表用 **SSE**(`/clipforge/api/v1/task/events`)实时推送状态/进度变更,替代前端定时轮询: - worker 每次 `patch_task`(状态/进度变化)经 Redis pub/sub 广播 `task_update`,网关推送给在线控制台。 - 前端用 `fetch` 流带 JWT 读取,按 `task_id` 就地回填进度,无需整页刷新;断线自动退避重连。 - 任务列表**支持删除**:`pending`/`failed`/`success` 均可删除(`running` 禁止),删除同步清理 Redis 状态、MySQL 记录与工作目录。 ### 安装 Docker(如未安装) macOS(Homebrew): ```bash brew install --cask docker # 安装 Docker Desktop open -a Docker # 启动一次,按提示完成授权 docker --version # 验证 ``` Linux(Ubuntu/Debian,官方脚本): ```bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER && newgrp docker docker compose version ``` > 中国大陆网络可配置镜像加速(Docker Desktop → Settings → Docker Engine 添加 `registry-mirrors`,或云厂商加速地址)。 ## 配置 运行配置 `config.toml`(不入库;从 `config.example.toml` 生成)。关键段: ```toml [app] tts_provider = "piper" # edge / piper / kokoro / siliconflow / ... [whisper] model_size = "small" # 生产建议 large-v3 [piper] / [kokoro] # 本地 TTS 模型目录与音色(留空自动扫描 models/) ``` 鉴权与租户环境变量见 `docker-compose.saas.yml`(`CLIPFORGE_APP_KEYS`、MySQL/OSS 等)。 ## 目录速览 ``` saas_gateway/ # SaaS 网关(FastAPI) frontend/ # Vue3 控制台(dist 由网关托管) app/ # 渲染内核(MoneyPrinterTurbo) models/ # 本地模型(git 忽略、镜像不打包) ├─ whisper-small|large-v3/ # ASR ├─ piper/zh/zh_CN/... # TTS 中文 3 音色 └─ kokoro-zh/onnx/ # TTS 中文 103 音色 docs/ # 设计/协议/实现文档 tools/ # TTS 测试与模型转换工具 docker/ # SaaS Dockerfile + entrypoint ``` --- ## 分支说明 - **`main`**:主开发分支,当前所有成果(SaaS 网关、Vue 控制台、本地 ASR/TTS、Docker 部署、用户中心改造)都已合并到这里,**后续开发从 `main` 进行**。 - **`dev`**:历史开发分支,现已并入 `main`,**保留作为备份**(不再作为开发主线)。 - **`upstream/original`**:上游 MoneyPrinterTurbo 完整代码保留。 > 已移除上游 Streamlit WebUI(`webui/`),界面统一使用 Vue 控制台(网关 `/console` 托管)。 ## 来源与许可 本项目的视频渲染内核源自开源项目 [MoneyPrinterTurbo](https://github.com/harry0703/MoneyPrinterTurbo)(作者 harry0703),在其基础上构建了完整的 SaaS 网关、控制台、租户体系与本地语音能力,在此致谢。 - 上游原版 readme 见 [main 分支](https://gitee.com/nhitinga/clipforge/tree/main)(`upstream/original` 分支保留完整上游代码) - 许可证:[MIT](LICENSE)(上游 Copyright (c) 2024 Harry 的 MIT 声明继续适用)