# digitalHuman-src **Repository Path**: hemingd/digital-human-src ## Basic Information - **Project Name**: digitalHuman-src - **Description**: 一个数字人讲解PPT的项目,自动解析PPT,AI生成讲稿,可选择数字人形象,可自定义数字人形象,可选择音色 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-02 - **Last Updated**: 2026-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # digitalHuman-src 数字人 PPT 视频生成平台(前后端分离)。 上传 PPT 后,系统会自动解析页内容并生成讲稿,支持在创作台调整台词、数字人和声音参数,最后异步渲染输出视频。 ## 功能概览 - 上传 PPT 并异步解析图片、文本、备注 - AI 按页生成讲解文案(增量回填) - 创作台编辑(台词、数字人位置/缩放、声音参数) - Celery 异步渲染(排队、进度、取消) - 视频输出与下载(`/output/...`) ## 项目结构 ```text digitalHuman-src/ ├── front/ # Vue 3 + Vite 前端 ├── end/ # Flask + Celery 后端 │ ├── routes/ # 业务 API │ ├── render_tasks.py # Celery 渲染任务 │ ├── video_composer.py # Wav2Lip + TTS + 合成核心 │ ├── start_all.sh # Redis + Flask + Celery 一键启动 │ ├── wav2lip/ # Wav2Lip 模型代码 │ └── avatars/ # 数字人素材 └── README.md ``` ## 技术栈 - 前端:Vue 3、Vite、Pinia、Vue Router、Element Plus、Axios - 后端:Flask、Flask-SQLAlchemy、Celery、Redis - 渲染:PyTorch、Wav2Lip、Edge TTS、OpenCV、PyAV - 存储:SQLite(默认) ## 环境要求 - Node.js 18+(前端) - Python 3.10+(后端) - Redis(本地或远程) - `libreoffice` / `soffice`(PPT 转换) - 若要执行完整渲染链路,还需安装 `torch`、`opencv-python`、`av`、`edge-tts` 等依赖(见 `end/README.md`) ## 快速启动 ### 1) 启动后端(推荐) ```bash cd /home/zhuliping/data/projects/digitalHuman-src/end pip install -r requirements.txt bash start_all.sh start ``` 常用命令: ```bash bash start_all.sh status bash start_all.sh stop bash start_all.sh restart ``` 说明: - `start_all.sh` 会启动 `redis + flask + celery worker` - 脚本默认 `REDIS_MODE=socket`,会自动注入 `CELERY_BROKER_URL` / `CELERY_RESULT_BACKEND` - 日志目录:`end/.runtime/logs/` ### 2) 启动前端 ```bash cd /home/zhuliping/data/projects/digitalHuman-src/front npm install npm run dev ``` 默认访问: - 前端:`http://localhost:5173` - 后端 API:`http://localhost:3000/api/v1` ## 后端配置示例(`.env`) 在 `end/.env` 中可配置: ```bash # Flask FLASK_HOST=0.0.0.0 FLASK_PORT=3000 FLASK_DEBUG=false MAX_CONTENT_LENGTH=104857600 # 路径 UPLOAD_FOLDER=./uploads OUTPUT_FOLDER=./output DATA_FOLDER=./data DATABASE_URL=sqlite:///./data/digital_human.db # AI 讲稿 GPT_API_KEY= GPT_BASE_URL=https://api.openai.com/v1/ GPT_MODEL_ENGINE=gpt-3.5-turbo # Redis / Celery(仅在你不用 start_all.sh 自动注入时需要手动设置) CELERY_BROKER_URL=redis://127.0.0.1:6379/0 CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/0 ``` ## 典型业务流程 1. 前端上传 PPT 到 `POST /api/v1/projects` 2. 后端创建项目并异步解析(项目状态 `processing`) 3. 幻灯片与台词逐步回写,状态更新为 `draft` 4. 创作台调整内容并调用 `POST /api/v1/render/start` 5. Celery 渲染,前端轮询 `GET /api/v1/render/status/:taskId` 6. 完成后返回 `outputUrl`,前端可预览/下载 ## 文档导航 - 前端说明:[`front/README.md`](./front/README.md) - 后端说明:[`end/README.md`](./end/README.md) - Wav2Lip 人脸检测说明:[`end/wav2lip/face_detection/README.md`](./end/wav2lip/face_detection/README.md) ## 常见问题 ### 渲染任务一直 pending - 检查 `bash start_all.sh status` 中 celery 是否 running - 检查 Redis 是否可连通 - 查看 `end/.runtime/logs/celery.log` ### 创建项目失败(PPT 解析) - 检查 `libreoffice` / `soffice` 是否可执行 - 检查 `pdf2image` 及其系统依赖是否安装完整 ## 现状说明 - 当前使用“轻认证”:通过请求头 `X-User-Id`、`X-Username` 识别用户 - `tts/preview` 目前是演示实现(正弦波 wav),最终渲染走 `video_composer.py` 的 Edge TTS - 生产环境建议用 Nginx 代理 `/api`、`/uploads`、`/output`