"让本地看番不再孤单。"
Asteria 是一个基于多模态大模型(VLM + LLM)的本地视频弹幕生成工具。它能像人类观众一样“看”懂视频画面,理解剧情发展,并生成具有特定人设风格的弹幕。(目前还属于玩具)
- 👁️ 本地视觉感知: 利用轻量级多模态模型 (如 MiniCPM-V) 在本地分析画面,保护隐私且零成本。
- 🧠 远程LLM吐槽: 将视觉信号转化为“微型剧本”,发送给云端大模型 (DeepSeek/GPT) 进行深度理解与吐槽。
- 🎭 角色扮演系统: 支持设定 AI 的吐槽风格(犀利、玩梗、发癫、科普),拒绝机械式评论。
- 📚 Bangumi 联动: 自动获取番剧背景与角色立绘,实现精准的角色识别。
- 🚀 流水线架构: 采用 Pull 模式的流式处理,内存占用极低,支持长视频处理。
- 🖥️ 双模式运行: 提供 PyQt6 图形界面 (GUI) 和 命令行工具 (CLI)。
Asteria 通过 4 个阶段的流水线处理视频:
graph LR
A[🎥 帧抽取] -->|过滤相似帧| B(👁️ 视觉感知)
B -->|JSON 描述| C(📜 微剧本聚合)
C -->|场景流| D{🧠 弹幕生成}
D -->|XML| E[💬 最终弹幕]
Stage 1: Frame Extraction - 智能截取关键帧,通过直方图算法过滤相似画面。
Stage 2: Vision Analysis - 调用本地 VLM 识别画面内容(人物、动作、字幕)。
Stage 3: Script Generation - 将碎片化的视觉信息聚合成连贯的“微型剧本”。
Stage 4: Danmaku Creation - 远程 LLM 结合人设与剧情上下文,生成吐槽。
- 环境准备
测试环境为python 3.12.12
# 克隆项目
git clone https://github.com/KikoPlayProject/Asteria.git
cd Asteria
# 安装依赖
pip install -r requirements.txt- 启动本地视觉服务
测试使用llama.cpp本地运行MiniCPM-V 4.5模型int4量化版本(魔塔获取),8G显存即可运行
# 示例:使用 llama-server 启动,请将下载的模型放到合适的位置
./llama-server -m ..\minicpm-v-4-5\ggml-model-Q4_K_M.gguf --mmproj ..\minicpm-v-4-5\mmproj-model-f16.gguf -ngl 99 -c 4096- 运行 Asteria (GUI 模式)
python gui.py演示视频:bilibili
在界面中:
输入输出: 选择视频文件,输入Bangumi ID(用于获取角色设定)或自定义背景信息。
模型配置: 填写本地 VLLM 地址和远程 LLM (DeepSeek/OpenAI) 的 API信息。
分析输出: 点击“启动流水线”,实时观看 AI 的推理过程。
- 运行 Asteria (CLI 模式)
python cli.py --video_file "example.mp4" --bgm_id 424622 --output_file "danmaku.xml"项目的主要配置位于 config/ 目录:
settings.yaml: 默认的 API 地址、模型名称、阈值参数。
prompts.yaml:
VLM Prompt: 指导本地模型如何提取 JSON。
LLM Prompt:远程LLM吐槽相关prompt
Personas: 定义不同的弹幕人设。
欢迎提交 Issue 和 Pull Request!
