惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
G
Google Developers Blog
博客园 - 三生石上(FineUI控件)
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
V
V2EX
Vercel News
Vercel News
U
Unit 42
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
J
Java Code Geeks
WordPress大学
WordPress大学
罗磊的独立博客
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
M
MIT News - Artificial intelligence
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG

Python

[开源] CNEquity:自托管 A 股 Parquet 数据湖(日更 / PIT / 防幸存者偏差 / MCP) - V2EX 没人觉得 cursor 的模型思考很慢嘛,经常思考卡死要手动停止再继续 - V2EX [原创工具] hot-list 多平台热榜聚合+AI 分析系统,一键部署,开源免费 - V2EX 开发了一个查看 conda 镜像工作情况的项目,已经开源 - V2EX JD 评论风控问题 - V2EX [开源分享] QQ 空间 Flash 老游戏-红警大战坦克风暴-保活与每日脚本 - V2EX TG api 我用 google Voice 老申请失败 哪位朋友帮忙用 mac 测试下我的 Python 脚本 用 GPT5.6 填了之前的坑:在线的 Python 编辑器和运行终端 为什么这段 cuda 的并行前缀算法不会数据竞争 怎么搞定纯 Python 代码解码 jpg 图片,要求无外部依赖 使用 kkRepo 搭建 Python PyPI 私服 Python WebSocket 长连接到底怎么写才稳? 小白求推荐人工智能学习的网课 humanize-text 一个开源的 AI 文本拟人化工具集 9.9 元起!跨境卖家疯抢的纯净住宅 IP 辣椒 HTTP,到底有多香? CodexSaver:在不让 Codex 变笨的前提下,让它更便宜。 [开源] 我正在用 Python 复刻经典游戏红色警戒 2 有准确绘制缠论中枢的 Python 代码借鉴么 做了一个面向张量计算的语言,可从 Python 调用,支持显式索引和自动求导 把电脑伪装成电视,用 DLNA 投屏拿到视频号直播流地址 爬虫开发工作中,你们是如何基于 AI 进行提效的? 发现 Python 一个有意思的小特性,发现很合适搞成面试题。问了 AI 都不行:),欢迎来挑战~ 大型 Python 开源项目都不会对变量进行类型注解? 使用 pycharm 开发 Python ,自定义代码风格,并实时提示 创造了 uv 的 Astral 公司被 OpenAI 收购 慎用 PyCharm Remote Development 功能 Python 3.15 JIT 的最新进展,已经有大概 5%的性能提升了 [开源] 做了个 feishu-docx,把飞书知识库变成 AI 更容易读写和管理的内容源,方便给 Agent 用 开源项目: clawOS 解决 openclaw 文件系统,一键安装
从会议录音到知识库全自动:我把数百段录音做成了可 RAG 问答...
xgordon · 2026-05-12 · via Python

做了个会议录音 → 知识库的全自动管线,开源了,来分享一下。

背景:公司用 Plaud 录音笔积累了大量会议录音,但一直躺在那里没人整理。Plaud 自带的 AI 笔记质量一般,而且说话人都是匿名的( Speaker 1 、Speaker 2…),行动项根本没法落实到人。

做了什么

录音文件 → 说话人分割 → 身份具名 → AI 纪要 → Wiki 知识库
                                                    ↓
                                          可浏览 + 可搜索 + 可 RAG 问答

每天 22:00 cron 自动跑,0 人工干预。


最核心的部分:三阶段说话人具名漏斗

说话人识别我试过纯声纹方案,发现 CAM++ 跨录音根本不可靠——同一个人在不同录音的余弦相似度只有 0.50–0.65 ,反而不如不同人在同一录音的 0.85–0.97 。直接用声纹聚类,阈值 0.65 时同一个人被拆成 17 个簇。

最后用了三层漏斗:

优先级 方法 命中率
1 外部标签时间戳对齐(地面真相) ~95%
2 CAM++ 声纹余弦匹配(阈值 0.55 ) 填补剩余
3 LLM + 组织架构图 + 称呼惯例推断 兜底

最终 94% 片段具名率( 56,862 / 60,664 )。有了具名,行动项才能从"某参与人说要做某事"变成"张经理需在周五前提交报价"。


技术栈

  • 说话人分割:pyannote community-1 ( GPU ,~28x 实时,比 CAM++ 分割准多了)
  • ASR:FunASR Paraformer-large
  • 声纹提取:CAM++ 192-dim embedding
  • LLM:OpenAI 兼容接口( Claude / GPT / 本地 Ollama 均可)
  • Wiki:纯 Python http.server + mistune ,零框架
  • 中文搜索:自制 Bigram 分词,不依赖 jieba

几个踩坑记录

  1. pyannote 直接读 OGG 会有分割边界漂移,先 ffmpeg 转 16kHz WAV
  2. 54 分钟音频不加 VAD 直接跑 FunASR → 需要 43GB 显存 → OOM ,必须开 fsmn-vad
  3. LLM 输出 JSON 要多策略解析( strip code fence → bare JSON → trailing comma ),单一策略会静默丢结果
  4. S3 预签名 URL 不能带 Authorization header ,得用干净 session

开源地址https://github.com/xclgordon/plaud-pipeline

架构文档在 docs/architecture.md,比较详细。

需要 NVIDIA GPU ( pyannote 分割),其他没有特殊依赖。主流程已经和 Plaud 解耦,把录音文件丢进 recordings/ 文件夹就能跑。

欢迎提问和 PR 。