Skip to content
tancheng33Public

About

开过的会,都听过。本地 AI 会议纪要:会议录音转文字、区分说话人、自动生成纪要和待办,支持腾讯会议/飞书/Zoom,录音不上传 · Local-first AI meeting notes for Mac: on-device transcription, speaker diarization, minutes linked to quotes. Open-source Otter/Granola alternative

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Tingo

Tingo 听过

开过的会,都听过。
本地录音、本地转写的中文会议纪要工具,每条结论都对得上原话。

下载 macOS 13+ MIT 主页 English

演示:跨会议搜索、点回原话、鱼骨图展开引用、看着纪要一节一节写出来

录下腾讯会议、飞书、Zoom 里的声音和你自己的麦克风,在你的电脑上转成文字、分清谁说了什么,再交给你自己选的大模型整理成纪要:议题、决议、带负责人和截止日期的待办、风险,讨论了"为什么"时还会画一张每个分支都绑着原话的鱼骨图。

  • 录音不出本机:识别、区分说话人都在本地完成,不上传录音。纪要可以用 DeepSeek、通义千问这类接口,也可以用本地 Ollama,全程断网。
  • 为中文会议做的:阿里达摩院 FunASR 的中文识别模型,中文标点、数字、人名都比通用的英文方案好;时间说法("下周三""月底")按会议日期换算成具体日子。
  • 结论有出处:纪要里每一条都带时间戳,点一下跳回录音那一秒;鱼骨图会统计每个分支引用了多少原文,一句都对不上的直接标出来,一眼看出谁在说空话。
  • 中英双语:界面、纪要、导出都支持中文和英文;英文会议用 SenseVoice 识别,中文会议也能直接出英文纪要。
  • 桌面 App 12 MB:Tauri + Rust,不用装 Python 和 ffmpeg。1 小时的会议结束后几秒出转写,76 分钟的录音导入后约 3.5 分钟转完。

如果你在找 Otter.ai、Granola、Fireflies、飞书妙记、通义听悟、讯飞听见 的本地、开源、免费替代,或者想要一个不上传录音的 AI 会议记录工具,Tingo 就是为这个做的。

截图里的会议、人名和数据都是虚构的演示内容。

功能

原因分析鱼骨图:一眼看出哪条是空话

会上讨论了"为什么"——转化率为什么掉了、项目为什么延期——纪要里就会多一张鱼骨图。每个分支都绑着它依据的原话,点开能看到是谁在几分几秒说的,点时间戳跳回去听。

每个分支会统计引用了几段、多少字的原文:大模型给的时间戳在转写里对不上的,标成无原文依据(红色);引用太少的标成依据很少(橙色)。会上有人凭感觉下的结论,在图上一眼就能看出来。

鱼骨图:每个分支绑着原话

鱼骨图可以一键导出成 Excalidraw 画板,接着改、拿去汇报:

导出到 Excalidraw 的鱼骨图

不用等:录完就能开下一场

结束录音后,转写和纪要在后台进行,首页马上可以开下一场会。侧边栏能看到每个任务进行到哪一步;点进会议,能看着大模型一节一节写纪要——推理模型动笔前要先想一两分钟,这时也会显示"已思考多少字",不会像卡住了一样。

首页:后台任务 纪要生成过程

搜得到会上说过的每一句话

在会议列表里搜关键词,会把所有会议的转写都翻一遍,列出命中的原话,点一句就跳到那场会的那一秒。纪要末尾有一张「人名与术语」表,记下正确写法和识别错的写法(比如"历史工单"被听成"历史中单"),搜索时会连错的写法一起搜出来;一键就能把它们加进热词。

谁说了什么

边录边转:录音时就在识别,结束后几秒出完整转写。按声纹区分说话人;不想一个个改名,可以让 AI 根据"王总你看呢"这类称呼和自我介绍猜出谁是谁,每个名字都附上依据。改完名纪要会按新名字重新生成。

忘了点结束也没关系:会议软件退出、或者连续 10 分钟没人说话(可以调),录音会自动结束并截掉末尾的空白。点任意一句跳到那里回听,播放时当前发言会高亮。

转写:区分说话人

导出与分享

  • PDF:A4 排版,鱼骨图把引用的原话直接展开在纸上,可以直接发给没参会的人。
  • Word:可以接着改的 .docx,发给领导最常用的格式。
  • SRT 字幕:带说话人的逐句字幕,可以配进会议录屏。
  • Obsidian:一场会一篇笔记,日期、时长、参会人写在属性里,鱼骨图存成 Excalidraw 画板嵌在笔记里;可以设成生成纪要后自动存。
  • 飞书 / 钉钉 / 企业微信:贴一个群机器人的 webhook,一键推送到群里。
  • Markdown:复制粘贴到任何地方。

导出 PDF

