项目简介
智能会议记录与分析工具,能够将音视频内容转换为文本,同时识别不同发言人,生成结构化会议报告
特点
-
🎯
转录和分类
:将音频/视频内容转换为文本,同时识别不同的说话者
-
🎭
智能说话人识别
:尽可能通过姓名和角色识别说话人
-
📊
会议报告
:生成包含要点、行动项目和参与者资料的结构化报告
-
🎬
视频分析
:提取并分析视频会议中的视觉信息,了解演示何时开始播放
-
⚡
多个处理层
:从预算友好型到高级处理选项
-
🔄
稳健的处理
:通过自动分块和适当的清理来处理长时间的会议
-
📁
灵活的输出
:带有可选中间输出的 Markdown 格式的转录本和报告
🏃 快速入门
export GEMINI_API_KEY=your_key_here
npx offmute path/to/your/meeting.mp4
📦 安装
作为 CLI 工具
npx offmute <Meeting_Location> <options>
作为一个包
如果有
bunx
或
bun
,效果会更快!
💻 用法
命令行界面
选项:
-
-t, --tier
:处理层(第一层、业务层、经济层、预算层)[默认值:“业务”]
-
-a, --all
: 保存所有中间输出
-
-sc, --screenshot-count
:要提取的屏幕截图数量[默认值:4]
-
-ac, --audio-chunk-minutes
:音频块的长度(以分钟为单位)[默认值:10]
-
-r, --report
: 生成结构化会议报告
-
-rd, --reports-dir
:报告输出的自定义目录
处理层
-
First Tier
(
first
):适用于所有操作的 Pro 模型
-
业务层
(
business
):Pro 用于描述,Flash 用于转录
-
Economy Tier
(
economy
):适用于所有操作的 Flash 模型
-
预算层
budget
用于描述的 Flash,用于转录的 8B
作为模块
import {
generateDescription,
generateTranscription,
generateReport,
} from "offmute";
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,
});
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/
├── audio/
├── transcription/
└── report/
定制块尺寸
调整不同内容类型的处理:
# Longer chunks for presentations
offmute presentation.mp4 -ac 20
# More screenshots for visual-heavy content
offmute workshop.mp4 -sc 8
⚙️ 它是如何运作的
offmute 使用多级管道:
-
内容分析
-
提取视频关键时刻截图
-
将音频分成可处理的片段
-
生成视觉和音频内容的初始描述
转录和二值化
-
通过上下文感知处理音频块
-
识别并标记说话者
-
保持跨块的对话流
报告生成(Spreadfill)