SVA - 智能视频助手 🎬
一款完全本地化的AI桌面应用程序,能够完全离线分析和查询短视频文件。无需互联网连接!
🌟 特点
- 🎤 语音转文字使用HuggingFace的Whisper提取语音内容
- 👁️ 视觉文本识别使用TrOCR检测并提取屏幕上的文本
- 🎯 目标检测使用DETR模型识别物体
- 📊 内容分析智能主题分析与总结
- 📄 报告生成专业的PDF、PowerPoint和文本报告
- 💻 桌面界面基于Tauri + React构建的现代聊天式用户界面
- 🔒 完全离线所有处理都在本地进行,不依赖于互联网
📋 要求
系统要求
- 操作系统(Operating System,简称OS)Linux、macOS 或 Windows
- 随机存取存储器(RAM)最低8GB(建议16GB以获得更佳性能)
- 存储5GB的免费空间用于存储模型和依赖项
- CPU(中央处理器)建议使用多核处理器以加快分析速度
软件先决条件
- python3.10或更高版本
- Node.js16.x或更高版本
- Rust(一种系统编程语言)最新稳定版(适用于Tauri)
- FFmpeg用于视频处理
🚀 安装与设置
1. 克隆仓库
git clone https://github.com/KhairulIzwan/SVA.git
cd SVA2. 后端设置(Python + 人工智能模型)
# Create Python virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
# Install additional report generation libraries
pip install reportlab python-pptx
# Test backend setup
cd backend
python test_setup.py3. 前端设置(Tauri + React)
cd frontend
# Install Node.js dependencies
npm install
# Install Tauri CLI (if not already installed)
npm install -g @tauri-apps/cli
# Build frontend
npm run build4. 安装系统依赖项
Ubuntu/Debian:(可翻译为)Ubuntu/Debian(系统/发行版)
sudo apt update
sudo apt install ffmpeg build-essential pkg-config libssl-devmacOS:
brew install ffmpegWindows:
- 从 https://ffmpeg.org/download.html 下载 FFmpeg
- 将FFmpeg添加到系统的PATH中
🎯 快速入门
选项1:开发模式
# Terminal 1: Start backend server
cd backend
source ../venv/bin/activate
python grpc_server_fixed_new.py
# Terminal 2: Start frontend
cd frontend
npm run tauri dev选项2:生产构建
# Build the complete application
cd frontend
npm run tauri build
# Run the built application
# The executable will be in src-tauri/target/release/📖 使用指南
1. 上传视频
- 在聊天界面中点击“上传视频”
- 选择一个视频文件(支持MP4、AVI、MOV格式)
- 推荐的最大使用时长:2-3分钟以获得最佳性能
2. 提出问题
使用自然语言查询您的视频:
- “从这个视频中提取所有文本” - 获取语音和视觉文本
- “你能看到什么物体?” - 检测并列出对象
- “分析这个演示文稿” - 全面分析
- “转录演讲” - 仅音频转文本
- “屏幕上写的是什么?” - 仅视觉文本识别
3. 生成报告
分析后,使用报告按钮:
- 📄 PDF报告专业格式的报告
- 📊 PowerPoint(演示文稿)可直接用于演示的幻灯片
- 📝 文本报告简单文本摘要
4. 查看结果
- 分析实时显示在聊天中
- 报告保存至
backend/generated_reports/ - 所有对话均被保存在
backend/chat_storage/
📚 示例与样本输出
📹(视频播放/摄像机图标,无具体文字含义) 示例输入文件
我们提供示例视频,以帮助您测试SVA的功能:
🎥 表示“电影放映机”或“视频播放”。 样本测试视频

包含的测试文件:
data/videos/
├── test_video.mp4 # Main demo video (30s business presentation)
└── sample_video # Additional test content💬(表示说话或对话的符号,无具体含义,可不译出或译为“(表示说话的符号)”) 示例查询与响应

*SVA聊天界面展示实时视频分析结果的示例*
📄 纸张或文件的符号(无具体文字含义) 生成的报告示例

