@NFTCPS: 给你们扒一个 macOS 终端神器,专治开会听不懂英文: 麦克风或者会议声音进去,实时字幕加中文翻译直接出来,全程不碰网络,隐私党狂喜 吃 Apple Silicon 的 GPU 本地跑,英文转写完直接喂给混元 MT 翻译成中文 还能分谁…

X AI KOLs Timeline 工具

摘要

介绍一个macOS本地实时英文转录和中文翻译的命令行工具livecaption,利用Apple Silicon GPU本地运行,支持说话人分离、two-pass纠偏,无需联网,保护隐私。

给你们扒一个 macOS 终端神器,专治开会听不懂英文: 麦克风或者会议声音进去,实时字幕加中文翻译直接出来,全程不碰网络,隐私党狂喜 吃 Apple Silicon 的 GPU 本地跑,英文转写完直接喂给混元 MT 翻译成中文 还能分谁在说话,标 S1、S2,直播开会同时录自己麦克风和对方扬声器 two-pass 纠偏,先出低延迟字幕,整句说完再重解一遍纠错,体验拉满 模型首次自动下载 3GB 多,结果能丢终端也能存成 Markdown。英语苦手赶紧码住。 https://github.com/six-ddc/livecaption…
查看原文
查看缓存全文

缓存时间: 2026/06/17 13:58

给你们扒一个 macOS 终端神器,专治开会听不懂英文:

麦克风或者会议声音进去,实时字幕加中文翻译直接出来,全程不碰网络,隐私党狂喜 吃 Apple Silicon 的 GPU 本地跑,英文转写完直接喂给混元 MT 翻译成中文 还能分谁在说话,标 S1、S2,直播开会同时录自己麦克风和对方扬声器 two-pass 纠偏,先出低延迟字幕,整句说完再重解一遍纠错,体验拉满

模型首次自动下载 3GB 多,结果能丢终端也能存成 Markdown。英语苦手赶紧码住。

https://github.com/six-ddc/livecaption…


six-ddc/livecaption

Source: https://github.com/six-ddc/livecaption

简体中文 | English

livecaption

macOS 本地实时英文转录 + 中文翻译的命令行工具,无 UI,输出到终端或文本文件。

livecaption 演示:实时转录、S1/S2 说话人分离(不同颜色)、two-pass 纠偏(红色删除线为纠掉的词、绿色为纠正后的词)与逐句中文翻译

  • ASR:mlx-audio 跑 NVIDIA nemotron-3.5-asr-streaming-0.6b(cache-aware 真流式 transducer),Apple Silicon GPU / MLX;端点检测用 Silero VAD(mlx 版)。
  • 说话人分离(默认开,--no-diarize 关):NVIDIA Sortformer v2.1 流式模型,最多 4 人;句子按说话人切分、标 S1/S2/…、各自翻译,编号全程稳定。
  • 翻译:mlx-lm 跑 Hy-MT2-1.8B-8bit(腾讯混元 MT 第三代),Apple Silicon GPU。
  • 音源:麦克风,或会议系统音频(Zoom/Teams/浏览器扬声器输出),或两者双流分轨。

ASR 和翻译都跑 Apple GPU(统一内存);VAD 把静音段挡在 encoder 之外,只有说话时才耗 GPU;翻译只处理 ASR 的定稿句,不反压音频。定稿句经过 two-pass 纠偏:实时字幕用低延迟流式解码,句子结束时用最大 look-ahead 整句重解一遍,定稿和翻译都用更准的重解结果。

前置要求

  • macOS 14.2+(系统音频捕获用到 Core Audio process tap;Tahoe 建议 ≥ 26.1)
  • Apple Silicon
  • uv
  • system / both 音源需要:Swift 5.9+(编译 audiotee)

安装

uv sync
# 仅在需要捕获会议/系统音频时,编译 audiotee:
bash scripts/build_audiotee.sh

首次运行会自动从 Hugging Face 下载 ASR(约 1.2GB)、Silero VAD(很小)、说话人分离模型 Sortformer(约 225MB,默认开启,--no-diarize 可关)和翻译模型(约 2GB)。

用法

# 麦克风实时转录 + 翻译,输出到终端
uv run livecaption --source mic

# 转录会议输出(系统音频),写入文件
uv run livecaption --source system --out meeting.md

# 双流分轨:同时转录自己的麦克风和对方的声音
uv run livecaption --source both --out meeting.md

# 转录音频文件(会议录音复盘 / 端到端测试;wav/mp3/m4a,自动重采样,跑完即退出)
uv run livecaption --source file --file recording.m4a --out recording.md

# 翻译默认带前 3 句上下文(提升代词指代/术语连贯);如需关闭或调整:
uv run livecaption --source system --context 0

# 只转录不翻译
uv run livecaption --source mic --no-translate

# 翻成日语、换更大的翻译模型
uv run livecaption --target-lang ja-jp --mt-model mlx-community/Hy-MT2-7B-4bit

# 非英语会议:指定说话语言(40 个 locale,传错会列出全部可选值)
uv run livecaption --asr-lang de-de --target-lang zh-cn

# 只捕获某个 App(先用 `ps`/活动监视器拿到 Zoom 的 PID)
uv run livecaption --source system --include-pid 12345

# 列出麦克风设备
uv run livecaption --list-devices

# 配色:默认 auto(探测终端背景明暗,探测不到则用高对比保底配色);
# 浅色背景看不清时显式指定,深色终端同理
uv run livecaption --theme light

# 监控 MLX 统一内存占用(终端底部状态行显示 active/cache/peak;默认关闭,诊断用)
uv run livecaption --source mic --mem

终端里:底部灰色行是实时中间结果;定稿句向上滚动为原文,下方是译文(加粗或彩色,取决于主题)。说话人 S1–S4 各用一种颜色便于辨认。

配色不清楚时:默认 --theme auto 会尝试从 COLORFGBG 探测背景明暗,但多数 macOS 终端(Terminal/iTerm/VS Code)不设这个变量,探测不到就回退到“默认前景色 + 加粗”的保底方案(任何背景都和正文一样清楚,但译文不带专属颜色)。想要彩色译文就显式指定 --theme light(浅色背景,译文深青蓝)或 --theme dark(深色背景,译文亮青)。

权限

  • 麦克风:首次运行系统弹窗,授权落在你的终端 App 上。

  • 系统音频(重要):audiotee 是裸二进制、又经 Python 子进程启动,macOS 的授权弹窗经常不出现。如果跑 --source system 看到「正在监听」却完全没有转录(约 8 秒后程序会打印静音警告),几乎可以肯定是「屏幕与系统录制」权限没给——Core Audio 在无权限时会静默返回静音流,不报错也不弹窗。手动授权:

    1. 打开 系统设置 > 隐私与安全性 > 屏幕与系统录制
    2. macOS 15(Sequoia)及以上这一栏分上下两个子区:往下滚到 「仅系统音频录制」(System Audio Recording Only) 子区——不是顶部那个「屏幕与系统录制」子区——把运行本工具的终端 App(Terminal / iTerm / VS Code 等)加进去并打开开关;没有就点 + 手动添加(如 /System/Applications/Utilities/Terminal.app)。audiotee 只做音频 tap、不录屏,加错子区会照样全 0 静音。(macOS 14 只有单一列表,无此区分。)
    3. 完全退出并重启该终端 App(TCC 权限变更必须重启进程才生效),然后重跑
    4. 仍不行就先用 macOS 自带的 Terminal.app(而非 iTerm/VS Code 终端)跑一次,它更容易触发授权弹窗

    「上下两个子区」这个细节连 audiotee 自己的 README 都没写,只见于作者在 audiotee#7 的回复。

    验证权限是否生效:播放任意声音,跑 uv run python scripts/diag_system_audio.py,看 max |amplitude| 是否 > 0。

选型说明

nemotron-3.5-asr-streamingnemotron-speech-streaming-en 的官方多语言后继(同为 cache-aware 真流式,0.6B 参数预算不变),不是用滑窗模拟离线模型。运行时选 mlx-audio:MLX 原生跑 Apple GPU(sherpa-onnx 在 mac 上只能 CPU,CoreML 对流式 transducer 算子覆盖不全)。mlx-audio 只提供 pull 式接口,本项目把它的 streaming 内核改写成了 push 式实时 stepper(asr.py),端点检测由 Silero VAD 按 sherpa 的 rule1/2/3 语义重实现。默认说话语言是 en-us(内部映射到模型的 en-US key),避免 auto 检测在混杂语流里跳变。语言参数同时支持小写短代码和英文语言名,如 zh-cn / Chineseja-jp / Japanesede-de / German

已知风险与退路

  • ASR 流式质量不满意 → 调大 ASR_ATT_CONTEXT(如 [56,13],精度最好但 1.12s 一刷、partial 延迟更大)。
  • ASR 与翻译同抢 GPU 出现卡顿 → 翻译换更小 / 更低精度的模型,--no-diarize 关掉说话人分离,或 --no-translate 只转录,让 ASR 独占 GPU。
  • 显存吃紧 → ASR 换 8bit 量化版 --asr-model mlx-community/nemotron-3.5-asr-streaming-0.6b-8bit
  • 翻译质量不够 → --mt-model mlx-community/Hy-MT2-7B-4bit(约 4.2GB,更准)。
  • 单独 tap 某个 App 偶发静音 → 默认 tap 全系统输出更稳(不传 --include-pid)。

相似文章

@GitHub_Daily: GitHub 上一款专为 Mac 打造的纯本地语音转文字开源工具:MacParakeet,识别准确率颇高。 支持直接拖拽音视频文件,或者贴个 YouTube 链接,就能快速输出带时间戳和说话人标签的文稿。 还能同时录制电脑系统声音和麦克风…

X AI KOLs Timeline

MacParakeet is a new open-source Mac application that provides fast, fully local voice transcription using Apple's Neural Engine and NVIDIA's Parakeet model, ensuring privacy by keeping audio data on-device.

@VincentLogic: 有人开源了一个隐形提词器,藏在 MacBook 的刘海里 开视频会议的时候最尴尬的一件事就是:你要么看屏幕上的内容,要么看摄像头。两个不可能同时做到,对面看你的眼神永远是飘的 这个工具的思路很聪明。把提词内容显示在刘海区域,因为摄像头就在…

X AI KOLs Timeline

有人开源了隐藏在MacBook刘海区域的隐形提词器,让视频会议时看提词内容就自然看向摄像头,保持眼神交流,免费开源且支持AI辅助。