返回首页

CLI tapeback:立体声说话者分离 Linux 通话

Tapeback — Linux 通话录音 CLI,支持立体声说话者分离:左声道麦克风,右声道 monitor。faster-whisper 转录,可选 pyannote 和 LLM-summary(Markdown 用于 Obsidian)。模块化扩展最小化依赖。

Tapeback:支持说话者分离的本地通话录音器
Advertisement 728x90

# Linux 本地 CLI 会议录音工具:立体声扬声器分离与 AI 摘要

CLI 工具 tapeback 通过 PipeWire/PulseAudio 捕获音频,使用 faster-whisper 转录,通过立体声通道分离发言者,并利用大语言模型生成摘要。最终结果是一个 Markdown 文件,直接保存到你指定的目录——甚至是 Obsidian 知识库。只需一条命令开始录音,按 Ctrl+C 结束即可自动触发处理流程:捕获 → 转录 → 发言者分离 → 摘要生成。

支持 Zoom、Teams、Meet、Discord、Telegram。捕获系统音频,无需任何服务 API。

tapeback start
# 会议进行中
# Ctrl+C → 处理 → Markdown

立体声扬声器分离

架构利用立体声 WAV 文件:左声道为你的麦克风(“你”),右声道为显示器音频源(其他人)。Whisper 分别处理每个声道。Pyannote 发言者分离仅运行在右声道上,标记 Speaker 1、2 等。片段根据 RMS 能量水平分类。

Google AdInline article slot

物理声道分离消除了聚类错误:不会混淆相似声音,不会将同一发言者拆分到不同簇。GPU 加速提升速度,CUDA 出错时自动回退到 CPU。

┌─────────────┐     ┌──────────────┐     ┌────────────────────┐
│   立体声    │     │   Whisper    │     │   声道分类:       │
│  WAV 文件   │───▶│  (逐声道)     │───▶│   L → "你"        │
│  L: 麦克风   │     │              │     │   R → pyannote     │
│  R: 显示器   │     │              │     │      处理他人      │
└─────────────┘     └──────────────┘     └────────────────────┘

可选依赖

基础安装(~320 MB):录音 + 转录。额外组件避免了你不需要的 2 GB PyTorch 臃肿:

| 变体 | 添加功能 | 大小 |

Google AdInline article slot

|---------------|---------------------------|---------|

| tapeback | 录音 + Whisper | ~320 MB|

| [llm] | 摘要(Anthropic、OpenAI、Groq 等) | +50 MB |

Google AdInline article slot

| [diarize] | pyannote + PyTorch | +2 GB |

| [tray] | 系统托盘 | +1 MB |

优雅降级:没有 pyannote?右声道标记为“其他人”。__init__ 中使用延迟导入。

LLM 集成与回退机制

支持 7 种提供商:Anthropic、OpenAI、Groq、Gemini、DeepSeek、OpenRouter、Qwen。兼容 OpenAI 的使用统一 API 和基础 URL:

_OPENAI_COMPATIBLE_BASE_URLS = {
    "groq": "https://api.groq.com/openai/v1",
    "gemini": "https://generativelanguage.googleapis.com/v1beta/openai/",
    "deepseek": "https://api.deepseek.com",
    # ...
}

提供商出错?自动回退到下一个。转录文本始终保存。摘要以 JSON 形式嵌入 Markdown:

## 摘要
快速概述。
### 行动项
- [ ] **你:** 周五前发送报告
- [ ] **Speaker 1:** 审查 PR
### 关键决策
- 选择 PostgreSQL 而非 MongoDB

Arch Linux 打包

AUR 中提供 4 个元包:

  • tapeback — 核心。
  • tapeback-tray — 托盘。
  • tapeback-llm — LLM 支持。
  • tapeback-diarize — PyTorch + pyannote。

yay 在虚拟环境中处理 pip 依赖。通过 release.sh + PyPI CI(Trusted Publisher)+ AUR 脚本发布。

yay -S tapeback tapeback-diarize tapeback-llm tapeback-tray

配置在 ~/.config/tapeback/.env

TAPEBACK_VAULT_PATH=~/Documents/obsidian/vault

开发与经验教训

MVP 3 天完成,v0.8.9 两周内搞定(修复 bug、测试)。规范驱动:Markdown 规范带完成标准。代码由 Claude 生成并审查。及早检查 PyPI/AUR 名称——规范化会导致 echo-vault == echovault

关键要点

  • 立体声分离:麦克风(你) vs 显示器(他人)——确定性处理,避免 pyannote 的概率错误。
  • 本地处理:faster-whisper + 可选 PyTorch,无需云端。
  • 模块化:发言者分离/LLM/托盘的额外组件,平滑回退。
  • 集成:Obsidian 兼容 Markdown,带 JSON 摘要(行动项、决策)。
  • 安装uv tool install tapeback[tray,diarize,llm] 或 AUR。

— Editorial Team

Advertisement 728x90

继续阅读