自用的音频转文字 Mac 应用 - V2EX
爱意满满的作品展示区。
x1x2

自用的音频转文字 Mac 应用

  •  
  •   x1x2 May 23 1196 views

    完全自用的本地音频转文字应用,有需要的朋友可以自取,耗费了不少 token ,希望利用率能够高。

    https://github.com/bubugamer/VoxNote

    1. 实时录音转译功能还有问题,下个排期修复
    2. 因为我只有 Mac ,所以目前仅有 Mac 版本,后续随缘更新 win 版
    11 replies    2026-05-28 20:26:13 +08:00
    lambdaX999
        1
    lambdaX999  
       May 23
    我自己之前也拿开源项目魔改了一个 ,最终使用下来感觉体验还是不如豆包啥的,功耗还低,你这个用着咋样
    AlangHa
        2
    AlangHa  
       May 23 via iPhone
    真是优秀
    kuhung
        3
    kuhung  
       May 23
    好奇佬用的什么语音转文字和说话人识别模型
    x1x2
        4
    x1x2  
    OP
       May 23
    我目前用着还行,识别的准确率确实不算太高,但是我一般是先转,然后再把文本扔进 GPT ,让它再给我润色润色。 我主要是用来转电话录音和播客文本的,时间都比较长,30 分钟以上吧。

    P.S. 我其实也是参考了开源项目。第一版是用原生的 Mac 语音识别引擎,其实效果也还行。后面翻了下 x ,发现有成熟开源,就拿来用了。
    x1x2
        5
    x1x2  
    OP
       May 23   1
    @kuhung 我最开始用的苹果内置的引擎,后面扫了一眼这个开源项目: https://github.com/argmaxinc/argmax-oss-swift ,把内置模型改成了 Whisper large-v3
    x1x2
        6
    x1x2  
    OP
       May 23
    @kuhung Claude 的解释,你可以参考看看:

    argmax-oss-swift 在 VoxNote 里负责两件事:语音识别( WhisperKit )和说话人识别( SpeakerKit )。

    ---
    一、WhisperKit 语音转文字的核心引擎

    VoxNote 自己只负责把音频文件读成 [Float] 浮点数组( AudioProcessor.loadAudioAsFloatArray ),之后全部交给 WhisperKit:

    [Float] 音频数据

    whisperKit.transcribe(audioArray:decodeOptions:callback:segmentCallback:)

    [TranscriptionResult] ← 含完整文本 + 每段时间戳

    VoxNote 给 WhisperKit 的配置参数:
    - chunkingStrategy: .vad 自动按静音分段
    - wordTimestamps: true 保留每段的时间戳(供说话人对齐用)
    - concurrentWorkerCount: 16 并行加速
    - detectLanguage: language == nil 不指定语言时自动检测

    转录过程中 WhisperKit 会不断回调进度( 0%→98%)和中间文本,VoxNote 把这些映射成 UI 上的 .transcribing(progress, partialText) 实时显示。

    ---
    二、SpeakerKit 说话人识别(可选功能)

    用户开启说话人标注后,VoxNote 会同时跑两个任务:

    同一份 [Float] 音频
    ├─ 并行 → speakerKit.diarize() → DirizationResult (谁在什么时间说话)
    └─ 顺序 → whisperKit.transcribe() → [TranscriptionResult](说了什么)

    合并 → diarization.addSpeakerInfo(to: results, strategy: .subsegment)

    " [Speaker 1] 你好,请问……
    [Speaker 2] 好的,我来解释一下……"

    SpeakerKit 底层用的是 Pyannote v4 的 CoreML 模型,在本机完成推理,不联网。
    ern
        7
    ern  
       May 23
    whisper 的模型感觉不太行,据说小红书的那个好点,还没研究。反正实测一段录音,whisper 转出来很乱,gemini 在线和飞书在线都能转个 95%左右。
    kuhung
        8
    kuhung  
       May 23
    @x1x2 whisper 系列我自己测下来确实性能一般,中文的误识别率挺高。另外 large 的开销比 medium 高吧,好奇是这里是有做过取舍吗
    x1x2
        9
    x1x2  
    OP
       May 23
    是,中文识别率确实一般。没有做过取舍,单纯觉得是不是 large 比 medium 识别准确率可能更高,但实际效果半斤八两。 我现在的工作流是,先转成文本,然后再让 gpt/opus 润色一道。不得不说,SOTA 就是 SOTA ,很刁钻的误识,都能识别出来。

    下面是我刚刚转的文本错误和修正汇总


    ┌───────────────────────────┬──────────────────────────────────────────┐
    │ 原文 │ 修正 │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 伤/商(贯穿全文) │ 熵( entropy ) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 毒血的头 │ 读写头( read/write head ) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 山门 56 │ 山本五十六(日本海军大将) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 积电器/寄电器 │ 继电器 │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 二子海默症 │ 阿尔茨海默症 │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 埃尼亚克/安尼阿克 │ ENIAC │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 爱德瓦克/爱尼瓦克 │ EDVAC │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ αβ减值算法 │ α-β剪枝算法 │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ ToroChamp │ Turochamp (图灵+钱珀诺恩合创的象棋程序) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 布尔兹曼 │ 玻尔兹曼( Ludwig Boltzmann ) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ ACES │ ACE ( Automatic Computing Engine ) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ Unartificial Intelligence │ Artificial Intelligence │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 卷幅他 │ 本尼迪克特康伯巴奇(卷福) │
    ├───────────────────────────┼──────────────────────────────────────────┤
    │ 道胜和夫 │ 稻盛和夫 │
    └───────────────────────────┴──────────────────────────────────────────┘

    人名译名统一
    - 冯诺一曼 → 冯诺伊曼
    - 斯马赫/司马赫 → 赫伯特西蒙(中文名司马赫,首次出现做注)
    - 纽娥尔 → 纽厄尔
    - 赛米尔 → 阿瑟塞缪尔

    结构优化:去除 Speaker 标签,按四章结构整理为连贯叙述文章,保留播客的口语风格。
    Rain59
        10
    Rain59  
       May 24
    能实时转吗?
    x1x2
        11
    x1x2  
    OP
       May 28
    @Rain59 可以了,实时转用了 small 模型,正好可以对比看看效果。不过我个人基本没有实时转的需求
    About     Help     Advertise     Blog     API     FAQ     Solana     2605 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 01:55 PVG 09:55 LAX 18:55 JFK 21:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86