Skip to content

Repository files navigation

Agent SDK - AI 小说转视频生成平台

基于 Next.js + FastAPI 构建的全栈 AI 小说转视频生成平台,支持从小说文本自动生成带有图像、配音和字幕的动漫视频。

功能特点

  • 小说解析:支持多种格式(TXT、EPUB、PDF、DOCX)
  • 场景分割:智能识别章节和场景边界
  • 角色管理:自动提取角色信息并保持视觉一致性
  • 图像生成:基于七牛云 AI API 生成动漫风格图像
  • 配音合成:支持多角色语音区分和情感控制
  • 视频合成:自动生成MP4视频,支持字幕和背景音乐
  • Web界面:现代化的前端界面,支持实时预览

技术栈

前端

  • 框架: Next.js 14 (App Router)
  • 语言: TypeScript
  • UI 库: shadcn/ui + Tailwind CSS
  • 状态管理: Zustand
  • HTTP 客户端: Axios
  • 视频播放: react-player

后端

  • 框架: FastAPI
  • 图像生成: 七牛云 AI API (gemini-2.5-flash-image)
  • TTS引擎: Edge TTS / OpenAI TTS
  • 视频处理: MoviePy、FFmpeg
  • 数据库: SQLite

项目结构

agent-sdk/
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── app/ # Next.js App Router 页面
│ │ │ ├── layout.tsx # 根布局
│ │ │ ├── page.tsx # 首页
│ │ │ ├── upload/ # 上传页面
│ │ │ ├── characters/ # 角色管理页面
│ │ │ ├── styles/ # 风格配置页面
│ │ │ ├── tasks/ # 任务列表页面
│ │ │ ├── preview/[taskId]/ # 预览页面
│ │ │ └── api/ # API 路由
│ │ ├── components/
│ │ │ ├── ui/ # 基础 UI 组件
│ │ │ └── features/ # 功能组件
│ │ ├── lib/ # 工具函数
│ │ ├── stores/ # Zustand 状态管理
│ │ ├── types/ # TypeScript 类型定义
│ │ └── styles/ # 全局样式
│ ├── package.json # 前端依赖配置
│ ├── next.config.js # Next.js 配置
│ ├── tailwind.config.ts # Tailwind CSS 配置
│ ├── postcss.config.js # PostCSS 配置
│ └── tsconfig.json # TypeScript 配置
├── backend/ # 后端代码目录
│ ├── api/ # API接口层
│ │ ├── main.py # FastAPI应用入口
│ │ └── routes/ # API路由
│ ├── services/ # 核心服务模块
│ │ ├── novel_processing/ # 小说处理
│ │ ├── character_management/ # 角色管理
│ │ ├── image_generation/ # 图像生成
│ │ ├── voice/ # 配音服务
│ │ └── video_composition/ # 视频合成
│ ├── models/ # 数据模型
│ ├── config/ # 配置管理
│ └── requirements.txt # Python依赖
├── docker-compose.yml # Docker编排
├── Dockerfile # Docker镜像定义
├── package.json # 根项目配置
└── README.md # 项目文档

快速开始

环境要求

  • Node.js 18+
  • Python 3.10+
  • Docker & Docker Compose (可选)
  • FFmpeg

安装步骤

  1. 克隆仓库
git clone https://github.com/qbox/agent-sdk.git
cd agent-sdk
  1. 安装依赖
# 安装根项目依赖
npm install
# 安装前端依赖
npm run install:frontend
# 安装后端依赖
pip install -r backend/requirements.txt
  1. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入必要的API密钥

主要配置项(.env文件):

# 七牛云 AI 配置OPENAI_BASE_URL=https://openai.qiniu.com/v1OPENAI_API_KEY=your_qiniu_ai_api_key# 数据库配置DATABASE_URL=sqlite:///./novel_anime.db# TTS配置(可选)TTS_API_URL=TTS_API_KEY=# Volcengine TTS 配置(可选)VOLCENGINE_APP_ID=VOLCENGINE_ACCESS_TOKEN=VOLCENGINE_RESOURCE_ID=
  1. 启动服务
# 启动后端API服务
python -m uvicorn backend.api.main:app --reload
# 启动前端开发服务器
npm run dev

详细操作说明视频(处理速度比较慢,视频做了适当的加速处理):http://s3um1yxzg.bkt.clouddn.com/novel2anime/xinwenlianbo.mov 视频中测试小说在:/test_novel/q.txt

访问:

图像生成 API 使用

七牛云 AI 文生图 API

# 设置环境变量export OPENAI_BASE_URL="https://openai.qiniu.com/v1"export OPENAI_API_KEY="<七牛云 AI API KEY>"# 调用文生图 API
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{ "model": "gemini-2.5-flash-image", "prompt": "一只可爱的橘猫坐在窗台上看着夕阳,照片风格,高清画质" }'

Python 调用示例

importrequestsimportos# 配置APIOPENAI_BASE_URL="https://openai.qiniu.com/v1"OPENAI_API_KEY=os.getenv("OPENAI_API_KEY")
# 生成图像defgenerate_image(prompt: str):
response=requests.post(
f"{OPENAI_BASE_URL}/images/generations",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {OPENAI_API_KEY}"
},
json={
"model": "gemini-2.5-flash-image",
"prompt": prompt
}
)
returnresponse.json()
# 使用示例result=generate_image("一个美丽的动漫女孩,长发飘逸,站在樱花树下,动漫风格,高清画质")
print(result)

开发指南

前端开发

# 从根目录运行前端开发服务器
npm run dev
# 或者直接进入前端目录运行cd frontend && npm run dev

后端开发

# 启动后端API服务
python -m uvicorn backend.api.main:app --reload

代码规范

# 前端代码规范
npm run lint
npm run format
# 后端代码规范cd backend && black .cd backend && flake8 .

核心服务说明

1. Novel Processing Service(小说处理服务)

  • 支持多格式文本解析
  • 智能场景分割
  • 角色自动识别
  • 对话与旁白分离

2. Character Management Service(角色管理服务)

  • 角色信息管理
  • 参考图管理
  • 角色照片保存

3. Image Generation Service(图像生成服务)

  • 七牛云 AI API 集成
  • Prompt 智能优化
  • 角色一致性控制
  • 批量生成支持

4. Voice Service(配音服务)

  • 多TTS引擎支持(Edge TTS、OpenAI TTS)
  • 角色语音自动分配
  • 情感语调控制
  • 批量音频生成

5. Video Composition Service(视频合成服务)

  • 图像序列编排
  • 音视频同步
  • 字幕自动添加
  • 转场效果
  • 背景音乐混音

API 文档

启动后端服务后访问:

使用示例

通过API上传小说并生成视频

importrequests# 上传小说文件withopen("novel.txt", "rb") asf:
response=requests.post(
"http://localhost:8000/api/v1/project/create",
json={
"novel_file": "/path/to/novel.txt",
"title": "我的小说",
"style": "japanese",
"max_scenes": 20,
"enable_voice": True,
"enable_bgm": False,
}
)
project_id=response.json()["project_id"]
# 查询生成状态status_response=requests.get(
f"http://localhost:8000/api/v1/project/{project_id}/status"
)
print(status_response.json())

开发计划

  • 支持更多小说格式
  • 增强角色一致性算法
  • 支持自定义动漫风格
  • 优化处理速度
  • 添加更多转场效果
  • 支持实时预览
  • 批量任务管理
  • 用户认证与权限管理

贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交变更 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

许可证

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages