ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

20秒转写1小时音频:Quill本地Parakeet TDT引擎与Core ML实现原理

20秒转写1小时音频:Quill本地Parakeet TDT引擎与Core ML实现原理 20秒转写1小时音频Quill本地Parakeet TDT引擎与Core ML实现原理【免费下载链接】quillUltra-minimalist macOS recording transcription.项目地址: https://gitcode.com/gh_mirrors/quill26/quillQuill 是一款完全本地运行的 macOS 会议录音与语音转写工具麦克风与系统声音分成两条独立音轨录制停录后在设备端自动调用 Parakeet TDT 引擎转写20 秒即可输出 1 小时音频的带时间戳、分说话人的文字稿——全程不联网、不上传隐私由设计保证。一分钟了解 Quill 是什么Quill 由菜单栏一个羽毛图标组成点Start recording同时录下你的麦克风me和电脑播放的所有声音them点Stop recording转写自动开始文字稿落在~/Recordings/日期-时间/transcript.md与音频放在同一个文件夹。 双音轨是刻意为之语音模型在单一来源的干净音频上表现更好而且麦克风 vs 系统音天然就是免费的说话人分离无需任何声纹模型。为什么选择 Parakeet TDT Core MLQuill 的转写引擎是Parakeet TDT 0.6B v2英语通过 FluidAudio。它快的原因有三点Transformer 解码器-编码器结构Parakeet TDTTransducer Decoder-Transducer相比传统自回归模型解码更快、显存占用更小天然适合端侧Core ML 加速模型权重被编译为 Core ML 格式推理走 Apple 芯片的神经引擎/统一内存路径而非通用 CPU 循环小模型路线0.6B 参数量在精度与速度间取了端侧最优解——模型总大小约 600 MB首次转写时下载一次进入 FluidAudio 管理的缓存之后完全离线。依赖声明可以在 macos/Package.swift 中看到FluidAudio 以 Swift 包形式引入与swift-argument-parser共同构成整个二进制。引擎的实现原理从协议到解码引擎抽象层Quill 把可本地运行的语音转写引擎抽象成一个小协议TranscriptionEngine.swift只要求实现三件事func prepare() async throws // 下载 加载模型 func transcribe(_ audio: URL) async throws - [TranscriptSegment] func release() async // 释放模型权重引擎懒加载转写队列有活儿时才prepare()队列排空时立刻release()——Quill 从不在空闲时占用几 GB 的模型内存。未来计划接入 Whisperlarge-v3-turbo作为多语言备选只需新增一个协议实现。转写流程ParakeetEngine.swift 中的核心流程prepare()调用AsrModels.downloadAndLoad(version: .v2)下载并加载模型再创建AsrManagertranscribe()先用AVAudioFile探测音频可读性——这是一个防坑设计空音频会让 AVFoundation 在重采样器深处抛出 Swift 无法捕获的 ObjC 异常直接拖垮整个守护进程用TdtDecoderState驱动解码拿到逐词时间戳tokenTimings把词级时间戳分组成人读段落遇到句末标点parakeet v2 自带标点、超过 1 秒的静音间隙、或 60 词硬性上限时断句。两轨合并一个时钟、两种说话人录制结束后TranscriptionCoordinator.swift 负责合并每条音轨独立转写再按各自的start_offset_ms平移到会话统一时钟上按时间戳排序合并标记me/them说话人拾取中断造成的缺口保留为时间戳空隙不谎称全程无间断最终原子写入transcript.json机器可读transcript.md人读版两者都带时间戳。渲染后的transcript.md形如[00:03] me: 好我们开始吧。 [00:07] them: 收到先过一下昨天的纪要。文件系统即队列崩溃也不丢任务Quill 最聪明的设计之一是把文件系统当转写队列TranscriptionCoordinator.swift状态判定条件待转写文件夹有meta.json但没有transcript.json已完成transcript.json存在写入是原子的半截文件不存在失败追加日志到该会话的transcribe.log不阻塞后续任务启动时resumePending()扫描录目录、按文件夹名时间戳排序重放未完成的任务。哪怕转写到一半程序崩溃或你强制退出下次启动会自动续转——这是本地离线工具可靠的根本保障。如何安装并验证模型./scripts/build-macos sudo ./scripts/install-macos quill doctor # 检查权限、录音目录、模型是否已缓存quill doctor会告诉你约 600 MB 的模型是否已在缓存中——重要会议前跑一次确保不会当场下载。安装脚本见 scripts/install-macos。配置项可选~/.config/quill/config.json在 Config.swift 中解析{ transcription: { enabled: true, engine: parakeet }, on_stop: my-hook }其中on_stop是转写完成之后执行的 shell 命令会话目录作为参数可接摘要、归档、索引等下游流程。值得借鉴的架构思路平台解耦各平台原生独立实现macOS 走 Core MLWindows/Linux 规划走本地 ONNX共享的是会话目录布局 转写格式 测试夹具见 docs/architecture.md引擎可替换小协议 懒加载/释放未来多语言只需加一个实现测试兜底合并逻辑保偏移的时间戳合并有单元测试覆盖见 macos/Tests/QuillTests/诚实的状态拾取中断会在meta.json里如实记录recovered/incomplete转写头部也带状态绝不粉饰。总结Quill 证明了极致本地化不必牺牲体验Parakeet TDT 0.6B 经 Core ML 移植后在 Apple Silicon 上以 20 秒/小时的速度完成端侧转写配合双音轨录制、文件系统队列与原子写入构成了一套无云依赖、可恢复、可审计的会议文字稿流水线。对追求隐私与离线工作的用户它是一条值得参考的实现路线。【免费下载链接】quillUltra-minimalist macOS recording transcription.项目地址: https://gitcode.com/gh_mirrors/quill26/quill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表