项目简介
智能会议记录与分析工具,能够将音视频内容转换为文本,同时识别不同发言人,生成结构化会议报告
特点
🎯转录和分类:将音频/视频内容转换为文本,同时识别不同的说话者
🎭智能说话人识别:尽可能通过姓名和角色识别说话人
📊会议报告:生成包含要点、行动项目和参与者资料的结构化报告
🎬视频分析:提取并分析视频会议中的视觉信息,了解演示何时开始播放
⚡多个处理层:从预算友好型到高级处理选项
🔄稳健的处理:通过自动分块和适当的清理来处理长时间的会议
📁灵活的输出:带有可选中间输出的 Markdown 格式的转录本和报告
🏃 快速入门
# Set your Gemini API key
export GEMINI_API_KEY=your_key_here
# Run on a meeting recording
npx offmute path/to/your/meeting.mp4
📦 安装
作为 CLI 工具
npx offmute <Meeting_Location> <options>
作为一个包
npm install offmute
如果有bunx
或bun
,效果会更快!
💻 用法
命令行界面
npx offmute <input-file>
选项:
-t, --tier <tier>
:处理层(第一层、业务层、经济层、预算层)[默认值:“业务”]-a, --all
: 保存所有中间输出-sc, --screenshot-count <number>
:要提取的屏幕截图数量[默认值:4]-ac, --audio-chunk-minutes <number>
:音频块的长度(以分钟为单位)[默认值:10]-r, --report
: 生成结构化会议报告-rd, --reports-dir <path>
:报告输出的自定义目录
处理层
First Tier (
first
):适用于所有操作的 Pro 模型业务层(
business
):Pro 用于描述,Flash 用于转录Economy Tier (
economy
):适用于所有操作的 Flash 模型预算层
budget
用于描述的 Flash,用于转录的 8B
作为模块
import {
generateDescription,
generateTranscription,
generateReport,
} from "offmute";
// Generate description and transcription
const description = await generateDescription(inputFile, {
screenshotModel: "gemini-1.5-pro",
audioModel: "gemini-1.5-pro",
mergeModel: "gemini-1.5-pro",
showProgress: true,
});
const transcription = await generateTranscription(inputFile, description, {
transcriptionModel: "gemini-1.5-pro",
showProgress: true,
});
// Generate a structured report
const report = await generateReport(
description.finalDescription,
transcription.chunkTranscriptions.join("\n\n"),
{
model: "gemini-1.5-pro",
reportName: "meeting_summary",
showProgress: true,
}
);
🔧 高级用法
中间输出
当使用-a
标志运行时,offmute 会保存中间处理文件:
input_file_intermediates/
├── screenshots/ # Video screenshots
├── audio/ # Processed audio chunks
├── transcription/ # Per-chunk transcriptions
└── report/ # Report generation data
定制块尺寸
调整不同内容类型的处理:
for presentations Longer chunks
offmute presentation.mp4 -ac 20
# More screenshots for visual-heavy content
offmute workshop.mp4 -sc 8
⚙️ 它是如何运作的
offmute 使用多级管道:
内容分析
提取视频关键时刻截图
将音频分成可处理的片段
生成视觉和音频内容的初始描述
转录和二值化
通过上下文感知处理音频块
识别并标记说话者
保持跨块的对话流
报告生成(Spreadfill)
使用独特的“Spreadfill”技术:
生成带有章节标题的报告结构
使用完整上下文独立填充每个部分
确保叙述连贯,同时保持详细的覆盖范围
Spreadfill 铺展填充技术
Spreadfill 方法有助于保持一致性,同时允许详细分析:
// 1. Generate structure
const structure = await generateHeadings(description, transcript);
// 2. Fill sections independently
const sections = await Promise.all(
structure.sections.map((section) => generateSection(section, fullContext))
);
// 3. Combine into coherent report
const report = combineResults(sections);
🛠️要求
Node.js 14 或更高版本
ffmpeg 安装在您的系统上
Google Gemini API 密钥
项目链接
https://github.com/SouthBridgeAI/offmute
扫码加入技术交流群,备注「开发语言-城市-昵称」
合作请注明
关注「GitHubStore」公众号