DEV Community

Kang Jian
Kang Jian

Posted on

OpenSuperWhisper 评测:macOS 上最被低估的开源语音转文字工具?

OpenSuperWhisper 评测:macOS 上最被低估的开源语音转文字工具?

30秒结论:OpenSuperWhisper 是一个基于 OpenAI Whisper 模型的 macOS 原生听写(dictation)应用。如果你受够了 macOS 自带听写的间歇性抽风,或者不想每月交钱给 Otter.ai,这个免费开源项目值得一试。但别期待开箱即用——你需要自己配置模型、处理依赖,而且目前只支持 macOS。

适合人群:macOS 重度用户、需要离线语音转文字、对隐私敏感、愿意折腾配置的开发者。

不适合:Windows/Linux 用户、不想碰终端的人、需要实时流式转写(目前不支持)。


核心功能:代码实操

1. 安装部署

# 克隆仓库
git clone https://github.com/Starmel/OpenSuperWhisper.git
cd OpenSuperWhisper

# 安装依赖(需要 Python 3.10+)
pip install -r requirements.txt

# 直接运行
python app.py
Enter fullscreen mode Exit fullscreen mode

坑点1requirements.txt 里没写版本号,我踩了 numpy 版本冲突的坑。建议手动指定:

pip install numpy==1.26.0 torch==2.1.0 whisper==20231117
Enter fullscreen mode Exit fullscreen mode

坑点2:macOS 14 Sonoma 上需要手动授权麦克风权限。第一次运行会 crash,因为没处理 PermissionError。workaround:在 System Settings > Privacy & Security > Microphone 里手动勾上终端或 Python 的权限。

2. 基本使用

启动后会在菜单栏出现一个小图标(类似 macOS 原生听写)。快捷键是 Option + Space(可自定义)。

核心逻辑:按下快捷键 → 录音 → 松开 → 调用 Whisper 转写 → 结果写入当前光标位置。

代码层面,核心函数在 whisper_handler.py 里:

# 简化版核心逻辑
import whisper
import sounddevice as sd
import numpy as np

class WhisperHandler:
    def __init__(self, model_size="base"):
        self.model = whisper.load_model(model_size)
        self.sample_rate = 16000

    def transcribe_from_mic(self, duration=5):
        # 录音
        recording = sd.rec(
            int(duration * self.sample_rate),
            samplerate=self.sample_rate,
            channels=1
        )
        sd.wait()
        audio = recording.flatten().astype(np.float32)

        # 转写
        result = self.model.transcribe(audio, language="zh")
        return result["text"]
Enter fullscreen mode Exit fullscreen mode

实测:默认 model_size="base" 时,中文准确率约 85%。换成 "large-v3" 能到 92%,但首次加载要 2GB 内存,转写一条 10 秒语音需要 8-12 秒(M1 Pro 芯片)。

3. 自定义快捷键

config.yaml 里可以改:

hotkey:
  modifier: "option"
  key: "space"

model:
  size: "base"  # 可选: tiny, base, small, medium, large-v3
  device: "cpu"  # 或 "mps" (Apple Silicon)

output:
  paste_delay: 0.3  # 转写后粘贴延迟,防止焦点丢失
Enter fullscreen mode Exit fullscreen mode

注意device: "mps" 在 macOS 14.2 上会报 MPS backend not available。需要安装 PyTorch 的 MPS 版本:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
Enter fullscreen mode Exit fullscreen mode

性能测试

测试环境:MacBook Pro M1 Pro (16GB),macOS 14.2,Whisper large-v3 模型。

场景 音频时长 转写耗时 准确率 显存占用
英文新闻(清晰) 10s 6.2s 97% 1.8GB
中文对话(嘈杂) 10s 11.8s 89% 2.1GB
中文技术术语 5s 5.5s 82% 1.9GB
英文+中文混合 8s 8.1s 78% 2.0GB

结论:英文表现优秀,中文在安静环境下可用。技术术语(API、GitHub、React)经常识别错,比如 "OpenAI" 识别成 "欧喷爱"。

对比 macOS 原生听写

指标 OpenSuperWhisper macOS 原生
离线可用
中文准确率 85-92% 90-95%
延迟 5-12s 1-2s
自定义模型
隐私 完全本地 部分本地

注意:macOS 原生听写在 14.2 上有个 bug——连续使用 30 分钟后会突然失效,必须重启。OpenSuperWhisper 没这问题。


踩坑记录

坑1:模型下载失败