*SVA报告生成界面示例及样本输出格式*
📊 项目状态与总结
✅ 效果良好的方法/措施
核心功能
- 🎤 语音识别使用HuggingFace的Whisper模型,准确度极高
- 👁️ 目标检测可靠地识别人员、物体和场景
- 📖 文本提取在清晰、易读的屏幕上显示文本方面表现良好
- 💬 聊天界面流畅、响应迅速的桌面应用程序体验
- 📄 报告生成专业的PDF、PowerPoint和文本输出
技术成就
- 🔒 100% 离线操作初次设置后无需依赖互联网
- 🚀 本地人工智能模型所有处理均使用HuggingFace的transformers库
- 📱 现代用户界面Tauri + React 提供原生桌面体验
- 🗃️ 数据持久化聊天历史记录和分析结果已妥善存储
- ⚡ 实时处理聊天界面中的实时分析反馈
用户体验
- 🎯 自然语言查询基于直观对话的交互方式
- 📊 专业报告可导出的文档,便于分享
- 🔄 多格式支持PDF、PowerPoint 和文本报告选项
- 📁 文件管理视频、聊天记录和报告的有序存储
⚠️ 已知的限制
内容识别挑战
- 📝 文本识别难以处理手写文本、艺术化字体或低分辨率内容
- 🎤 音频质量在背景噪音或多人说话的情况下,性能会下降
- 🌐 语言支持主要针对英文内容进行了优化
- 📏 视频时长处理时间随着视频时长的增加(>3分钟)而显著延长
技术限制
- 🖥️ 资源使用情况分析过程中内存消耗较大(建议8GB以上)
- ⏱️ 处理速度根据视频复杂度,分析可能需要30至90秒
- 📦 模型大小初始下载所有AI模型需要约2GB空间
- 🔧 安装复杂性多个依赖项(Python、Node.js、Rust、FFmpeg)
用户界面区域
- 📋 报告背景生成的报告包含所有分析数据,而不仅仅是用户请求的内容
- 🔄 会话管理在同一聊天中区分不同视频分析的能力有限
- 📂 文件上传在处理流程中,原始视频文件名并不总是得以保留
- 🎯 查询特异性报告不会根据特定用户的请求过滤内容
🚧(施工中/维修中) 遇到的挑战
集成复杂性
- 🔗 多技术栈协调Python后端、Rust Tauri和React前端
- 📡 gRPC 通信管理协议缓冲区和跨语言通信
- 🏗️ 构建过程复杂的构建流水线,包含多个编译步骤
- 🔧 依赖管理处理Python、Node.js与系统库之间的冲突
人工智能模型挑战
- 📥 模型加载大型模型文件导致初始启动缓慢
- 🎯 置信度校准平衡检测灵敏度与假阳性率
- 🔀 多模态融合有效整合不同人工智能模型的结果
- ⚡ 性能优化在准确性与处理速度之间取得平衡
数据流问题
- 🆔 会话追踪在多个用户交互中保持上下文连贯性
- 📊 内容提取解析复杂分析结果以生成报告
- 🎬 视频处理一致地处理各种视频格式和分辨率
- 💾 状态管理前端状态与后端处理的同步
🔮 这个符号在中文中并没有一个固定的翻译,它通常被用作一种神秘或占卜的象征。在网络交流或特定语境中,人们可能会用“🔮”来表示神秘、未知或占卜等概念。因此,可以将其大致翻译为“神秘符号”或“占卜符号”,具体翻译取决于上下文和使用场景。 潜在的改进之处
短期提升(1-2周)
- 🎯 上下文感知报告仅根据特定用户查询生成报告
- 📂 更好的文件管理在整个处理过程中保留原始视频文件名
- 🔄 会话分离不同视频分析会话之间的清晰界限
- ⚡ 性能优化实现模型缓存和并行处理
中期特征(1-2个月)
- 🌐 多语言支持为全球用户拓展至英语以外的语言
- 📊 高级分析情感分析、主题建模和内容分类
- 🎨 用户界面/用户体验改进拖放上传、进度指示器、批量处理
- 📱 导出选项电子邮件集成、云存储、自定义报告模板
长期愿景(3-6个月)
- 🧠 高级人工智能模型与更新、更强大的模型进行集成
- 🎬 视频编辑集成应用程序内的基本编辑功能
- 📈 分析仪表盘使用模式、准确性指标、性能洞察
- 🔌 插件系统可扩展的自定义分析模块架构
🎯(目标/靶心) 如果有更多时间能实现什么
再额外2-4周
🔧 配置
模型配置
首次使用时,模型会自动下载:
- 语音识别:
openai/whisper-small - 视觉文本:
microsoft/trocr-base-printed - 目标检测:
facebook/detr-resnet-50
存储位置
SVA/
├── backend/
│ ├── chat_storage/ # Chat conversations
│ ├── generated_reports/ # PDF/PPT reports
│ ├── uploaded_videos/ # Processed videos
│ └── models/ # Downloaded AI models
└── frontend/
└── src-tauri/target/ # Built application🧪 测试
运行后端测试
cd backend
source ../venv/bin/activate
# Test individual components
python test_whisper.py # Speech recognition
python vision_ai_test.py # Object detection
python test_transcription.py # Text extraction
python comprehensive_test.py # Full pipeline
# Test report generation
python -c "from mcp_servers.report_server import ReportGenerationServer; server = ReportGenerationServer(); print('✅ Report server ready')"前端测试
cd frontend
npm test # Run React tests
npm run tauri build --debug # Test build process🐛 故障排除
常见问题
1. “模型下载失败”
# Clear model cache and retry
rm -rf ~/.cache/huggingface/
python test_whisper.py2. “未找到FFmpeg”
# Verify FFmpeg installation
ffmpeg -version
# On Ubuntu/Debian
sudo apt install ffmpeg
# On macOS
brew install ffmpeg3. “模型文件访问被拒绝”
# Fix model directory permissions
chmod -R 755 backend/models/4. “Tauri 构建失败”
# Update Rust and Tauri
rustup update
npm install -g @tauri-apps/cli@latest5. “报告未生成”
# Check if in virtual environment
source venv/bin/activate
pip install reportlab python-pptx性能优化
为了提升性能:
- 使用较短的视频(\< 2分钟)
- 在分析期间关闭其他应用程序
- 确保有足够的内存(至少8GB)
- 使用SSD存储以加快模型加载速度
调试模式
# Enable detailed logging
export RUST_LOG=debug
export PYTHONPATH=$PYTHONPATH:/home/user/SVA/backend
# Run with debug output
npm run tauri dev📁 项目结构
SVA/
├── README.md # This file
├── requirements.txt # Python dependencies
├── PROJECT_OVERVIEW.md # Detailed project documentation
├── backend/ # Python AI backend
│ ├── mcp_servers/ # MCP protocol servers
│ ├── grpc_server_fixed_new.py # Main gRPC server
│ ├── simple_video_analyzer.py # Core analysis engine
│ └── test_*.py # Test scripts
├── frontend/ # Tauri + React frontend
│ ├── src/ # React components
│ ├── src-tauri/ # Tauri configuration
│ └── package.json # Node.js dependencies
└── scripts/ # Setup and utility scripts
└── setup.ps1 # Windows setup script🤝 贡献(或:参与贡献)
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支:
git checkout -b feature-name - 进行你的更改并彻底测试
- 提交:
git commit -am 'Add new feature' - 推送:
git push origin feature-name - 创建拉取请求
📝 许可证
这个项目是开源的。详情请参见LICENSE文件。
🆘 支持
- 问题在GitHub Issues上报告错误
- 文档请查阅 PROJECT_OVERVIEW.md 以获取技术细节
- 演出请参阅上文的故障排除部分
______________________________________________________________________
使用HuggingFace Transformers、Tauri和React,满怀热爱地打造
