AI笔记助手:会议讲座自动记笔记——本地版
会议笔记真正难的是事后找不回来:记了要点没记决策,录了音三个月后不知道在哪。本地版的好处是录音不出机器。链路四段:录音、转写、结构化、可检索,每一段都能自己搭。
AI笔记助手:会议讲座自动记笔记的本地版
会议笔记真正难的是事后找不回来:记了要点没记决策,录了音三个月后不知道存在哪。本地版整条链路跑在自己机器上,录音不外传,缺点是首次搭建要花一两个小时。
一、链路四段
| 环节 | 工具 | 产出 |
|---|---|---|
| 录音 | 系统回环(WASAPI/BlackHole/PulseAudio) | wav 或 m4a |
| 分段 | Silero VAD | 去掉静音的有效语音 |
| 转写 | faster-whisper | 带时间戳的文本 |
| 说话人分离 | pyannote.audio | 每段标注说话人 |
| 结构化 | Ollama + 固定模板 | 摘要、决策、待办 |
| 索引 | 全文检索或 Khoj | 可跨月检索的存档 |
二、录音:必须录系统输出
线上会议的关键是录对方的音频,只开麦克风只能录到自己说话。
- Windows:WASAPI 回环,
soundcard库可以直接拿到扬声器输出 - macOS:装 BlackHole 虚拟声卡,再配置多输出设备
- Linux:PulseAudio 的 monitor source
线下会议用手机录音或领夹麦,采样率 16kHz 单声道就够转写用,文件还小。
三、转写:faster-whisper 起手
from faster_whisper import WhisperModel
model = WhisperModel("large-v3", device="cuda", compute_type="float16")
# 没有独显:device="cpu", compute_type="int8",速度慢3到10倍
segments, info = model.transcribe(
"meeting.m4a",
language="zh",
vad_filter=True,
beam_size=5,
initial_prompt="以下是普通话会议记录,涉及产品、预算、排期、交付。",
)
for s in segments:
print(f"[{s.start:.1f}] {s.text}")
| 参数 | 作用 | 建议 |
|---|---|---|
| model | 精度与速度的取舍 | 中文用 large-v3,实时场景退到 small |
| compute_type | 计算精度 | 有显卡 float16,纯CPU int8 |
| vad_filter | 跳过静音 | 长会议必开,能省不少时间 |
| initial_prompt | 给领域词提示 | 把公司名、产品名、人名写进去,同音错字明显减少 |
| beam_size | 搜索宽度 | 5 是精度与速度的平衡点 |
initial_prompt 这一项最容易被忽略,效果也最直接。专有名词错一次,后面结构化就跟着错。
四、结构化:模板比模型重要
让模型按固定字段输出 JSON,字段少而硬,比"帮我总结一下"稳定得多。
import json, ollama
PROMPT = '''你是会议记录员。只根据下面的转写文本输出JSON,不得推断文本中没有的内容。
{
"summary": "三句话以内",
"decisions": [{"text": "", "ts": "12:30"}],
"actions": [{"task": "", "owner": "", "due": "", "ts": ""}],
"open_questions": [""],
"risks": [""]
}
转写文本:
'''
r = ollama.chat(model="qwen3:14b", format="json",
messages=[{"role": "user", "content": PROMPT + transcript}])
notes = json.loads(r["message"]["content"])
要求每条结论带时间戳,作用是能回听核对。没有时间戳的摘要,出错时无法定位。
五、存档与检索
一次会议一个 Markdown 文件,命名带日期和主题:2026-11-11-产品评审.md。文件头放元信息:
---
date: 2026-11-11
attendees: 张三, 李四
project: checkout
tags: [评审, 排期]
---
检索先用 ripgrep,量大了再上 Khoj 或 meilisearch。三个月后想找"当时谁说预算不够",一条 grep 就能定位到会议和时间点。
六、好笔记的字段
| 字段 | 为什么必须有 |
|---|---|
| 摘要 | 没参会的人三十秒看懂 |
| 决策 | 事后争议的唯一依据 |
| 待办(人+日期) | 没有责任人和时间的待办等于没写 |
| 未决问题 | 下次会议的输入 |
| 风险 | 最容易被漏掉的部分 |
七、隐私与合规
本地处理意味着录音、转写、结构化都在本机,只有你主动同步才会离开。但要注意两点:录音前告知参会人,部分地区要求全体同意;公司设备上的录音可能受内部规定约束。
常见问题
Q:中文识别准不准? A:large-v3 在普通话会议录音上表现明显好于 small 和 medium。方言重、口音杂时准确率下滑,用 initial_prompt 补领域词能救回一部分。
Q:多人会议能区分说话人吗? A:可以,pyannote.audio 做分离,需要 HuggingFace token 并接受模型条款。两人同时说话时分离会错,重要会议仍需人工校对。
Q:能实时出字幕吗? A:能。按30秒切片转写,延迟几秒。实时用 small 模型,会后用 large-v3 重跑一遍留档。
Q:模型会不会编造待办? A:会。两条约束:提示词写明"不得推断",每条待办必须附时间戳,人工抽查几条就能发现。
注:模型名称与推理参数随版本变化,以 faster-whisper 与 Ollama 官方文档为准。
相关文章
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。