7.4 KiB
7.4 KiB
AI Video LifePlan - 功能实现说明
本项目已完整实现以下6大核心功能模块:
✅ 已实现功能
1️⃣ Input Analysis - 输入分析 (PDF / 视频 / 音频)
实现文件: backend/extractor.py
PDF 解析 (Gemini Pro)
- 使用 Google Gemini 2.0 Flash Exp 模型
- 自动提取结构化数据:
- 客户基本信息 (姓名、年龄)
- 财务数据 (资产、收入、支出)
- 家庭结构
- 人生事件规划
- 财务目标
使用示例:
from backend.extractor import PDFExtractor
extractor = PDFExtractor()
data = extractor.extract("path/to/lifeplan.pdf")
视频/音频转录 (OpenAI Whisper)
- 使用 FFmpeg 提取音频
- OpenAI Whisper API 进行高精度日语转录
- 支持分段时间戳
- 自动提取关键词
使用示例:
from backend.extractor import VideoExtractor
extractor = VideoExtractor()
result = extractor.extract("path/to/interview.mp4")
# 返回: transcription, segments, keywords
2️⃣ Scripting - 脚本生成
实现文件: backend/scripter.py
- 使用 Gemini Pro 生成自然的日语口语脚本
- 基于 PDF 数据和视频转录
- 支持多种风格 (friendly, professional, casual)
- 自动分段并计算时长
使用示例:
from backend.scripter import generate_script
script = generate_script(pdf_data, video_data, style="friendly")
3️⃣ Audio - TTS 音频生成
实现文件: backend/audio_generator.py
- OpenAI TTS API (tts-1 模型)
- 多种语音选择 (alloy, echo, fable, onyx, nova, shimmer)
- 自动为每个脚本段落生成音频
- 输出到
assets/1_processed/audio/
使用示例:
from backend.audio_generator import generate_audio_for_script
updated_script = generate_audio_for_script(script_data, voice="alloy")
4️⃣ Dynamic Visuals - 动态图表 (Remotion)
实现文件:
-
基于 Remotion 的程序化视频渲染
-
实时动态图表:
- 资产消耗曲线
- 现金流分析
- 双图表联动显示
-
虚拟人角色同步说话
-
字幕自动同步
5️⃣ Stock Visuals - B-Roll 素材获取 (Pexels API)
实现文件: backend/media_fetcher.py
- 自动翻译日语关键词为英语 (使用 Gemini)
- Pexels API 搜索并下载 HD 视频
- 智能缓存机制 (避免重复下载)
- 支持本地文件路径引用
功能特性:
- 关键词翻译缓存
- 自动选择最佳质量 (≤1920p HD)
- 存储到
assets/1_processed/broll/
使用示例:
from backend.media_fetcher import MediaFetcher
fetcher = MediaFetcher()
results = fetcher.fetch_broll(["家族", "老後", "貯蓄"], max_per_keyword=2)
6️⃣ Source Slicing - 视频切片 (可选功能)
实现文件: backend/video_slicer.py
- 基于转录内容智能识别关键片段
- 使用 Gemini 分析重要性
- FFmpeg 快速切片 (stream copy, 无需重编码)
- 输出到
assets/1_processed/video_clips/
使用示例:
from backend.video_slicer import extract_video_clips
clips = extract_video_clips(
video_path="interview.mp4",
transcription_data=video_data,
max_clips=3
)
🚀 完整工作流
命令行使用
# 基础使用 - 仅 PDF
python main.py --pdf assets/0_input/report.pdf
# 带视频转录
python main.py --pdf report.pdf --video interview.mp4
# 启用视频切片功能
python main.py --pdf report.pdf --video interview.mp4 --extract-clips
# 仅生成数据,不渲染视频
python main.py --pdf report.pdf --dry-run
工作流步骤
1. 📄 PDF 解析 (Gemini Pro)
↓
2. 🎥 视频转录 (Whisper) [可选]
↓
3. ✍️ 脚本生成 (Gemini Pro)
↓
4. 🎙️ 音频生成 (OpenAI TTS)
↓
5. 🎬 B-Roll 获取 (Pexels API)
↓
6. ✂️ 视频切片 [可选]
↓
7. 📊 数据整合 (render_props.json)
↓
8. 🎞️ 视频渲染 (Remotion)
🔑 API 配置
需要在 .env 文件中配置以下 API Keys:
GEMINI_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_key
PEXELS_API_KEY=your_pexels_api_key
📦 依赖安装
Python 依赖
pip install -r requirements.txt
主要包含:
google-genai- Gemini AI SDK (新版)openai- OpenAI API (Whisper + TTS)requests- HTTP 请求 (Pexels API)ffmpeg-python- 视频处理python-dotenv- 环境变量管理
系统依赖
- FFmpeg: 必须安装并在 PATH 中
- Windows:
choco install ffmpeg或从官网下载 - Mac:
brew install ffmpeg - Linux:
apt install ffmpeg
- Windows:
Node.js 依赖
npm install
📁 目录结构
assets/
├── 0_input/ # 输入文件 (PDF, 视频)
├── 1_processed/ # 中间处理文件
│ ├── audio/ # 生成的音频
│ ├── broll/ # 下载的 B-Roll 视频
│ ├── video_clips/ # 提取的视频片段
│ ├── render_props.json
│ └── translation_cache.json
└── 2_output/ # 最终视频输出
🔍 调试与验证
检查 PDF 提取结果
from backend.extractor import PDFExtractor
extractor = PDFExtractor()
data = extractor.extract("path/to/pdf")
print(json.dumps(data, ensure_ascii=False, indent=2))
检查视频转录
from backend.extractor import VideoExtractor
extractor = VideoExtractor()
result = extractor.extract("path/to/video.mp4")
print(f"Duration: {result['duration']}s")
print(f"Segments: {len(result['segments'])}")
检查 B-Roll 下载
from backend.media_fetcher import MediaFetcher
fetcher = MediaFetcher()
results = fetcher.fetch_broll(["家族", "老後"])
for keyword, videos in results.items():
print(f"{keyword}: {len(videos)} videos")
⚠️ 注意事项
-
API 配额:
- Gemini Pro 和 OpenAI API 有使用限制
- Pexels API 免费版每小时 200 请求
-
文件大小:
- 视频文件建议不超过 500MB
- PDF 建议不超过 20 页
-
处理时间:
- PDF 解析: ~10-30秒
- 视频转录: ~视频时长的 1/3
- B-Roll 下载: ~2-5分钟 (取决于网络)
- 视频渲染: ~1-3分钟
-
语言支持:
- 主要支持日语
- B-Roll 关键词会自动翻译为英语
🐛 常见问题
Q: FFmpeg not found
A: 确保 FFmpeg 已安装并在系统 PATH 中
ffmpeg -version # 检查是否安装
Q: Gemini API 错误
A: 检查 API key 是否正确,是否有配额
Q: Whisper 转录失败
A: 确认视频文件有音频轨道,格式支持
Q: B-Roll 下载慢
A: Pexels API 有速率限制,会自动等待
📄 相关文档
📝 更新日志
v1.0.0 (2026-01-16)
- ✅ 完整实现 6 大核心功能
- ✅ PDF 语义分析 (Gemini)
- ✅ 视频/音频转录 (Whisper)
- ✅ 脚本生成 (Gemini)
- ✅ TTS 音频生成 (OpenAI)
- ✅ B-Roll 素材获取 (Pexels)
- ✅ 视频切片 (FFmpeg + Gemini)
- ✅ 动态图表渲染 (Remotion)
构建者: Qoder AI Assistant
最后更新: 2026-01-16