会议多了也好管

  • 标签和归档:按项目、会议类型打标签,会议列表按标签筛选;开完的会归档收起,搜索时照样能找到。
  • 批量操作:在会议列表里多选,一次加标签、归档或删除。
  • 改标题:随手改成好记的名字,不影响会议文件夹。
  • 删除可恢复:删除会议、只删录音都是移到废纸篓,后悔了还能拿回来。
  • 管理空间:设置里能看到录音占了多少、哪几场会最占地方;可以一键删掉 N 天前(或只删已归档)会议的录音,转写和纪要都保留。

识别模型可以换

默认的 Paraformer-large 适合大多数中文会议。会上中英文混着说,可以换成 SenseVoice;要更准、想让人名和项目代号在识别时就认对,可以换成 Fun-ASR-Nano(会直接用上你填的热词)。在设置里下载、切换,都在本地运行。

设置:识别模型

安装

桌面 App(推荐)

到 Releases 下载 Tingo_x.y.z_aarch64.dmg,拖进「应用程序」。目前只有 Apple 芯片(M1 及以后)的版本,需要 macOS 13 以上;录系统声音需要 macOS 15 以上。

第一次打开会有一个新手引导:下载识别模型、试录 3 秒确认权限、接上大模型,再看一场内置的示例会议。识别模型(约 330 MB:识别模型来自 ModelScope,国内直连;标点和声纹模型来自 GitHub,网络中断会自动续传),之后完全离线可用。

App 暂时没有用苹果开发者证书签名,第一次打开会提示"无法验证开发者"。在「应用程序」里右键点 Tingo → 打开,再点一次「打开」即可;或者在终端运行:

xattr -dr com.apple.quarantine /Applications/Tingo.app

第一次录音时,macOS 会请求「麦克风」和「屏幕与系统录音」权限(录对方的声音要用到后者),允许即可。有新版本时侧边栏的版本号旁边会亮起提示,点一下下载,自动核对 SHA-256 后打开安装包。

命令行

命令行版基于 Python(FunASR),适合放进脚本、批量处理录音。需要 Python 3.11+ 和 ffmpeg:

brew install ffmpeg
uv tool install git+https://github.com/tancheng33/tingo      # 或 pipx install git+…
tingo doctor                                                 # 检查环境
tingo record -t 周会 -w "林舟,注册转化"     # 录音(系统声音 + 麦克风),Ctrl+C 结束,自动出纪要
tingo run ~/Downloads/项目评审.mp4          # 处理已有的录音或录屏
tingo summarize ~/Documents/Tingo/2026-10-28_1400_复盘 -s "林舟,陈默"   # 改说话人名字后重新生成纪要
tingo push ~/Documents/Tingo/2026-10-28_1400_复盘                       # 推送到群
tingo ui                                                     # 打开图形界面

每场会议一个文件夹,默认在 ~/Documents/Tingo/,桌面 App 和命令行共用:

2026-10-28_1400_注册转化复盘/
├── 录音.m4a          # 16 kHz 单声道,1 小时约 30 MB
├── 转写.md
├── transcript.json   # 结构化转写
└── 纪要.md

配置大模型

转写不需要大模型,生成纪要需要。任何 OpenAI 兼容接口都可以,在设置里点选,带连接测试:

选择 说明
DeepSeek、通义千问(百炼) 填 API Key 即可。实测 76 分钟的会,DeepSeek V4 Flash 约 50 秒出纪要
本机中转(Magpie、CC Switch) 打开后自动探测,一键选用,模型从列表里挑
本地 Ollama 全程不出本机,不需要 Key。本地模型上下文较短,长会议会自动分段提炼再合并
自定义 任意 OpenAI 兼容地址

配置文件在 ~/.config/tingo/config.toml,也可以用环境变量 TINGO_LLM_BASE_URL、TINGO_LLM_API_KEY、TINGO_LLM_MODEL。

隐私

  • 录音和转写只在你的电脑上,识别模型在本地运行。
  • 生成纪要时,转写文字会发给你配置的大模型接口;用本地 Ollama 的话这一步也不出本机。
  • 推送到群、存到 Obsidian、导出 PDF 都是你点了才发生。
  • App 内的服务只监听 127.0.0.1,不对外开放。没有任何统计和上报。

工作原理

录音 ─┬─ 系统声音(ScreenCaptureKit)─┐
      └─ 麦克风 ──────────────────────┴─ 16 kHz 单声道,边录边按停顿切段
                                              │
          VAD 切分 → 识别(Paraformer / SenseVoice / Fun-ASR-Nano)→ 标点 → CAM++ 声纹
                                              │
                    谱聚类区分说话人(全场一次,说话人编号前后一致)
                                              │
          大模型写纪要(长会议分段提炼再合并;日期按会议日换算;术语表纠正同音字)
                                              │
               鱼骨图的每个引用对照转写核实 → 纪要.md → PDF / Obsidian / 群

