订阅的老时课程一直是在小程序里听音频,有时候会想看看文字稿,以前也想在自己笔记本上部署个语音识别产品,当时搜了下,可能也就讯飞、百度什么的有些可以免费使用的产品,开源的解决方案好像没有。
今天突然又想到这个念头,就在chatgpt和gemini上问了下,找到他们共同推荐的开源方案:OpenAI’s Whisper,结果竟然很轻松地就在我的老笔记本(LenovoTninkPad X1 Carbon)上跑起来了。

感叹一句,科技发展的速度真是快呀!
提问(chatgpt/gemini): “语音识别,中文,逐字稿,有能在mac10.15.7上运行的开源方案吗?16G内存 ”
chatgpt:
可以的,而且在 macOS 10.15.7(Catalina)+ 16GB 内存 这个条件下是完全可行的。
我直接给你 “能跑 + 不折腾 + 实际可用” 的开源方案结论。
✅ 结论先行(给你选)
在 macOS 10.15.7 上,最稳妥、成功率最高的是:
🥇 OpenAI Whisper(CPU 版)
🥈 Whisper.cpp(强烈推荐,最省资源)
❌ 不推荐:WhisperX / NeMo(对系统和依赖要求过高)
🥇 方案一:OpenAI Whisper(Python 版,经典方案)
✅ 兼容 Catalina
✅ 16GB 内存完全够
✅ 中文效果好
⚠️ 速度一般(CPU)
一、环境要求(你都满足)
macOS 10.15.7
Python 3.8 / 3.9(不要 3.11)
无需 GPU
16GB RAM ✅
二、安装步骤(一步一步,不踩雷)
1️⃣ 安装 Python(如果没有)
👉 推荐 3.9
brew install python@3.9
确认:
python3.9 --version
2️⃣ 安装 FFmpeg(必须)
brew install ffmpeg
3️⃣ 安装 Whisper
pip3.9 install -U openai-whisper
三、使用(最简单)
whisper test1.mp3 \
--model medium \
--language Chinese \
--output_format txt
👉 输出:
test1.txt
📌 模型选择建议(16GB 内存)
| 模型 | 准确率 | 速度 |
|---|---|---|
| small | ⭐⭐⭐ | 快 |
| medium(推荐) | ⭐⭐⭐⭐ | 中 |
| large | ⭐⭐⭐⭐⭐ | 慢 |
四、优缺点
✅ 中文成熟
✅ 社区大
❌ 比 whisper.cpp 慢
❌ Python 依赖稍多
🥈 方案二:Whisper.cpp(强烈推荐 ⭐⭐⭐⭐⭐)
这是我最推荐你用的方案
为什么?
🚀 极快(比 Python Whisper 快很多)
💾 内存占用低
🧱 完全兼容 macOS 10.15.7
📴 完全离线
⚙️ 一个二进制文件就能跑
一、安装(超简单)
brew install whisper-cpp
二、下载模型
cd /usr/local/share/whisper-cpp
./models/download-ggml-model.sh medium
三、使用
whisper-cpp \
-m models/ggml-medium.bin \
-l zh \
-f test1.mp3 \
-otxt
👉 输出:
test1.txt
四、为什么 whisper.cpp 特别适合你
| 项目 | Whisper.cpp |
|---|---|
| macOS 10.15 | ✅ |
| Python | ❌ 不需要 |
| 内存 16GB | ✅ |
| 中文 | ⭐⭐⭐⭐ |
| 稳定性 | ⭐⭐⭐⭐⭐ |
❌ 为什么不推荐 WhisperX
依赖 PyTorch + CUDA / FFmpeg 高版本
Catalina 极易踩坑
安装时间 > 使用时间
🎯 我的最终建议(直接照着做)
如果你想:
一次成功、不折腾、长期可用
👉 直接用:Whisper.cpp + medium 模型
gemini:
在 macOS 10.15.7 (Catalina) 上运行现代 AI 模型会有一些挑战,因为很多最新的软件(如最新版的 Buzz 或 MacWhisper)通常要求 macOS 11.0 或更高版本。
不过,你的 16GB 内存 是一个很大的优势。针对你的系统环境,我推荐以下三个最稳妥、能跑得动且准确率高的开源方案:
方案一:whisper.cpp (最推荐:轻量、高效、无视系统限制)
这是目前在旧款 Mac(尤其是 Intel 芯片)上运行语音识别的最佳方式。它是用 C/C++ 重写的 Whisper,不依赖复杂的 Python 环境,对内存管理极好。
为什么适合你: 它是命令行工具,没有复杂的图形界面要求,完美适配 macOS 10.15。
性能: 16GB 内存足够运行
medium(中型)甚至large(大型)模型。安装步骤:
打开终端,克隆仓库:
git clone https://github.com/ggerganov/whisper.cpp编译:
cd whisper.cpp && make下载中文模型(推荐 medium):
bash ./models/download-ggml-model.sh medium转换音频为 16kHz WAV(Whisper 要求):
ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav运行识别:
./main -m models/ggml-medium.bin -f output.wav -l zh
方案二:Buzz (寻找旧版本 v0.7.x)
Buzz 是一个非常流行的图形化界面工具,内置了 Whisper。虽然最新版可能不支持 Catalina,但你可以尝试安装其 Legacy 历史版本。
下载地址: 前往 Buzz GitHub Releases 页面。
版本建议: 尝试 v0.7.1 或更早的版本,这些版本对旧版 macOS 的兼容性较好。
优点: 界面简单,直接拖入 MP3 即可,支持导出 SRT 和文本。
注意: 如果打开报错“程序损坏”,请在终端输入:
sudo xattr -r -d com.apple.quarantine /Applications/Buzz.app
方案三:使用 Python + faster-whisper (手动搭建)
如果方案一的命令行让你觉得复杂,可以通过 Python 搭建一个稳定的环境。
准备: 安装 Homebrew,然后安装 Python 3.9 或 3.10。
安装命令:
pip install faster-whisper优势:
faster-whisper使用了 CTranslate2 引擎,即使在 Intel CPU 上,识别速度也比 OpenAI 原版快很多。模型选择: 你的 16GB 内存建议使用
medium模型。它在中文准确率上已经非常出色,且运行起来不会导致系统卡死。
核心建议与避坑指南
Intel vs Apple Silicon: 10.15 系统的机器大概率是 Intel 芯片。由于没有 M1/M2 的神经网络引擎加速,识别速度会比新 Mac 慢,请务必使用
whisper.cpp或faster-whisper,原版 OpenAI Whisper 在你这台机器上会非常慢。音频预处理: 所有 Whisper 系列工具对 16kHz 的单声道 WAV 文件支持最好。建议先用
ffmpeg转换一下,可以极大地减少识别出错率。模型权衡:
small 模型: 速度极快,但中文错别字较多。
medium 模型: 最佳平衡点(16GB 内存首选)。
large-v3 模型: 准确率最高,但在 10.15 系统上可能会感到明显发热和卡顿。
你需要我为你提供 whisper.cpp 更详细的编译命令,还是需要我帮你找一个特定版本的 GUI 安装包下载链接?
编译错误:
cmake build error:/Users/juan/git/whisper.cpp/ggml/src/ggml-metal/ggml-metal-device.m:635:83: error: use of undeclared identifier ‘MTLGPUFamilyApple7’ dev->props.has_simdgroup_reduction = [dev->mtl_device supportsFamily:MTLGPUFami… ^ /Users/juan/git/whisper.cpp/ggml/src/ggml-metal/ggml-metal-device.m:638:75: error: use of undeclared identifier ‘MTLGPUFamilyApple7’ dev->props.has_simdgroup_mm = [dev->mtl_device supportsFamily:MTLGPUFamilyApple7]; ^ /Users/juan/git/whisper.cpp/ggml/src/ggml-metal/ggml-metal-device.m:642:70: error: use of undeclared identifier ‘MTLGPUFamilyApple6’ dev->props.has_bfloat |= [dev->mtl_device supportsFamily:MTLGPUFamilyApple6]; ^ /Users/juan/git/whisper.cpp/ggml/src/ggml-metal/ggml-metal-device.m:776:85: error: use of undeclared identifier ‘MTLGPUFamilyApple7’ dev->props.supports_gpu_family_apple7 = [dev->mtl_device supportsFamily:MTLGPUFa… ^ 4 errors generated. make[2]: *** [ggml/src/ggml-metal/CMakeFiles/ggml-metal.dir/ggml-metal-device.m.o] Error 1 make[2]: *** Waiting for unfinished jobs…. make[1]: *** [ggml/src/ggml-metal/CMakeFiles/ggml-metal.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs…. [ 56%] Linking CXX shared library libggml-blas.dylib [ 56%] Built target ggml-blas [ 58%] Linking CXX shared library libggml-cpu.dylib [ 58%] Built target ggml-cpu make: *** [all] Error 2
解释原因:
chatgpt:
这个报错非常典型,而且你判断方向是对的。
我直接给你明确原因 + 3 个可行解决方案(从最稳到次优),照着做即可。
✅ 一句话结论(非常确定)
你的错误 不是 whisper.cpp 的问题,而是:
macOS 10.15.7(Catalina)+ 当前 Xcode / SDK 太老
❌ 不支持MTLGPUFamilyApple6 / Apple7这些 Metal 枚举
而 最新版 whisper.cpp 默认启用了 Metal GPU 加速,
于是编译 ggml-metal 时 直接炸掉。
❗ 错误本质
这些常量:
MTLGPUFamilyApple6
MTLGPUFamilyApple7
👉 只在 macOS 11+ / 新版 Xcode SDK 中存在
你的环境:
macOS 10.15.7 ❌
对应的 Metal SDK ❌
所以编译期直接报:
use of undeclared identifier 'MTLGPUFamilyApple7'
✅ 解决方案一(强烈推荐 ⭐⭐⭐⭐⭐)
关闭 Metal,用 CPU 编译(最稳、最省事)
对你来说 CPU 已经完全够用(16GB 内存 + medium 模型)
✅ 正确编译方式(一定成功)
1️⃣ 清理旧构建
cd ~/git/whisper.cpp
rm -rf build
2️⃣ 关闭 Metal(关键一步)
cmake -B build \
-DGGML_METAL=OFF
3️⃣ 编译
cmake --build build -j
👉 这一步在 Catalina 上 100% 能过
4️⃣ 使用
./build/bin/whisper-cpp \
-m models/ggml-medium.bin \
-l zh \
-f test1.mp3 \
-otxt
📌 性能说明:
medium 模型
1 小时音频 ≈ 1.2–1.5 小时 CPU
完全可接受、稳定
🥈 解决方案二(如果你一定想用 Metal)
⚠️ 不推荐,但给你完整说明
你需要同时满足:
macOS ≥ 11
Xcode ≥ 14
Command Line Tools 更新
👉 Catalina 无解,不是参数问题。
🥉 解决方案三(锁定旧版 whisper.cpp)
如果你 非要在 Catalina + Metal 编译:
git checkout v1.5.4
(那时还没引入 Apple6 / Apple7)
❌ 但缺点是:
模型支持较旧
中文效果略差
不如 CPU 新版稳定
🎯 我的最终、专业建议(结合你前面的需求)
你要的是:
中文逐字稿、批量、长期稳定
而不是:
跑 GPU benchmark
👉 直接用:CPU + GGML_METAL=OFF
这是:
whisper.cpp 官方支持路径
Catalina 用户的事实标准解
不折腾、不踩坑
gemini:
这个错误是因为 macOS 10.15.7 (Catalina) 的系统版本太老了。
MTLGPUFamilyApple7 是 Apple 在较新版本的 Xcode 和 macOS SDK 中引入的定义(主要针对 Apple Silicon 芯片)。你的系统编译器不认识这些新定义,导致在编译 ggml-metal(苹果显卡加速模块)时报错。
对于 10.15 系统的 Intel Mac,最直接的解决办法是禁用 Metal (GPU) 加速,改用 CPU 编译。在 Intel Mac 上,whisper.cpp 的 CPU 优化(利用 AVX/AVX2 指令集)已经非常出色,16GB 内存跑 medium 模型完全没问题。
请按照以下步骤重新编译:
第一步:清理之前的失败记录
在 whisper.cpp 目录下执行:
Bash
make clean
rm -rf build
第二步:禁用 Metal 进行编译
使用以下命令强制关闭 Metal 加速:
如果你是直接用 make 编译:
Bash
# 使用 WHISPER_NO_METAL=1 参数
WHISPER_NO_METAL=1 make -j
如果你是使用 cmake 编译(推荐):
Bash
mkdir build
cd build
cmake -DGGML_METAL=OFF ..
cmake --build . --config Release
为什么这样做可以?
兼容性: 禁用 Metal 后,程序将不再尝试调用那些你系统中不存在的 GPU 接口。
性能: 在 2019 年及更早的 Intel Mac 上,集成显卡(Intel UHD/Iris)跑 AI 模型的效率并不比 CPU 高多少。
whisper.cpp会自动调用苹果系统的Accelerate框架,这在 Intel CPU 上运行得非常快。
编译成功后如何运行?
编译完成后,你会得到一个名为 main 的可执行文件。
下载模型(如果你还没下载):
Bash
bash ./models/download-ggml-model.sh medium转换音频(确保是 16kHz 的 WAV):
Bash
ffmpeg -i your_file.mp3 -ar 16000 -ac 1 -c:a pcm_s16le input.wav开始识别:
Bash
./main -m models/ggml-medium.bin -f input.wav -l zh
whisper.cpp的github源码 https://github.com/ggml-org/whisper.cpp
我用的命令供参考:
./build/bin/whisper-cli -m /Users/XXXX/whisper.cpp/models/ggml-medium.bin -f XXXX/XXX.mp3 -otxt -l zh –prompt “这是一段中文音频,请包含逗号、句号。例如:你好,这是时寒冰微课堂。”
使用 whisper.cpp 生成 .srt 字幕文件,最关键的参数是 --output-srt(简写为 -osrt)。
如果你在 iPhone 拍摄后将视频传到电脑上使用命令行操作,以下是标准且推荐的参数组合。
1. 核心命令示例
Bash
./main -m models/ggml-base.bin -f input_video.wav --language es --output-srt
2. 常用参数详解
| 参数 | 说明 | 建议设置 |
|---|---|---|
-osrt / --output-srt | 最核心: 指定输出为 SRT 字幕格式。 | 必须添加,否则默认只在终端打印文字。 |
-l / --language | 指定识别语种。 | 西语设为 es(手动指定比 auto 更准确)。 |
-m / --model | 指定使用的模型文件路径。 | 推荐 base 或 small(平衡速度与准确度)。 |
-t / --threads | 使用的 CPU 线程数。 | 设为你的 CPU 核心数(如 -t 8)可大幅加速。 |
-f / --file | 输入的音频文件路径。 | 注意:whisper.cpp 只接受 16kHz 的 WAV 格式。 |
3. 提高字幕质量的进阶参数
为了让生成的 SRT 字幕在视频中阅读感更好,建议加入以下控制:
--max-len [n]:设置每行字幕的最大长度(字符数)。建议设为40,防止单行字幕过长遮挡画面。--split-on-word:防止在单词中间断行,确保西语单词的完整性。--ovtt:如果你需要 VTT 格式(网页播放常用),可以替换osrt。
⚠️ 重要提醒:音频预处理
whisper.cpp 不能直接读取 iPhone 拍摄的 .mov 或 .mp4 视频,你需要先用 ffmpeg 提取并转换音频:
Bash
# 将 iPhone 视频转换为符合 whisper.cpp 要求的音频格式
ffmpeg -i input.mov -ar 16000 -ac 1 -c:a pcm_s16le output.wav
💡 隐私保护的小总结
使用 whisper.cpp + ffmpeg 是目前最高级别的隐私方案:
FFmpeg 提取音频(本地)。
Whisper.cpp 识别(本地,完全离线)。
得到 SRT 文件(本地)。