别再为会议记录头疼了!这款开源AI会议助手,让团队协作效率直接翻倍
在远程办公成为常态的今天,会议记录混乱、信息同步困难、关键决策难以追踪等问题困扰着无数团队。你是否也有过这样的经历:开完会后,重要决策散落在各种聊天记录里;回头想找某个讨论点,却怎么也翻不到;团队成员因为没参会而错过关键信息?
今天要介绍的这款开源项目 Meetily,正是为了解决这些痛点而生。它是 Zackriya-Solutions 团队打造的一款智能会议助手,能够帮助团队高效管理会议内容、自动提取关键信息、确保每个成员都能及时了解会议动态。
为什么值得关注 / 为什么值得关注
在深入了解 Meetily 之前,让我们先思考一个问题:为什么一个好的会议管理工具如此重要?
时间成本的浪费是惊人的。据统计,普通职场人每周花费在会议上的时间平均超过 10 小时,而其中近 40% 的时间被浪费在重复讨论已做过的决定、等待迟到人员、或是因为信息不对称导致的无效沟通上。
Meetily 的核心价值体现在以下几个方面:
一站式会议管理体验
传统的会议工具往往需要组合使用多个软件——日程安排用一款工具、会议视频用另一款、记录用第三款、任务追踪再用第四款。这种碎片化的体验不仅增加了学习成本,更导致了信息的分散和丢失。Meetily 试图打造一个统一平台,让你可以在同一个界面完成从会议创建到任务追踪的全部流程。
AI 驱动的智能分析
这不仅仅是一个简单的记录工具。它内置的 AI 能力可以自动识别会议中的关键决策、行动项、待解决问题,甚至能分析出会议的效率指标。对于经常需要回顾会议内容的团队来说,这项功能简直是救星。
开源可定制
作为开源项目,Meetily 提供了完整的代码库和详细的文档。对于有技术能力的团队,你可以根据自身需求进行二次开发,将会议助手深度集成到现有的工作流程中。这种灵活性是商业软件很难提供的。
团队协作优先
Meetily 的设计理念是让每个团队成员都能平等地获取会议信息。即使你因为时区差异或日程冲突无法参加实时会议,也能通过清晰的会议记录和智能摘要快速了解讨论内容和结果。
环境搭建 / 环境搭建
现在让我们开始动手实践。首先需要完成环境搭建,这是一切的基础。
系统要求
Meetily 基于 Python 开发,支持主流操作系统。在开始之前,请确保你的系统满足以下要求:
- Python 3.8 或更高版本
- 至少 4GB 可用内存
- 稳定的网络连接(用于部分功能的云端处理)
安装步骤
第一步:安装 Python 环境
如果你的系统还没有安装 Python,建议使用 Anaconda 或 pyenv 进行版本管理。以 macOS 为例:
# 使用 Homebrew 安装 Python
brew install python3
# 验证安装
python3 --version
第二步:克隆项目仓库
# 使用 Git 克隆仓库
git clone https://github.com/Zackriya-Solutions/meetily.git
# 进入项目目录
cd meetily
第三步:创建虚拟环境(推荐)
为了避免依赖冲突,建议使用虚拟环境:
# 创建虚拟环境
python3 -m venv meetily-env
# 激活虚拟环境
# macOS / Linux
source meetily-env/bin/activate
# Windows
# meetily-env\Scripts\activate
第四步:安装依赖包
# 安装项目依赖
pip install -r requirements.txt
如果 requirements.txt 中包含的依赖较多,安装可能需要几分钟时间。如果遇到网络问题,可以尝试使用国内镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
第五步:配置环境变量
Meetily 的某些功能需要 API 密钥才能使用。创建配置文件:
# 复制配置模板
cp .env.example .env
# 编辑配置文件,填入你的 API 密钥
nano .env
在 .env 文件中,你需要配置以下内容:
# API 密钥配置
OPENAI_API_KEY=你的OpenAI密钥
# 如果使用其他 AI 服务,配置相应的密钥
# 会议数据存储路径
MEETING_DATA_PATH=./data/meetings
# 日志级别
LOG_LEVEL=INFO
# 语言设置(支持中文)
LANGUAGE=zh-CN
第六步:验证安装
安装完成后,运行以下命令验证一切正常:
python -m meetily --version
# 或者
python -m meetily check-env
如果看到版本号或环境检查通过的提示,说明安装成功。
常见安装问题及解决方案
问题一:pip 安装时报错 Microsoft Visual C++ 14.0 is required
解决方案:Windows 用户需要安装 Visual Studio Build Tools。访问 Microsoft 官网下载安装包,勾选”使用 C++ 的桌面开发”选项。
问题二:安装依赖时提示 Connection timeout
解决方案:检查网络连接,或使用代理。如果公司网络有限制,可以尝试配置 pip 代理:
pip config set global.proxy http://代理地址:端口
问题三:ModuleNotFoundError: No module named 'meetily'
解决方案:确保你进入了正确的项目目录,且虚拟环境处于激活状态。如果是在开发模式下使用,执行:
pip install -e .
核心功能详解 / 核心功能详解
Meetily 的功能设计围绕会议全生命周期展开,从会前准备到会后追踪,每一个环节都有相应的工具支持。
会议创建与日程管理
Meetily 提供了直观的会议创建流程。你可以通过命令行或配置文件快速创建一个新会议:
# 创建新会议示例
from meetily import Meeting
# 初始化会议对象
new_meeting = Meeting(
title="产品迭代计划讨论",
date="2024-01-15",
time="14:00",
duration=60, # 会议时长(分钟)
participants=["Alice", "Bob", "Charlie"],
agenda=[
"Q1 迭代目标回顾",
"技术方案评审",
"资源分配讨论",
"风险评估"
]
)
# 保存会议信息
new_meeting.save()
# 生成会议邀请(可用于邮件或日历应用)
invite_content = new_meeting.generate_invite()
print(invite_content)
智能会议记录
这是 Meetily 最核心的功能。当你启用记录模式后,系统会处理多种输入源:
# 方式一:处理音频文件
from meetily import TranscriptProcessor
processor = TranscriptProcessor()
# 处理已录制的会议音频
transcript = processor.process_audio(
file_path="./recordings/meeting_20240115.m4a",
language="zh-CN" # 指定语言以提高识别准确率
)
# 方式二:实时处理(需要麦克风权限)
real_time_transcript = processor.start_realtime_transcription(
sample_rate=16000,
language="zh-CN"
)
AI 智能摘要生成
会议结束后,最重要的工作是生成清晰可读的会议纪要。Meetily 内置的摘要生成器可以自动完成这项工作:
from meetily import SummaryGenerator
# 基于转录文本生成摘要
generator = SummaryGenerator()
# 生成多层次摘要
summary = generator.generate(
transcript=transcript,
summary_type="detailed", # 可选: brief, standard, detailed
include_action_items=True,
include_decisions=True,
include_questions=True
)
# 访问摘要的不同部分
print("会议概要:")
print(summary.overview)
print("\n关键决策:")
for decision in summary.decisions:
print(f"- {decision}")
print("\n待办事项:")
for item in summary.action_items:
print(f"[ ] {item.task} (负责人: {item.assignee}, 截止: {item.deadline})")
生成的摘要会自动包含以下结构化信息:
- 会议概览:用一段话概括会议的核心议题和结论
- 关键决策:明确列出会议上做出的决定
- 行动项:每个任务的负责人、具体内容和截止时间
- 待解决问题:需要在后续会议中继续讨论的问题
- 时间线标记:关键讨论点的时间戳,便于回溯
关键词与主题提取
from meetily import TopicExtractor
extractor = TopicExtractor()
# 从会议内容中提取关键主题
topics = extractor.extract(
transcript=transcript,
max_topics=5, # 最多提取的主题数量
include_keywords=True
)
print("本次会议涉及的主要主题:")
for i, topic in enumerate(topics, 1):
print(f"{i}. {topic.name}")
print(f" 相关关键词:{', '.join(topic.keywords)}")
print(f" 提及次数:{topic.frequency}")
情感与参与度分析
对于团队管理者来说,了解会议的”健康度”也很重要。Meetily 提供了简单的情感分析功能:
from meetily import SentimentAnalyzer
analyzer = SentimentAnalyzer()
# 分析会议情感倾向
sentiment_report = analyzer.analyze(
transcript=transcript,
by_participant=True # 按参与者分组分析
)
print("整体会议情感倾向:", sentiment_report.overall_sentiment)
print("\n各成员参与度:")
for participant, stats in sentiment_report.participation_stats.items():
print(f" {participant}: 发言{stats.speaking_time}分钟, "
f"提问{stats.questions_asked}次, "
f"情感倾向{stats.dominant_sentiment}")
任务追踪系统
会议中产生的行动项会自动进入追踪系统:
from meetily import TaskTracker
tracker = TaskTracker()
# 获取所有未完成任务
pending_tasks = tracker.get_pending_tasks(
assignee="Alice",
overdue_only=False
)
print(f"Alice 的待办任务 ({len(pending_tasks)} 项):")
for task in pending_tasks:
status = "⚠️ 已过期" if task.is_overdue else "📅 进行中"
print(f"{status} {task.title}")
print(f" 来源会议:{task.source_meeting}")
print(f" 截止日期:{task.deadline}")
实战教程 / 实战教程
现在让我们通过一个完整的实战案例,将所有功能串联起来。
场景设定
假设你是某创业公司的产品经理,需要组织一次产品迭代规划会议。参会者包括你(产品经理)、技术负责人、市场同事和设计师。会议需要讨论下个季度的产品方向和技术实现方案。
第一步:准备会议
# meetily_quickstart.py
# 产品迭代规划会议准备脚本
from meetily import Meeting
from datetime import datetime, timedelta
def prepare_product_meeting():
"""准备产品迭代规划会议"""
# 设置会议基本信息
meeting = Meeting(
title="Q2 产品迭代规划会议",
date=datetime.now().strftime("%Y-%m-%d"),
time="14:00",
duration=90, # 1.5小时的深度讨论
participants=[
Participant("张三", Role.PRODUCT_MANAGER),
Participant("李四", Role.TECH_LEAD),
Participant("王五", Role.MARKETING),
Participant("赵六", Role.DESIGNER)
],
agenda=[
AgendaItem("Q1 产品回顾", duration=15, presenter="张三"),
AgendaItem("竞品分析分享", duration=15, presenter="王五"),
AgendaItem("技术可行性评估", duration=25, presenter="李四"),
AgendaItem("设计方案评审", duration=20, presenter="赵六"),
AgendaItem("资源与时间线确认", duration=15, presenter="张三")
],
meeting_type=MeetingType.PRODUCT_PLANNING
)
# 设置会议目标
meeting.set_objectives([
"明确 Q2 产品的核心功能优先级",
"对齐技术方案与产品需求的匹配度",
"确认团队分工和里程碑计划"
])
# 生成预读材料
meeting.generate_pre_read_materials()
# 保存并打印会议信息
meeting.save()
print("会议创建成功!")
print(meeting.to_string())
return meeting
# 执行准备
meeting = prepare_product_meeting()
运行结果:
python meetily_quickstart.py
会议创建成功!
====================================
Q2 产品迭代规划会议
====================================
时间:2024-01-15 14:00 - 15:30 (90分钟)
地点:会议室A / 线上会议链接
参会人员:张三(主持人)、李四、王五、赵六
议程安排:
[14:00-14:15] Q1 产品回顾 (张三)
[14:15-14:30] 竞品分析分享 (王五)
[14:30-14:55] 技术可行性评估 (李四)
[14:55-15:15] 设计方案评审 (赵六)
[15:15-15:30] 资源与时间线确认 (张三)
会议目标:
✓ 明确 Q2 产品的核心功能优先级
✓ 对齐技术方案与产品需求的匹配度
✓ 确认团队分工和里程碑计划
预读材料已生成至: ./pre-read/q2_planning.md
第二步:会议进行时的实时辅助
会议过程中,Meetily 可以作为实时助手运行:
# realtime_assistant.py
# 会议实时辅助脚本
from meetily import RealtimeAssistant
from meetily.config import AssistantConfig
def start_meeting_assistant(meeting_id):
"""启动会议实时辅助"""
# 配置实时助手
config = AssistantConfig(
# 实时转录配置
transcription=dict(
model="whisper-1",
language="zh-CN",
enable_punctuation=True
),
# 实时摘要配置
live_summary=dict(
update_interval=300, # 每5分钟更新一次摘要
max_summary_length=500
),
# 行动项自动识别
action_detection=dict(
keywords=["需要", "应该", "负责", "完成", "截止"],
confidence_threshold=0.7
),
# 决策识别
decision_detection=dict(
patterns=["决定", "确认", "通过", "同意", "采用"]
)
)
# 初始化助手
assistant = RealtimeAssistant(meeting_id, config)
# 启动实时处理
print("会议实时辅助已启动...")
print("按 Ctrl+C 可暂停会议并查看当前摘要")
assistant.start()
# 主循环:监听用户输入
try:
while assistant.is_running:
command = input("\n命令 (help 查看可用命令): ")
if command == "help":
print("""
可用命令:
summary - 查看当前会议摘要
actions - 查看已识别的行动项
decisions - 查看已识别的决策
timer - 查看时间提醒
note - 添加个人笔记
pause - 暂停实时处理
resume - 恢复实时处理
stop - 结束会议并生成最终报告
""")
elif command == "summary":
current = assistant.get_current_summary()
print("\n" + "="*50)
print("当前会议摘要")
print("="*50)
print(current)
elif command == "actions":
actions = assistant.get_action_items()
print(f"\n已识别 {len(actions)} 个行动项:")
for i, action in enumerate(actions, 1):
print(f"{i}. {action}")
elif command == "decisions":
decisions = assistant.get_decisions()
print(f"\n已识别 {len(decisions)} 个决策:")
for i, decision in enumerate(decisions, 1):
print(f"{i}. {decision}")
elif command == "timer":
agenda = assistant.get_remaining_agenda()
print("\n议程时间提醒:")
for item in agenda:
print(f" {item['name']} - 剩余 {item['remaining_minutes']} 分钟")
elif command == "note":
note = input("输入你的笔记:")
assistant.add_note(note, author="张三")
print("笔记已添加 ✓")
elif command == "pause":
assistant.pause()
print("实时处理已暂停")
elif command == "resume":
assistant.resume()
print("实时处理已恢复")
elif command == "stop":
confirm = input("确定要结束会议吗?(y/n): ")
if confirm.lower() == 'y':
assistant.stop()
break
except KeyboardInterrupt:
print("\n正在暂停会议...")
assistant.pause()
print("会议已暂停。使用 'resume' 命令可继续。")
# 启动助手
start_meeting_assistant("meeting_20240115_001")
第三步:会后处理与报告生成
会议结束后,完整的报告生成流程:
# post_meeting_report.py
# 会后报告生成脚本
from meetily import (
Meeting,
TranscriptProcessor,
SummaryGenerator,
TopicExtractor,
ActionItemExtractor,
ReportGenerator
)
from meetily.exporters import MarkdownExporter, PDFExporter
def generate_full_report(meeting_id):
"""生成完整的会议报告"""
print("="*60)
print("开始生成会议报告")
print("="*60)
# 步骤一:加载会议信息
meeting = Meeting.load(meeting_id)
print(f"\n[1/5] 加载会议信息: {meeting.title}")
# 步骤二:处理转录(如果有音频文件)
print("\n[2/5] 处理会议转录...")
processor = TranscriptProcessor()
# 查找对应的音频文件
audio_path = f"./recordings/{meeting_id}.m4a"
transcript = processor.process_audio(audio_path, language="zh-CN")
print(f" 转录完成,识别文字 {transcript.word_count} 字")
print(f" 识别准确率: {transcript.confidence:.1%}")
# 步骤三:生成结构化摘要
print("\n[3/5] 生成会议摘要...")
summary_gen = SummaryGenerator()
summary = summary_gen.generate(
transcript=transcript,
summary_type="detailed",
include_action_items=True,
include_decisions=True,
include_questions=True,
include_topics=True,
language="zh-CN"
)
# 步骤四:提取结构化信息
print("\n[4/5] 提取结构化信息...")
# 提取行动项
action_extractor = ActionItemExtractor()
action_items = action_extractor.extract(
transcript=transcript,
summary=summary
)
# 为每个行动项设置负责人和截止日期
for item in action_items:
print(f" 行动项: {item.description}")
if item.assignee is None:
assignee = input(f" - 负责人: ")
deadline = input(f" - 截止日期: ")
item.assign(assignee, deadline)
# 步骤五:生成完整报告
print("\n[5/5] 生成完整报告...")
report_gen = ReportGenerator()
report = report_gen.generate(
meeting=meeting,
transcript=transcript,
summary=summary,
action_items=action_items
)
# 导出为不同格式
print("\n正在导出报告...")
# Markdown 格式(适合阅读和分享)
md_exporter = MarkdownExporter()
md_path = f"./reports/{meeting_id}_report.md"
md_exporter.export(report, md_path)
print(f" ✓ Markdown 报告已保存: {md_path}")
# PDF 格式(适合打印和归档)
try:
pdf_exporter = PDFExporter()
pdf_path = f"./reports/{meeting_id}_report.pdf"
pdf_exporter.export(report, pdf_path)
print(f" ✓ PDF 报告已保存: {pdf_path}")
except ImportError:
print(" ⚠️ PDF 导出需要安装额外依赖,跳过 PDF 生成")
# HTML 格式(适合内网展示)
html_exporter = HTMLExporter()
html_path = f"./reports/{meeting_id}_report.html"
html_exporter.export(report, html_path)
print(f" ✓ HTML 报告已保存: {html_path}")
# 打印报告预览
print("\n" + "="*60)
print("报告预览")
print("="*60)
print(report.to_preview())
return report
# 生成报告
report = generate_full_report("meeting_20240115_001")
生成的报告结构如下:
# Q2 产品迭代规划会议报告
**会议时间**: 2024-01-15 14:00 - 15:30
**参会人员**: 张三(主持)、李四、王五、赵六
**记录人**: AI 自动生成
---
## 会议概要
本次会议围绕 Q2 产品迭代规划展开讨论。会上回顾了 Q1 产品表现,分析了竞品动态,评估了三个核心功能的技术可行性和设计方案,最终确定了 Q2 的工作重点和时间安排。
---
## 关键决策
1. **采用敏捷迭代模式**:Q2 采用两周一个 Sprint 的开发节奏
2. **优先开发「智能推荐」功能**:作为核心差异化能力
3. **设计稿 V2 版本通过评审**:进入开发准备阶段
4. **时间线调整**:上线日期延后一周至 4 月 15 日
---
## 行动项
| 任务 | 负责人 | 截止日期 | 状态 |
|------|--------|----------|------|
| 完成「智能推荐」算法详细设计文档 | 李四 | 2024-01-22 | ⏳ 进行中 |
| 制作「智能推荐」原型Demo | 赵六 | 2024-01-20 | ⏳ 进行中 |
| 整理竞品分析报告 | 王五 | 2024-01-18 | ✅ 已完成 |
| 召开技术方案评审会议 | 李四 | 2024-01-25 | 📅 待开始 |
| 更新产品Roadmap文档 | 张三 | 2024-01-19 | ⏳ 进行中 |
---
## 待解决问题
1. 推荐算法需要的历史数据量与数据团队的存储成本如何平衡?
2. V2 设计方案中涉及的动画效果,技术实现复杂度评估待确认
---
## 主题分析
**主题1:智能推荐功能**
- 关键词:算法、个性化、用户画像、数据
- 提及频率:高(主要讨论焦点)
**主题2:迭代节奏**
- 关键词:Sprint、敏捷、里程碑、发布
- 提及频率:中
**主题3:设计一致性**
- 关键词:设计规范、组件库、品牌调性
- 提及频率:中
第四步:任务追踪与提醒
# task_followup.py
# 任务追踪与跟进脚本
from meetily import TaskTracker, ReminderService
from datetime import datetime, timedelta
def setup_task_followup():
"""设置任务追踪和提醒"""
tracker = TaskTracker()
reminders = ReminderService()
# 获取本次会议产生的所有行动项
tasks = tracker.get_tasks_by_meeting("meeting_20240115_001")
print(f"共 {len(tasks)} 个行动项需要追踪\n")
# 设置智能提醒
for task in tasks:
# 根据任务紧急程度设置提醒
days_until_deadline = (task.deadline - datetime.now()).days
if days_until_deadline <= 1:
# 紧急任务:提前1小时提醒
reminder_time = task.deadline - timedelta(hours=1)
frequency = "每小时"
elif days_until_deadline <= 3:
# 短期任务:提前1天提醒
reminder_time = task.deadline - timedelta(days=1)
frequency = "每天"
else:
# 长期任务:提前3天和1天提醒
reminder_time = task.deadline - timedelta(days=3)
frequency = "每3天"
# 创建提醒
reminder = reminders.create(
task_id=task.id,
remind_at=reminder_time,
message=f"【行动项提醒】{task.description}",
frequency=frequency
)
print(f"✓ 已设置提醒: {task.description}")
print(f" 负责人: {task.assignee}")
print(f" 截止: {task.deadline.strftime('%Y-%m-%d %H:%M')}")
print(f" 提醒频率: {frequency}\n")
# 设置定期汇总报告
print("\n设置定期汇总...")
reminders.schedule_summary(
schedule="weekly", # 每周汇总
recipients=["product-team@company.com"],
include_completed=True,
include_pending=True,
include_overdue=True
)
print("✓ 已设置每周汇总报告")
# 执行
setup_task_followup()
常见使用场景 / 常见使用场景
Meetily 的设计使其能够适应多种工作场景。以下是几个典型的应用案例。
场景一:敏捷团队站会记录
对于采用敏捷开发的团队,每日的站会(Stand-up)虽然时间短,但信息密度高。Meetily 可以快速记录每个成员的进度更新:
# daily_standup.py
# 每日站会快速记录
from meetily import QuickMeeting, StandupTemplate
def run_daily_standup():
"""运行每日站会"""
# 创建快速站会模式
standup = QuickMeeting(
template=StandupTemplate.DAILY_STANDUP,
participants=["Alice", "Bob", "Charlie"]
)
# 使用预设问题模板
standup.add_question("昨天完成了什么?")
standup.add_question("今天计划做什么?")
standup.add_question("有什么阻碍?")
# 启动简短记录模式
standup.start()
# 15分钟后自动结束
standup.auto_end(duration_minutes=15)
# 生成简洁摘要
summary = standup.generate_brief_summary()
# 输出格式化的站会记录
print(summary.to_standup_format())
run_daily_standup()
生成的站会记录简洁明了:
📅 每日站会 - 2024-01-15
👤 Alice:
✓ 完成用户模块API对接
✓ 修复登录页面样式问题
○ 继续开发订单管理页面
⚠️ 等待UI设计稿更新
👤 Bob:
✓ 完成数据库优化方案
✓ 代码评审
○ 实施缓存策略
⚠️ 需要后端同事确认配置参数
👤 Charlie:
✓ 完成测试用例编写
○ 继续自动化测试覆盖
✓ 无阻碍
⏭️ 明日跟进事项:
• UI设计稿更新后,Alice继续订单页面开发
• 确认缓存配置后,Bob开始实施
场景二:客户需求会议
与客户沟通需求时,准确记录客户意见至关重要。Meetily 提供了专门的客户会议模式:
# client_meeting.py
# 客户需求会议处理
from meetily import ClientMeeting
def process_client_meeting():
"""处理客户需求会议"""
client_meeting = ClientMeeting(
client_name="ABC公司",
client_contacts=["张经理", "李总监"],
project_name="企业管理系统",
meeting_type=ClientMeetingType.REQUIREMENTS
)
# 处理会议录音
transcript = client_meeting.process_recording(
"./recordings/client_meeting_abc.m4a"
)
# 生成客户视角的会议纪要
report = client_meeting.generate_client_report(transcript)
# 特别关注:需求变更和确认事项
print("客户确认的需求:")
for req in report.confirmed_requirements:
print(f" ✓ {req}")
print("\n客户提出的变更:")
for change in report.change_requests:
print(f" ↻ {change.description} (优先级: {change.priority})")
print("\n待澄清问题:")
for question in report.open_questions:
print(f" ? {question}")
process_client_meeting()
场景三:培训与知识分享会议
团队内部的知识分享会议同样适用 Meetily,帮助沉淀隐性知识:
# knowledge_session.py
# 知识分享会议处理
from meetily import KnowledgeSession
def process_training_session():
"""处理培训会议"""
session = KnowledgeSession(
title="新技术栈培训",
presenter="技术总监",
session_type=KnowledgeSessionType.TECHNICAL_TRAINING
)
# 识别讲解要点
transcript = session.process_recording("./recordings/training.m4a")
# 提取讲解的关键知识点
key_points = session.extract_key_points(
transcript=transcript,
min_importance=0.8
)
# 生成知识文档
doc = session.generate_knowledge_doc(key_points)
# 导出为 Markdown 格式,便于团队成员复习
with open("./knowledge/tech_stack_training.md", "w", encoding="utf-8") as f:
f.write(doc.to_markdown())
# 同时生成问答对,帮助记忆
qa_pairs = session.generate_qa_pairs(key_points)
print(f"生成了 {len(qa_pairs)} 个知识问答对")
return doc
process_training_session()
技巧与最佳实践 / 技巧与最佳实践
为了帮助你更好地使用 Meetily,这里汇总了一些实战经验和最佳实践。
提升转录准确率的技巧
会议录音的质量直接影响转录准确率。以下是几个优化建议:
麦克风选择与位置
# audio_quality_check.py
# 音频质量检查工具
from meetily import AudioQualityChecker
def check_audio_quality():
"""检查音频质量"""
checker = AudioQualityChecker()
# 检测可用麦克风
microphones = checker.list_microphones()
print("可用麦克风:")
for mic in microphones:
print(f" - {mic.name} (ID: {mic.device_id})")
# 录制测试样本
print("\n请对着麦克风说话5秒...")
test_recording = checker.record_sample(
device_id=microphones[0].device_id,
duration=5
)
# 分析音频质量
quality_report = checker.analyze(test_recording)
print(f"\n音频质量报告:")
print(f" 信噪比: {quality_report.snr:.1f} dB")
print(f" 音量: {quality_report.volume:.1f}%")
print(f" 推荐使用: {'✓ 是' if quality_report.is_acceptable else '✗ 否'}")
if not quality_report.is_acceptable:
print("\n改进建议:")
for suggestion in quality_report.suggestions:
print(f" • {suggestion}")
check_audio_quality()
一般来说:
- 选择指向性麦克风,减少环境噪音
- 麦克风距离说话者 30-50 厘米为宜
- 会议前进行简单的音频测试
多语言会议的配置
如果会议涉及多语言切换,可以使用以下配置:
# multilingual_config.py
# 多语言会议配置示例
from meetily import MultilingualConfig
config = MultilingualConfig(
# 自动语言检测
auto_detect_language=True,
detection_interval=30, # 每30秒检测一次
# 主语言配置
primary_language="zh-CN",
# 次要语言(按使用频率排序)
secondary_languages=["en-US", "ja-JP"],
# 说话者语言偏好(可预先配置)
speaker_languages={
"张三": "zh-CN",
"John": "en-US",
"田中": "ja-JP"
},
# 转录后处理
post_processing={
"auto_translate_to_primary": True,
"preserve_original": True
}
)
组织架构集成
对于中大型企业,可以将 Meetily 与现有的组织架构集成:
# organization_integration.py
# 组织架构集成示例
from meetily import OrganizationIntegration
def setup_org_integration():
"""设置组织架构集成"""
org = OrganizationIntegration()
# 从企业目录同步用户信息
org.sync_from_directory(
source="ldap", # 或 "azure_ad", "okta", "飞书", "钉钉"
config={
"server": "ldap://company.com",
"base_dn": "ou=users,dc=company,dc=com"
}
)
# 设置汇报关系(用于自动分配行动项)
org.set_reporting_structure({
"CEO": [],
"CTO": ["技术总监", "产品总监", "运营总监"],
"技术总监": ["后端负责人", "前端负责人", "测试负责人"],
"产品总监": ["产品经理A", "产品经理B"],
"运营总监": ["运营专员A", "运营专员B"]
})
# 配置会议室日历集成
org.connect_calendar(
provider="google_calendar", # 或 "outlook", "飞书日历"
auto_create_events=True,
auto_sync_attendees=True
)
print("组织架构集成完成!")
setup_org_integration()
代码片段复用
在团队中推广时,可以创建一些常用的代码片段:
# meetily_helpers.py
# 常用辅助函数
from meetily import Meeting, ActionItem
from datetime import datetime
class MeetingHelper:
"""会议辅助类"""
@staticmethod
def quick_create(title, participants, duration=60):
"""快速创建标准会议"""
return Meeting(
title=title,
date=datetime.now().strftime("%Y-%m-%d"),
time="10:00",
duration=duration,
participants=participants
)
@staticmethod
def create_weekly_sync(team_name, team_members):
"""创建周同步会议"""
return Meeting(
title=f"{team_name}周同步",
date=datetime.now().strftime("%Y-%m-%d"),
time="09:30",
duration=45,
participants=team_members,
recurring="weekly",
agenda=[
"上周任务回顾",
"本周工作安排",
"风险与问题",
"需要协助事项"
]
)
class ActionItemHelper:
"""行动项辅助类"""
@staticmethod
def create_from_text(text, meeting_id):
"""从文本自动识别行动项"""
from meetily import ActionItemExtractor
extractor = ActionItemExtractor()
items = extractor.extract_from_text(text)
# 自动关联到会议
for item in items:
item.source_meeting = meeting_id
return items
@staticmethod
def send_reminder_batch(task_ids, message=None):
"""批量发送提醒"""
from meetily import ReminderService
reminders = ReminderService()
for task_id in task_ids:
reminders.send(
task_id=task_id,
message=message or f"提醒:您有一个待处理的任务"
)
# 使用示例
if __name__ == "__main__":
# 快速创建会议
meeting = MeetingHelper.quick_create(
title="需求评审",
participants=["产品经理", "开发", "测试"],
duration=90
)
# 创建周同步
weekly = MeetingHelper.create_weekly_sync(
team_name="前端团队",
team_members=["张三", "李四", "王五", "赵六"]
)
进阶功能 / 进阶功能
对于有更高要求的用户,Meetily 还提供了一些进阶功能。
自定义 AI 模型
如果你的团队有特定的领域知识,可以使用自定义模型:
# custom_model.py
# 自定义 AI 模型配置
from meetily import AIModelConfig, ModelRegistry
def setup_custom_model():
"""设置自定义 AI 模型"""
# 注册自定义模型
registry = ModelRegistry()
# 方式一:使用本地模型
local_model = AIModelConfig(
name="公司专属模型",
provider="local",
model_path="./models/custom_model",
capabilities=["summarization", "entity_extraction"],
finetuned_topics=["产品需求", "技术评审", "项目管理"]
)
registry.register("company_model", local_model)
# 方式二:使用微调的云端模型
cloud_model = AIModelConfig(
name="会议分析专家",
provider="openai",
model_name="gpt-4",
api_key="你的API密钥",
system_prompt="""
你是一位专业的会议分析师,擅长从会议记录中提取:
1. 关键决策及其依据
2. 可执行的下一步行动
3. 潜在的风险点
4. 需要跟进的问题
请用专业、简洁的语言生成会议纪要。
""",
temperature=0.3 # 较低的随机性保证一致性
)
registry.register("meeting_expert", cloud_model)
# 在会议处理中使用自定义模型
from meetily import SummaryGenerator
generator = SummaryGenerator()
summary = generator.generate(
transcript=transcript,
model="meeting_expert" # 使用注册的自定义模型
)
return summary
summary = setup_custom_model()
WebSocket 实时同步
对于需要多人实时协作查看会议进度的场景:
# realtime_websocket.py
# WebSocket 实时同步服务
from meetily import WebSocketServer, CollaborationSession
def start_collaboration_mode(meeting_id):
"""启动协作模式"""
# 初始化 WebSocket 服务器
server = WebSocketServer(
host="0.0.0.0",
port=8765,
auth_required=True
)
# 创建协作会话
session = CollaborationSession(
meeting_id=meeting_id,
server=server
)
# 设置事件处理器
@session.on_transcript_update
def handle_transcript_update(data):
"""处理实时转录更新"""
print(f"[{data['speaker']}] {data['text']}")
@session.on_action_item_created
def handle_new_action_item(item):
"""处理新行动项"""
print(f"📝 新行动项: {item.description}")
print(f" 负责人: {item.assignee}")
@session.on_participant_join
def handle_participant_join(participant):
"""处理参与者加入"""
print(f"👤 {participant.name} 加入了会议")
# 启动服务
session.start()
print(f"协作会话已启动: ws://localhost:8765/meeting/{meeting_id}")
# 客户端连接示例
# 在浏览器或手机端连接
def client_example():
"""客户端连接示例"""
from meetily import WebSocketClient
client = WebSocketClient(
server_url="ws://localhost:8765/meeting/meeting_20240115_001",
reconnect=True,
auto_reconnect_interval=5
)
@client.on_message
def handle_message(msg):
if msg.type == "transcript":
# 更新转录显示
update_transcript_display(msg.data)
elif msg.type == "action_item":
# 更新行动项列表
update_action_items(msg.data)
elif msg.type == "summary_update":
# 更新摘要显示
update_summary(msg.data)
client.connect()
总结与相关资源 / 总结与相关资源
通过本文的详细介绍,相信你已经对 Meetily 有了全面的了解。这款开源会议助手通过 AI 技术的加持,将繁琐的会议管理工作变得简单高效。
核心价值回顾
Meetily 的主要优势可以总结为以下几点:
- 智能化:从转录到摘要、从行动项提取到任务追踪,全程 AI 驱动
- 自动化:减少人工整理工作,让你专注于更有价值的讨论
- 可扩展:开源架构支持深度定制,适应各种工作流程
- 协作性:无论是实时会议还是异步跟进,都能确保信息透明
适用人群
Meetily 特别适合以下场景的用户:
- 需要频繁组织会议的项目经理和产品经理
- 希望提升会议效率的研发团队
- 需要完整审计跟踪的法务和合规团队
- 任何希望减少”会议疲劳”的职场人士
下一步行动
想要开始使用 Meetily?建议你按照以下步骤进行:
首先,从 GitHub 仓库克隆项目并完成环境搭建。官方仓库地址:https://github.com/Zackriya-Solutions/meetily
其次,运行示例代码熟悉基本功能。项目仓库中包含了多个示例脚本,覆盖了从简单到复杂的各种使用场景。
然后,根据你的团队需求进行配置调整。建议先从会议记录和摘要生成开始使用,逐步引入其他功能。
最后,如果你有任何问题或建议,可以提交 Issue 或参与社区讨论。
相关 AI 项目推荐
如果你对 AI 驱动的生产力工具感兴趣,以下是一些相关的开源项目值得关注:
- Whisper(OpenAI):强大的语音识别模型,Meetily 的转录功能正是基于此构建
- LangChain:用于构建 AI 应用的主流框架,适合开发更复杂的 AI 工作流
- AutoGPT:自主 AI 代理项目,展示了 AI 完成任务的能力边界
- Mem:AI 知识管理工具,帮助个人和团队更好地组织和利用信息
- Notion AI:将 AI 能力集成到文档和知识库中的商业解决方案
结语
在信息爆炸的时代,高效处理会议信息是每个知识工作者都需要面对的挑战。Meetily 通过技术创新为这个问题提供了一个开源的解决方案。它不仅是一个工具,更是一种更高效、更专注的会议文化的推动者。
希望你能在实际工作中尝试使用 Meetily,并根据自身需求发现它更多的价值。如果本文对你有所帮助,欢迎分享给可能有同样需求的同事和朋友。
祝你的会议从此不再低效,每一次讨论都能产生价值!
评论区