几个细节:

  • 桌面版:Tauri 外壳 + Rust 核心库,sherpa-onnx 运行 FunASR 官方 Paraformer-large int8 模型,声纹聚类从 Python 版移植,与之逐秒对比 93.6% 一致。选型过程(比较了 8 套识别引擎)见 spike/sherpa/RESULTS.md。
  • 外放回声:开着扬声器开会时,麦克风会把对方的声音再录一遍。Tingo 在系统声音有人说话时压低麦克风,只在对方安静时用麦克风;双方同时说话时本地一侧会被盖掉,戴耳机效果最好。
  • 元信息不交给模型:纪要里的日期、时长、参会人由程序填写,模型只写内容,避免编造。
  • 推理模型:DeepSeek-R1、Qwen3 等的思考过程会被过滤,不进纪要。

和其他工具比

Tingo 飞书妙记 / 通义听悟等云服务 Meetily 等开源会议助手
录音存放 只在本机 上传到云端 本机
中文识别 FunASR(中文专用) 好 以 Whisper / Parakeet 为主,面向英文
录线上会议 直接录系统声音,不用装虚拟声卡 主要服务自家会议平台 支持
纪要用的模型 自己选,可以完全本地 平台指定 自己选
结论能否追溯原话 每条带时间戳,鱼骨图核实引用 部分支持 —
费用 免费开源 按时长或会员收费 免费开源

常见问题

怎么把腾讯会议、飞书、Zoom 的会议录下来并转成文字? 打开 Tingo 点录音,它会同时录下系统声音(对方的声音)和你的麦克风,不用装 BlackHole 之类的虚拟声卡。会议软件自己导出的录音、录屏(m4a、mp4、mp3、wav 等)也可以直接拖进窗口。

会议录音会上传吗? 不会。语音识别、区分说话人都在你的 Mac 上完成。生成纪要时只把转写文字发给你选的大模型;用本地 Ollama 的话这一步也不出本机,可以断网使用。

能自动生成会议纪要和待办吗? 能。纪要按一句话总结、议题、决议、待办(负责人、截止时间)、风险整理,每条带时间戳,点一下跳回录音原话。"下周三"这类说法会换算成具体日期。

支持哪些大模型? 任何 OpenAI 兼容接口(DeepSeek、通义千问、OpenAI、Gemini、Kimi、智谱、本地 Ollama 等)和 Anthropic(Claude)接口。

能区分不同的人说的话吗? 能,按声纹自动区分说话人,改个名字纪要会按新名字重新生成。

英文会议能用吗? 能。界面和纪要都支持英文,英文会议在设置里把识别模型换成 SenseVoice;中文会议也可以直接出英文纪要。

Windows 能用吗? 桌面 App 目前只有 macOS(Apple 芯片)版。命令行版可以在 Linux 上用麦克风录音,Windows 可以先用会议软件录制再导入。

已知限制

  • 桌面 App 目前只有 Apple 芯片的 macOS 版;录系统声音需要 macOS 15+。命令行版在 Linux 上只能录麦克风,Windows 请先用会议软件录制再导入。
  • 多人抢话、声音相近时说话人可能分错,可以在详情页改名后重新生成纪要。
  • 外放时的回声处理是"让路"而不是真正的回声消除,换人处偶尔有一两个字识别错。

路线图

  • 真正的回声消除(AEC),外放也能达到耳机的效果
  • 菜单栏快捷录音,会议软件启动时提醒
  • Windows 版(WASAPI 录系统声音)
  • 导出到飞书文档 / 钉钉文档
  • App 签名与公证,双击即可安装

参与开发

git clone https://github.com/tancheng33/tingo && cd tingo

# 命令行 / Python 后端
uv sync
uv run pytest -m "not slow"          # 不下载模型的单元测试

# 界面(TypeScript + Vite),构建产物输出到 src/tingo/web,桌面版和 `tingo ui` 共用
cd app && pnpm install
pnpm dev                             # 浏览器打开 http://localhost:1420,接口转给 8765 端口的后端

# 桌面版(Tauri + Rust)
pnpm tauri dev                       # 开发窗口
pnpm tauri build                     # 打包 .app / .dmg
cd engine && cargo test              # Rust 核心库测试
cargo run --release --example serve -- <模型目录> <录音组件> 8765   # 只起后端,配合 pnpm dev

欢迎提 Issue 和 PR。

致谢

改名说明

项目早期叫 jiyao(纪要)。改名后旧的命令 jiyao、环境变量 JIYAO_*、配置目录 ~/.config/jiyao/、会议目录 ~/Documents/jiyao/ 都继续可用,不用搬数据。

许可

MIT

About

开过的会,都听过。本地 AI 会议纪要:会议录音转文字、区分说话人、自动生成纪要和待办,支持腾讯会议/飞书/Zoom,录音不上传 · Local-first AI meeting notes for Mac: on-device transcription, speaker diarization, minutes linked to quotes. Open-source Otter/Granola alternative

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages