经 AI Skill Hub 精选评估,霍维克 获评「强烈推荐」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
分布式会议智能平台,支持WebRTC点对点视频
霍维克 是一款基于 JavaScript 开发的开源工具,专注于 ai、分布式系统、情感识别 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
分布式会议智能平台,支持WebRTC点对点视频
霍维克 是一款基于 JavaScript 开发的开源工具,专注于 ai、分布式系统、情感识别 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:npm 全局安装 npm install -g hoovik # 方式二:npx 直接运行(无需安装) npx hoovik --help # 方式三:项目依赖安装 npm install hoovik # 方式四:从源码运行 git clone https://github.com/AnupamKumar-1/Hoovik cd Hoovik npm install npm start
# 命令行使用
hoovik --help
# 基本用法
hoovik [options] <input>
# Node.js 代码中使用
const hoovik = require('hoovik');
const result = await hoovik.run(options);
console.log(result);
# hoovik 配置说明 # 查看配置选项 hoovik --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export HOOVIK_CONFIG="/path/to/config.yml"
<br/>
<img src="docs/hoovik-header.svg" width="900" alt="Hoovik — Video meetings that think. In real time." />
<br/><br/>
<p align="center"> <a href="https://github.com/AnupamKumar-1/Hoovik/stargazers"><img src="https://img.shields.io/github/stars/AnupamKumar-1/Hoovik?style=for-the-badge&logo=github&color=7F77DD&logoColor=white" alt="Stars" /></a> <a href="https://github.com/AnupamKumar-1/Hoovik/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/AnupamKumar-1/Hoovik/ci.yml?style=for-the-badge&label=CI" alt="CI" /></a> <img src="https://img.shields.io/badge/License-MIT-534AB7?style=for-the-badge" /> <img src="https://img.shields.io/badge/PRs-Welcome-1D9E75?style=for-the-badge" />
</p>
<p align="center"> <img src="https://img.shields.io/badge/WebRTC-P2P_Video-FF6B35?style=for-the-badge&logo=webrtc&logoColor=white" /> <img src="https://img.shields.io/badge/Emotion_AI-Real--Time_Inference-7C3AED?style=for-the-badge&logo=pytorch&logoColor=white" /> <img src="https://img.shields.io/badge/Transcription-Whisper_+_LLM-0EA5E9?style=for-the-badge&logo=openai&logoColor=white" /> <img src="https://img.shields.io/badge/RAG_Q%26A-Semantic_Search-10B981?style=for-the-badge" /> </p>
<br/>
If Hoovik has been useful, please give it a ⭐ — it takes 2 seconds and means the world.
<br/>
<a href="https://hoovik.onrender.com"> <img src="https://img.shields.io/badge/Live_Demo-hoovik.onrender.com-000000?style=for-the-badge&logo=render&logoColor=white" alt="Live Demo" /> </a>
<br/><br/>