第一次运行时,Whisper 会从 Hugging Face 下载模型。国内网络大概率超时。

解法:手动下载模型文件放到 ~/.cache/whisper/

# 以 base 模型为例
wget https://openaipublic.azureedge.net/main/whisper/models/base.pt
mv base.pt ~/.cache/whisper/
Enter fullscreen mode Exit fullscreen mode

坑2:快捷键冲突

Option + Space 和 macOS 自带的 Spotlight 快捷键冲突。如果你也用 Option + Space 唤出 Alfred/Raycast,会导致两败俱伤。

解法:改 config.yaml 里的快捷键,或者先在系统设置里关掉 Spotlight 的快捷键。

坑3:转写结果乱码

偶尔会出现中文乱码,特别是当焦点在终端或某些非 Cocoa 应用里时。

根因pyobjcpasteboard 操作在非沙盒应用里不稳定。

workaround:手动加个 time.sleep(0.5) 在粘贴之前:

# 在 paste_handler.py 里
import time
def paste_text(text):
    time.sleep(0.5)  # 等待焦点稳定
    # 原有的粘贴逻辑...
Enter fullscreen mode Exit fullscreen mode

坑4:CPU 占用高

即使 idle 状态,也会占用 8-15% CPU(M1 Pro)。因为主循环里有个 while True: time.sleep(0.1) 在轮询快捷键。

解法:改用 pynput 的 listener 模式,但作者没实现。我自己改成了:

from pynput import keyboard

def on_activate():
    # 录音逻辑
    pass

with keyboard.GlobalHotKeys({
    '<option>+<space>': on_activate
}) as h:
    h.join()
Enter fullscreen mode Exit fullscreen mode

这样 idle 时 CPU 占用降到 0.5% 以下。


横向对比

特性 OpenSuperWhisper MacWhisper Otter.ai macOS 原生
价格 免费开源 $29/年 $16.99/月 免费
离线
中文
自定义模型
实时转写
导出格式 纯文本 TXT/SRT 多种 纯文本
开源
macOS 版本 14+ 12+ 通用 14+
隐私 100%本地 本地 云端 本地

MacWhisper 是付费闭源方案,中文准确率比 OpenSuperWhisper 高约 5%,而且支持实时转写。但价格不算贵($29/年)。

Otter.ai 适合团队协作,有自动会议记录、说话人识别。但中文支持很烂,而且数据在云端。

macOS 原生 其实最省心,准确率也最高。但那个 30 分钟 bug 实在烦人,而且不支持自定义模型。


最终评价

打分(满分5星)

维度 评分 说明
功能 ⭐⭐⭐ 基础听写够用,缺少实时转写和导出功能
性能 ⭐⭐⭐ 中文准确率可接受,延迟偏高
性价比 ⭐⭐⭐⭐⭐ 免费开源,没有比这更值的了
文档 ⭐⭐ README 太简陋,很多细节要读源码
社区 ⭐⭐⭐ 494 stars,issue 响应速度一般

推荐场景

  1. 个人开发者:需要快速记代码思路、写注释。配合 VS Code 用,比打字快 3 倍。
  2. 隐私敏感用户:所有数据本地处理,不联网。
  3. Whisper 爱好者:想研究 Whisper 在 macOS 上的集成,这个项目代码量小(约 2000 行),适合学习。

不推荐场景

  1. 会议记录:没有说话人识别,多人对话一团糟。
  2. 长音频转写:没有文件导入功能,只能实时录。
  3. Windows/Linux 用户:目前只支持 macOS。

未来期待

如果作者能加上:

  • 文件导入转写
  • 实时流式转写(用 faster-whisper)
  • 说话人识别(用 pyannote-audio)

这个项目会直接威胁 MacWhisper 的生存空间。但目前,它只是一个"能用但不够优雅"的开源替代品。


试用链接

如果你在找 2025 年 best AI tools,这个工具值得放进你的工具箱。虽然 OpenSuperWhisper 评测 显示它还有不少坑,但作为免费方案,它已经比 macOS 原生听写更可控了。如果你还在犹豫 OpenSuperWhisper 好用吗,我的建议是:花 30 分钟配置一下,如果不满意再删掉也不亏。

how to use OpenSuperWhisper 的关键就三步:装依赖、改配置、按快捷键。如果你需要更详细的 OpenSuperWhisper 中文教程,可以翻翻 GitHub 的 issue 区,虽然文档少,但社区里已经踩过的坑都写在 issue 里了。

Top comments (0)