Local-first meeting transcription — audio & transcripts never leave your machine. Live captions + upload diarization + voice matching.
132
stars
294
commits
Python
primary language
Aug 3, 2026
updated
本机优先的会议录音转写工具 · 默认数据不外传 · 上传多人分离 + 实时字幕 + 声纹匹配
这是面向单台受信任机器的本地单机工具,适合本地试用和迭代;当前不面向公网部署、多租户、合规存档或自动身份判定。
把"一段会议录音"变成"带说话人归属、可校正、可导出"的结构化纪要,音频和转写永远不出本机。飞书/讯飞/在线 ASR 都要把音频传上云——本项目不上传音频。LLM 纪要可选本机 Ollama,公网 LLM 只在你显式允许时发送转写文本(永不发音频、永不发声纹)。
两条路径合一,覆盖会议从现场到会后的全程:
Spk_01 按严格阈值匹配到已登记人物,可随时人工纠正,不是身份认证。声样支持上传文件或浏览器在线录音注册。WORKERS=1),请勿调高。关于项目名:实时与上传是同一会议的两个入口,均为一等功能。多人说话人分离(diarization)在上传模式完成;实时模式靠声纹识别已登记说话人,不做多人分离。
会议工作区 · 转写、校正、说话人归属、纪要与导出,全程本地
| 实时字幕 | 会议库 |
![]() | ![]() |
| 人员声样(含在线录音) | 引擎与设置 |
![]() | ![]() |
上传录音(会后)
实时字幕(会中)
要求 Python 3.10–3.12、Node.js 20+ 和 FFmpeg。CI 在 Ubuntu 验证 Python 3.10–3.12,并在 macOS、Windows 验证 Python 3.12。首次启动会下载约 1.8GB 模型,视网速可能需要数十分钟;下载完成后 LLM 关闭时可永久断网运行。
git clone https://github.com/lgy1027/matrix-live-diarizer.git
cd matrix-live-diarizer
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cd web && npm ci && npm run build && cd ..
python main.py
浏览器打开 http://127.0.0.1:8000。默认只监听本机回环地址。默认账户 admin/admin,首次登录强制改密。
项目接口仍在迭代,请勿将其作为会议资料的唯一副本或长期归档系统。
Docker CPU 版:
docker compose up --build
CUDA 用户建议使用本地 Python 环境并按 PyTorch 官方说明安装对应版本(Docker 镜像仅含 CPU)。多架构镜像需发布者自行 docker buildx build --platform linux/amd64,linux/arm64 并验证目标架构,项目不提供预构建镜像承诺。
复制 .env.example 为 .env。多数本机单机场景无需修改,常用项如下:
HOST=127.0.0.1
ASR_DEVICE=auto
ASR_ENGINE=qwen3
SPEAKER_ENGINE=campplus
HF_TOKEN=
LLM_ENABLED=false
ASR_ENGINE 可选 qwen3 / sensevoice / paraformer / paraformer_streaming;SPEAKER_ENGINE 可选 campplus / eres2net / wespeaker。其余项见 .env.example。启用 LLM(摘要/行动项/纪要)见 LLM 配置指南。
何时需要 HF_TOKEN(其余情况留空即可):
只有明确部署到局域网时才使用 HOST=0.0.0.0 和 DEPLOYMENT_MODE=lan,并同时设置强随机 JWT_SECRET、可信 ALLOWED_ORIGINS。跨机器访问还需要 HTTPS(见下文「跨机器访问」)。
默认 HOST=127.0.0.1 只监听本机——本机用 http://127.0.0.1:8000 即可,麦克风和上传都正常。
要从别的机器访问(上传录音、在线录音都要麦克风),浏览器要求 HTTPS:http://IP 非 localhost 下 getUserMedia 会被禁用。项目支持让服务直接跑 HTTPS 自签证书。请先确保系统已安装 OpenSSL,随后使用项目的跨平台 Python 脚本生成包含本机 IPv4 地址的证书。
macOS / Linux:
python3 scripts/gen_self_cert.py
ENABLE_HTTPS=1 HOST=0.0.0.0 \
DEPLOYMENT_MODE=lan ALLOWED_ORIGINS=https://<本机IP>:8000 \
python main.py
Windows PowerShell:
python .\scripts\gen_self_cert.py
$env:ENABLE_HTTPS = "1"
$env:HOST = "0.0.0.0"
$env:DEPLOYMENT_MODE = "lan"
$env:ALLOWED_ORIGINS = "https://<本机IP>:8000"
python main.py
macOS / Linux 也可以继续使用兼容入口 bash scripts/gen_self_cert.sh。
浏览器访问 https://<本机IP>:8000,首次提示"不安全"点"高级 → 继续前往"即可。
data/media/(上传录音原文件,按会议 id 命名)data/media/voices/<person_id>/data/matrix.dbmodels/(可由 MODELS_DIR 配置)这些数据默认不加密,请使用操作系统磁盘加密并保护本机账户。删除会议或人物会删除应用管理的对应音频文件;删除整个 data/ 前应先停止服务。
python -m pytest tests/ -q --ignore=tests/test_smoke_boot.py
cd web
npm run check:i18n
npm run typecheck
npm run build
npm audit --omit=dev --audit-level=high
真实模型冒烟测试会下载并加载大模型,因此常规 CI 默认不运行:MATRIX_TEST_REAL_DEPENDENCIES=1 pytest tests/test_smoke_boot.py -v。PowerShell 请先执行 $env:MATRIX_TEST_REAL_DEPENDENCIES="1"。
欢迎通过 Pull Request 贡献代码,流程与约定见 CONTRIBUTING.md。
项目代码采用 MIT License。模型权重和部分数据集拥有各自的许可证与使用条款,不随 MIT 自动授权;部署前请阅读 模型说明 并核对上游条款。
Python
76.1%
Vue
12.6%
TypeScript
9.8%
Local-first meeting transcription — audio & transcripts never leave your machine. Live captions + upload diarization + voice matching.
132
stars
294
commits
Python
primary language
Aug 3, 2026
updated
本机优先的会议录音转写工具 · 默认数据不外传 · 上传多人分离 + 实时字幕 + 声纹匹配
这是面向单台受信任机器的本地单机工具,适合本地试用和迭代;当前不面向公网部署、多租户、合规存档或自动身份判定。
把"一段会议录音"变成"带说话人归属、可校正、可导出"的结构化纪要,音频和转写永远不出本机。飞书/讯飞/在线 ASR 都要把音频传上云——本项目不上传音频。LLM 纪要可选本机 Ollama,公网 LLM 只在你显式允许时发送转写文本(永不发音频、永不发声纹)。
两条路径合一,覆盖会议从现场到会后的全程:
Spk_01 按严格阈值匹配到已登记人物,可随时人工纠正,不是身份认证。声样支持上传文件或浏览器在线录音注册。WORKERS=1),请勿调高。关于项目名:实时与上传是同一会议的两个入口,均为一等功能。多人说话人分离(diarization)在上传模式完成;实时模式靠声纹识别已登记说话人,不做多人分离。
会议工作区 · 转写、校正、说话人归属、纪要与导出,全程本地
| 实时字幕 | 会议库 |
![]() | ![]() |
| 人员声样(含在线录音) | 引擎与设置 |
![]() | ![]() |
上传录音(会后)
实时字幕(会中)
要求 Python 3.10–3.12、Node.js 20+ 和 FFmpeg。CI 在 Ubuntu 验证 Python 3.10–3.12,并在 macOS、Windows 验证 Python 3.12。首次启动会下载约 1.8GB 模型,视网速可能需要数十分钟;下载完成后 LLM 关闭时可永久断网运行。
git clone https://github.com/lgy1027/matrix-live-diarizer.git
cd matrix-live-diarizer
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
cd web && npm ci && npm run build && cd ..
python main.py
浏览器打开 http://127.0.0.1:8000。默认只监听本机回环地址。默认账户 admin/admin,首次登录强制改密。
项目接口仍在迭代,请勿将其作为会议资料的唯一副本或长期归档系统。
Docker CPU 版:
docker compose up --build
CUDA 用户建议使用本地 Python 环境并按 PyTorch 官方说明安装对应版本(Docker 镜像仅含 CPU)。多架构镜像需发布者自行 docker buildx build --platform linux/amd64,linux/arm64 并验证目标架构,项目不提供预构建镜像承诺。
复制 .env.example 为 .env。多数本机单机场景无需修改,常用项如下:
HOST=127.0.0.1
ASR_DEVICE=auto
ASR_ENGINE=qwen3
SPEAKER_ENGINE=campplus
HF_TOKEN=
LLM_ENABLED=false
ASR_ENGINE 可选 qwen3 / sensevoice / paraformer / paraformer_streaming;SPEAKER_ENGINE 可选 campplus / eres2net / wespeaker。其余项见 .env.example。启用 LLM(摘要/行动项/纪要)见 LLM 配置指南。
何时需要 HF_TOKEN(其余情况留空即可):
只有明确部署到局域网时才使用 HOST=0.0.0.0 和 DEPLOYMENT_MODE=lan,并同时设置强随机 JWT_SECRET、可信 ALLOWED_ORIGINS。跨机器访问还需要 HTTPS(见下文「跨机器访问」)。
默认 HOST=127.0.0.1 只监听本机——本机用 http://127.0.0.1:8000 即可,麦克风和上传都正常。
要从别的机器访问(上传录音、在线录音都要麦克风),浏览器要求 HTTPS:http://IP 非 localhost 下 getUserMedia 会被禁用。项目支持让服务直接跑 HTTPS 自签证书。请先确保系统已安装 OpenSSL,随后使用项目的跨平台 Python 脚本生成包含本机 IPv4 地址的证书。
macOS / Linux:
python3 scripts/gen_self_cert.py
ENABLE_HTTPS=1 HOST=0.0.0.0 \
DEPLOYMENT_MODE=lan ALLOWED_ORIGINS=https://<本机IP>:8000 \
python main.py
Windows PowerShell:
python .\scripts\gen_self_cert.py
$env:ENABLE_HTTPS = "1"
$env:HOST = "0.0.0.0"
$env:DEPLOYMENT_MODE = "lan"
$env:ALLOWED_ORIGINS = "https://<本机IP>:8000"
python main.py
macOS / Linux 也可以继续使用兼容入口 bash scripts/gen_self_cert.sh。
浏览器访问 https://<本机IP>:8000,首次提示"不安全"点"高级 → 继续前往"即可。
data/media/(上传录音原文件,按会议 id 命名)data/media/voices/<person_id>/data/matrix.dbmodels/(可由 MODELS_DIR 配置)这些数据默认不加密,请使用操作系统磁盘加密并保护本机账户。删除会议或人物会删除应用管理的对应音频文件;删除整个 data/ 前应先停止服务。
python -m pytest tests/ -q --ignore=tests/test_smoke_boot.py
cd web
npm run check:i18n
npm run typecheck
npm run build
npm audit --omit=dev --audit-level=high
真实模型冒烟测试会下载并加载大模型,因此常规 CI 默认不运行:MATRIX_TEST_REAL_DEPENDENCIES=1 pytest tests/test_smoke_boot.py -v。PowerShell 请先执行 $env:MATRIX_TEST_REAL_DEPENDENCIES="1"。
欢迎通过 Pull Request 贡献代码,流程与约定见 CONTRIBUTING.md。
项目代码采用 MIT License。模型权重和部分数据集拥有各自的许可证与使用条款,不随 MIT 自动授权;部署前请阅读 模型说明 并核对上游条款。
Python
76.1%
Vue
12.6%
TypeScript
9.8%