Meeting Notes Assistant v1.0.0
功能概述
智能会议纪要助手,基于本地 Whisper 离线转写,提供:
核心功能
- 离线语音转写 - 本地 Whisper(base / small / large-v3),数据不上云,隐私安全
- 多语言支持 - 中文、英语、日语、韩语自动识别
- 结构化纪要 - 时间、议题、结论、待办、关键词、Action Items
- 智能解析 - AI 自动提取会议要点,规则解析兜底
- 文档导出 - Word / PDF 专业排版
- 历史存储 - 本地 SQLite 存储,支持关键词搜索
- 模板管理 - 简洁版、专业版、立项会、周会、月度复盘等模板
- 批量处理 - 目录级批量转写、批量纪要生成,支持递归扫描
核心优势
- ✅ 完全离线:音频文件仅在您的电脑上处理,无需网络连接
- ✅ 隐私安全:数据不上云,适用于敏感会议场景
- ✅ 零配置使用:无需申请 API 密钥,安装即用
- ✅ 高准确率:Whisper large-v3 模型准确率达 95%+
- ✅ 多领域适配:内置金融词典,支持自定义领域术语
触发词
- "整理会议纪要"
- "生成会议纪要"
- "录音转会议纪要"
- "帮我做个会议记录"
- "用立项会模板" / "用周会模板" / "用月度复盘模板"
- 直接上传音频文件、文档、飞书链接、网页链接
推荐使用流程
场景 A:录音转纪要
- 提供音频文件(.mp3 / .m4a / .wav / .ogg)
- 先转写,再生成结构化纪要
- 预览后导出 Word / PDF / 飞书 / 邮件
飞书用户快速开始:详见 FEISHU_QUICK_START.md
场景 B:文档或链接转纪要
- 提供文字稿、飞书文档链接或网页链接
- 直接生成结构化纪要
- 选择分发方式
快速上手(命令行)
1) 安装依赖
pip install -r requirements.txt
关于 Whisper 模型:
- 安装时只包含
base和small模型 large-v3模型(最高准确率,约 3GB)在首次使用时自动下载- large-v3 下载说明:首次选择 large-v3 模型时,系统会提示下载确认
- 下载大小:约 3GB
- 下载时间:5-15 分钟(取决于网络速度)
- 下载地址:https://openaipublic.azureedge.net/main/whisper/large-v3.pt
- 适用场景:专业会议、长音频、最高准确率要求
- 如果您有 GPU(如 RTX 3060+),推荐使用
large-v3模型 - 模型下载位置:
~/.cache/whisper/(Linux/Mac)或C:\Users\<用户名>\.cache\whisper\(Windows)
2) 常用脚本
# 语音转文字(推荐直接输出转写文本文件)
# 小模型(推荐日常使用,速度和准确率平衡)
python scripts/transcribe_audio.py demo.m4a --model small
# 大模型(最高准确率,需要 GPU)
python scripts/transcribe_audio.py demo.m4a --model large-v3
# 基础模型(快速测试)
python scripts/transcribe_audio.py demo.m4a --model base
# 生成结构化纪要
python scripts/generate_notes.py transcript.txt --output notes.json
# Windows PowerShell 下如需附带会议信息,建议改用 JSON 文件
python scripts/generate_notes.py transcript.txt --meeting-info-file meeting-info.json --output notes.json
# 导出 Word(内置模板)
python scripts/export_word.py notes.json --template simple --output notes.docx
# 导出 Word(templates.py 管理的模板,如"周会")
python scripts/export_word.py notes.json --template 周会 --output weekly-notes.docx
# 导出 PDF
python scripts/export_pdf.py notes.json --output notes.pdf
# 查看历史会议
python scripts/storage.py list --limit 10
3) 配置 LLM(必做,否则纪要内容为空)
generate_notes.py 默认调用 OpenAI 兼容接口。在 ~/.workbuddy/meeting-notes-config.json 中配置:
{
"llm_base_url": "https://api.openai.com/v1",
"llm_api_key": "sk-your-key-here",
"llm_model": "gpt-4o-mini"
}
国内兼容接口示例(通义千问、DeepSeek、智谱等):
{
"llm_base_url": "https://api.deepseek.com/v1",
"llm_api_key": "sk-your-deepseek-key",
"llm_model": "deepseek-chat"
}
也可以用环境变量覆盖:OPENAI_API_BASE / OPENAI_API_KEY / LLM_MODEL
若无 API Key,使用 --no-llm 参数回退到规则解析(内容较少):
python scripts/generate_notes.py transcript.txt --no-llm --output notes.json
4) 配置邮件发送(可选)
首次发送邮件前,可先运行 SMTP 配置向导:
python scripts/send_email.py --config
也可指定自定义配置文件路径(联调推荐):
python scripts/send_email.py --config --config-path smoke-test/email-config.json
配置会写入 ~/.workbuddy/meeting-notes-config.json 的 email 字段,并保留已有的 LLM 配置。
5) 配置文件位置
- 配置文件:
~/.workbuddy/meeting-notes-config.json - 会议主库:
~/.workbuddy/meeting_notes.db - 频道库:
~/.workbuddy/meeting_channels.db - 模板目录:
~/.workbuddy/meeting_notes_templates/
6) 指定隔离数据库目录(联调 / smoke test 推荐)
storage.py / channels.py / meeting_analytics.py 已支持 --db-dir 参数,也兼容环境变量 WORKBUDDY_HOME。
python scripts/storage.py --db-dir smoke-test/real-audio/home/.workbuddy list --limit 10
python scripts/channels.py --db-dir smoke-test/real-audio/home/.workbuddy meetings 1
python scripts/meeting_analytics.py --db-dir smoke-test/real-audio/home/.workbuddy --period week
目录结构
scripts/
transcribe_audio.py:语音转文字generate_notes.py:生成结构化纪要 JSONexport_word.py:导出 Word 文档export_pdf.py:导出 PDF 文档(Windows 自动优先 reportlab / fpdf2)publish_feishu.py:生成飞书文档 / 群聊 / 任务所需载荷send_email.py:发送会议纪要邮件(支持--configSMTP 配置向导)storage.py:历史会议保存、搜索、列表、删除(支持--db-dir)templates.py:模板管理channels.py:频道分组管理(支持--db-dir、update修改描述/颜色)meeting_analytics.py:会议频率与关键词分析(支持--db-dir)sentiment_analysis.py:情绪分析(繁简转换 + 口语友好分句 + 逐句聚合)ai_skills.py:销售 / 招聘 / 技术评审 / 金融交流等场景提取export_bitable.py:导出飞书多维表格 JSON(支持--field-lang zh/en字段名切换)
references/
template_guide.md:Word 模板占位符与结构说明
assets/
- 预留模板、Logo、附件素材目录
典型命令
导出专业版 Word
python scripts/export_word.py notes.json --template professional --output notes.docx
导出模板管理器中的 Word 模板
python scripts/export_word.py notes.json --template 技术评审 --output tech-review.docx
导出自定义 .docx 占位符模板
python scripts/export_word.py notes.json --template custom --template-path my-template.docx --output custom-notes.docx
导出飞书多维表格数据
python scripts/export_bitable.py notes.json --format json --field-lang zh
python scripts/export_bitable.py notes.json --format records --field-lang en
配置并发送邮件
python scripts/send_email.py --config
python scripts/send_email.py notes.json --to demo@example.com -a notes.docx
会议分析
python scripts/meeting_analytics.py --period week --limit 50
情绪分析
python scripts/sentiment_analysis.py transcript.txt
频道管理
python scripts/channels.py create 产品例会 --description 产品周会
python scripts/channels.py update 1 --description 重点客户复盘频道 --color "#FF6B6B"
python scripts/channels.py add 12 1
python scripts/channels.py meetings 1
使用示例
示例 1:语音转纪要
用户:帮我整理会议纪要
AI:请提供会议录音或相关文档(音频 / 链接)
用户:[上传录音]
AI:好的,已识别语音。现在生成会议纪要...
示例 2:文档链接
用户:https://xxx.feishu.cn/doc/xxx
AI:好的,已读取会议内容。正在生成结构化纪要...
示例 3:会议后分发
用户:把这份纪要导出 Word 再发飞书
AI:先生成结构化纪要,再输出 Word,并给出飞书发布内容
合规声明
数据隐私
- ✅ 完全本地处理:音频文件仅在您的电脑上处理,完全离线,不上传任何云端
- ✅ 隐私安全:适用于敏感会议场景,无需担心数据泄露
- ⚠️ LLM 解析:转写文本会发送到 LLM API,请查看其隐私政策
- ⚠️ 无 API Key:不配置 LLM 时可使用规则解析,但内容较少
详细隐私声明:PRIVACY.md
免责声明
- ⚠️ 转写结果仅供参考,不能保证 100% 准确
- ⚠️ 重要文档建议人工复核
- ⚠️ 专业术语可能存在错误识别
- ❌ 禁止用于非法用途(如未经授权的录音)
详细免责声明:DISCLAIMER.md
使用限制
- ❌ 禁止用于窃听、监控他人
- ❌ 禁止用于侵犯他人隐私
- ❌ 禁止用于违反法律法规的用途
- ✅ 请仅在合法合规的场景下使用
开源许可
本工具采用 MIT 许可证,详见:LICENSE
前置条件
运行环境
- Python 3.8+
- 至少 4GB 内存(建议 8GB+)
- 首次使用 large-v3 模型需要下载约 3GB 文件
依赖项
- openai-whisper >= 20231117
- openai >= 1.0.0
- python-docx >= 1.1.0
- 其他依赖见
requirements.txt
最佳实践
Whisper 模型选择指南
| 模型 | 大小 | 准确率 | 速度 | 推荐场景 |
|---|---|---|---|---|
| tiny | ~39MB | 最低(~80%) | 最快(<1分钟/10分钟音频) | 快速测试、简单对话 |
| base | ~140MB | 较低(~85%) | 快(<2分钟/10分钟音频) | 日常使用 |
| small | ~460MB | 高(~90%) | 中等(~5分钟/10分钟音频) | 推荐日常使用,准确率足够,速度快 |
| large-v3 | ~2.88GB | 最高(~95%) | 慢(~15分钟/10分钟音频,GPU 可加速) | 专业需求、重要会议,需要 GPU 支持 |
使用建议:
- 无 GPU:使用
small模型(已包含在安装包中) - 有 GPU(RTX 3060+):使用
large-v3模型(最高准确率) - 首次使用 large-v3:运行时会自动下载约 3GB 模型文件
- 金融等专业领域:强烈推荐
large-v3或small,避免使用tiny和base
模型对比测试结果(解放南路 3.m4a,59分钟金融会议音频)
| 模型 | 转写时间 | 字符数 | 金融术语识别率 | 适用性 |
|---|---|---|---|---|
| base | ~2 分钟 | 13,966 | 4.2%(2/48) | ❌ 不推荐 |
| small | ~5 分钟 | 13,966 | 64.6%(31/48) | ✅ 推荐 |
| large-v3 | 59 分钟(GPU) | 13,743 | 70.8%(34/48) | ✅ 专业推荐 |
结论:
- base 模型几乎无法识别专业术语(5G/华为/小米全错)
- small 模型识别率较高,适合日常使用
- large-v3 模型对"股权质押/估值/新能源/光伏/风电/产能过剩"等术语识别准确,长句理解更好
技术细节
技术细节
- 本地 Whisper 更建议使用 Python 3.11 环境;Windows 下脚本会优先尝试自动接入
imageio-ffmpeg提供的 ffmpeg。 transcribe_audio.py已支持--model与--output,适合直接串联"音频 -> 转写文本 -> 纪要",且默认会做繁体转简体后处理。- Windows PowerShell 下传
--meeting-infoJSON 字符串容易受引用影响,建议优先使用--meeting-info-file。 sentiment_analysis.py已改为繁简转换 + 口语友好分句 + 逐句聚合,会先按换行/标点切分,再对超长口语段按长度阈值拆分,避免把整段长文本当成一句导致误判。ai_skills.py已支持金融场景自动识别,适合证券 / 理财 / 量化 / 机构交流录音;--text与--json(如notes.json)两类输入都会先做结构化文本归一,再执行场景识别与字段提取。storage.py/channels.py/meeting_analytics.py可通过--db-dir指向同一隔离数据目录,避免联调时读到不同数据库。export_word.py/export_pdf.py/publish_feishu.py/export_bitable.py已兼容generate_notes.py产出的content/assignee/deadline字段,也兼容字符串形式的action_items。export_word.py已同时支持两类模板:1)templates.py管理的 JSON 模板(--template <模板名>);2)用户自带.docx占位符模板(--template custom --template-path <模板文件>),其中{{action_items}}会输出三列表格,详细占位符见references/template_guide.md。export_pdf.py在 Windows 下会默认按reportlab -> fpdf2 -> html的顺序自动导出,避免先尝试weasyprint时反复撞系统动态库缺失;非 Windows 仍会优先尝试weasyprint。- 若本机连本地 PDF 引擎也未安装,
export_pdf.py才会继续回退输出 HTML 预览文件。 export_bitable.py已支持--field-lang zh/en;中文模式会输出会议标题/时间/参会人等字段,便于直接导入飞书多维表格。storage.py/channels.py/meeting_analytics.py可通过--db-dir指向同一隔离数据目录,避免联调时读到不同数据库。export_word.py/export_pdf.py/publish_feishu.py/export_bitable.py已兼容generate_notes.py产出的content/assignee/deadline字段,也兼容字符串形式的action_items。export_word.py已同时支持两类模板:1)templates.py管理的 JSON 模板(--template <模板名>);2)用户自带.docx占位符模板(--template custom --template-path <模板文件>),其中{{action_items}}会输出三列表格,详细占位符见references/template_guide.md。export_pdf.py在 Windows 下会默认按reportlab -> fpdf2 -> html的顺序自动导出,避免先尝试weasyprint时反复撞系统动态库缺失;非 Windows 仍会优先尝试weasyprint。- 若本机连本地 PDF 引擎也未安装,
export_pdf.py才会继续回退输出 HTML 预览文件。 export_bitable.py已支持--field-lang zh/en;中文模式会输出会议标题/时间/参会人等字段,便于直接导入飞书多维表格。- 飞书脚本当前输出的是可直接复用的载荷 / 任务清单,便于在工作流里继续调用。
配置管理
查看当前配置:cat ~/.workbuddy/meeting-notes-config.json
修改配置:说 "修改会议纪要配置"
重置配置:说 "重置会议纪要配置"