</div>
---
| Area | What was built |
|---|---|
| **WebRTC signalling** | SDP/ICE relay over Socket.IO; Redis adapter fans events across 3 pm2 processes; distributed join lock (SET NX PX 10000 + Lua CAS) serialises concurrent joins |
| **Multimodal emotion inference** | MediaPipe (136 landmarks + blendshapes + head pose) + Wav2Vec2 → EmotionTransformer + XGBoost (temp-calibrated) + per-modality IsolationForest anomaly detection → EMA (α=0.65); graceful both/audio_only/video_only modality fallback; ~300–500 ms P50 |
| **Browser media pipeline** | AudioWorklet + AnalyserNode for RMS-gated noise detection; MediaRecorder per participant; SSRC-based active speaker with RMS fallback |
| **Async transcript pipeline** | HTTP 202 immediately; background: ffmpeg → Whisper (small) → segment merging → DistilRoBERTa per-segment emotion → build_intelligent_summary → HTTP POST callback (3 retries: 5 s → 15 s → 30 s on network/5xx; 4xx not retried) |
| **Multi-process backend** | 3 pm2 instances via @socket.io/redis-adapter; participant map as Redis Hash (HSET/HDEL per event); no in-process room state |
| **Auth & rate limiting** | JWT + HttpOnly refresh token rotation; Redis Lua INCR+EXPIRE per-IP and per-username; account lockout after 10 failed logins (900 s TTL); uniform 401 prevents username enumeration |
| **AI summary** | generateAiSummaryService accepts emotionData/emotionNames from browser; buildGroqPrompt annotates each Whisper segment with matched live facial/audio emotion via buildSpeakerLiveMap; returns discrepancies[] and live_dominant_emotion per speaker; Groq model llama-3.1-8b-instant; rate-limited 2× per 2 hours |
| **RAG pipeline** | Transcripts chunked (segment-based or sliding-window, 600 tokens, 100 overlap) → Nomic nomic-embed-text-v1.5 embeddings cached in Redis (7-day TTL) → BullMQ background indexing → MongoDB $vectorSearch + MMR reranking (λ=0.6, top-5) → Groq llama-3.3-70b-versatile with 30-message session history; SSE streaming |
| **Redis test suite** | 25 tests covering distributed cache, locks, rate limiting, pub/sub, batch ops, reconnection recovery; CI runs 20 via npm run test:redis:ci |
---
chmod +x dev.sh # one-time
./dev.sh # starts all 4 services with colour-coded output
| Prefix | Service | Port |
|---|---|---|
FRONTEND | React SPA | 3000 |
BACKEND | Node.js / Express | 8000 |
EMOTION | FastAPI emotion inference | 5002 |
TRANSCRIPT | FastAPI transcription | 5001 |
Start MongoDB and Redis first. Python venvs must exist atemotion_service/venvandtranscript_service/venv—dev.shinvokes them directly via./emotion_service/venv/bin/pythonand./transcript_service/venv/bin/python.Ctrl+CsendsSIGINTand kills all child processes cleanly. Windows:dev.shis a bash script. Use WSL2 (recommended), Git Bash, or start each service manually in four separate terminals — seedocs/CONTRIBUTING.mdfor the PowerShell commands.
GET /health → 200 OK if all models loaded
GET /ready → 200 OK if service is accepting connections
GET /stats → live performance dashboard (browser)
GET /stats/json → machine-readable P50/P90/P95 + participant count
</details>
<br/>
<details> <summary><strong>📝 Transcript Service — AI summaries & insights delivered post-meeting</strong></summary>
<br/>
Hoovik's post-meeting pipeline — every meeting is automatically transcribed, per-segment emotion is classified, and a Groq LLM generates a structured summary with a discrepancy report that flags where what someone said didn't match how they felt.
POST /api/v1/transcripts/:id/summary
Content-Type: application/json
{ "emotionData": {...}, "emotionNames": {...} }
Response:
{
"summary": "...",
"key_points": ["..."],
"discrepancies": [
{
"speaker": "Alice",
"segment": "That timeline works for me.",
"nlp_emotion": "positive",
"live_emotion": "stressed"
}
],
"insights": {
"dominant_emotion": "neutral",
"emotion_distribution": { "neutral": 60, "joy": 25, "anger": 15 },
"speaker_stats": {
"Alice": { "turns": 12, "dominant_emotion": "neutral", "word_count": 342 }
},
"top_topics": ["deadline", "budget", "Q3"],
"speaking_pace_wpm": 148
}
}
Note: After the meeting ends, the frontend polls for transcript availability using exponential backoff — delays of 5 s → 10 s → 20 s → 40 s (±20% jitter), then repeating at 40-second intervals up to a 10-minute wall clock cap. No fixed polling interval or fixed attempt count is used. Summary generation is rate-limited to 2 requests per 2 hours per transcript.
POST /process_meeting
Content-Type: multipart/form-data
audio_files[]: <blob> # one file per speaker
meeting_code: "ABC123"
speaker_map: {"alice": "Alice"} # filename-base → display name
x-host-secret: <secret>
x-user-token: <jwt> # optional
Returns HTTP 202 immediately. Processing happens in the background.
创新性的分布式会议智能平台
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:霍维克 的核心功能完整,质量优秀。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | Hoovik |
| Topics | ai分布式系统情感识别FastAPILLMJavaScript |
| GitHub | https://github.com/AnupamKumar-1/Hoovik |
| License | MIT |
| 语言 | JavaScript |
收录时间:2026-06-01 · 更新时间:2026-06-01 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。