尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Palmier Pro本地转录引擎揭秘:MLX语音识别如何实现带词级时间戳的转写

Palmier Pro本地转录引擎揭秘:MLX语音识别如何实现带词级时间戳的转写 Palmier Pro本地转录引擎揭秘MLX语音识别如何实现带词级时间戳的转写【免费下载链接】palmier-promacOS video editor built for AI项目地址: https://gitcode.com/GitHub_Trending/pa/palmier-proPalmier Pro是一款为 AI 而生的 macOS 视频编辑器它的本地转录引擎能在不上传任何素材的前提下把视频里的语音转写成带词级时间戳的文字并自动标注说话人。下面用 3 张图 4 个模块讲清楚这套离线语音识别背后的设计。一句话概括ASR 转写由 Apple 的 Speech 框架负责MLX 负责哪里在说话和是谁在说话两者拼出完整的本地转写能力。一、为什么强调本地转录大多数剪辑工具把音频上传到云端转写既慢又涉及隐私。Palmier Pro 的本地转写直接在 Apple Silicon 芯片上完成素材不出机器适合采访、会议等敏感内容首次使用自动下载 on-device 语音模型AssetInventory负责安装之后完全离线转写结果带词级时间戳可直接驱动删气口按词剪片等 AI 剪辑功能。核心数据结构就定义在 Transcription.swift 里TranscriptionWord单个词含text、start、end、speakerTranscriptionSegment一句endpoint 分句含起止时间TranscriptionResult全文 语言 词表 句表。二、词级时间戳到底从哪来很多人以为时间戳要自己算其实关键在于给 Speech 框架开了一个开关。在 Transcription.swift 中创建SpeechTranscriber时传入了attributeOptions: [.audioTimeRange]。这个选项让框架在输出文字的同时为每个 token 附带一段音频时间区间。随后在 Transcription.swift 的decodeResults里代码遍历attributed.runs把每个 run 的audioTimeRange换算成秒得到TranscriptionWordlet range run.audioTimeRange let start range.map(\.start.seconds) let end range.map { ($0.start $0.duration).seconds } words.append(TranscriptionWord(text: trimmed, start: start, end: end, ...))也就是说词级时间戳不是估算出来的而是语音模型直接给出的精度天然达到单个词级别。三、MLX 在其中扮演什么角色真正跑在 MLX 上的是转写之外、却决定转写质量的两块音频分析能力。它们统一通过 MLXRuntime.swift 做推理串行化避免并发踩到 Metal 后端的竞态。1. Silero VAD判断哪里有人在说话VoiceActivity.swift 用SileroVADModel明确指定engine: .mlx对音频做有无人说话检测输入统一为16 kHz 单声道按 32 ms 的 chunk 逐段推理输出概率序列再用 VAD 管线二值化得到一段段语音 span起止秒数。这套 span 有两个用途确认说话人识别命中的片段真实有人声、以及标记死气dead air。2. WeSpeaker识别是谁在说话SpeakerIdentity.swift 用WeSpeakerModel同样走 MLX对每段发言提取声纹向量再用余弦相似度阈值 0.45跨文件比对让同一个人在不同素材里拿到同一标签。这样转写结果里每个词都带上了speaker。小提醒这两个模型在开发构建里由编译开关BUNDLED_SPEECH控制MLXRuntime还会在未打包构建时直接跳过 MLX 加载避免崩溃。四、时间戳如何变成自动剪辑词级时间戳最大的价值是让按词剪片成为可能。WordCutPlanner.swift 的cutRanges直接把词的startFrame/endFrame交给剪辑引擎按tight / balanced / loose三档保留 60 / 150 / 320 ms 气口选出要保留的词回算出要删除的静音区间交给RippleEngine.mergeRanges合并成最终剪辑范围。这一步就是删除口癖、一键去静音的底层逻辑——全靠前面那套词级时间戳支撑。五、完整流程走一遍把上面串起来一次本地转写的旅程是这样的抽音轨Transcription.swift 用AVAssetReader把视频解码成 16 kHz 单声道 16-bit PCM转写SpeechAnalyzer跑 on-device 模型逐词产出时间戳语音检测Silero VADMLX标出哪些区间有人声说话人WeSpeakerMLX给每段话贴上说话人标签缓存结果写入磁盘 内存两级缓存见 TranscriptCache.swift下次秒开剪辑时间戳喂给 WordCutPlanner生成去静音/按词剪片方案。云端也有一路并行方案TranscriptionProvider区分.local与.cloud后者通过 TranscriptionBackend.swift 提交远端任务。本地与云端结果可互相替换接口完全一致。六、如何上手体验需要macOS 26Tahoe Apple Silicon打开项目导入含语音的素材触发转写首次会自动下载 on-device 语音模型转写完成后即可在时间轴上按词选中、删除气口、识别说话人。依赖清单可在 Package.swift 中查看mlx-swiftMLX 推理、speech-swiftSilero VAD / WeSpeaker、swift-transformers分词器等都是本地推理的关键拼图。小结Palmier Pro 的本地转录并不是一个模型干所有活而是Speech 框架给词级时间戳 MLX 补上哪里在说话、是谁在说话的组合拳。理解了这套分工你就能明白它的静音移除、说话人分离、按词剪辑为何能又快又准。【免费下载链接】palmier-promacOS video editor built for AI项目地址: https://gitcode.com/GitHub_Trending/pa/palmier-pro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表