【免费下载链接】jarvis-ai-assistantJarvis AI Assistant - Voice-powered AI assistant for Mac项目地址https://gitcode.com/gh_mirrors/jarvis/jarvis-ai-assistant点击查看免费下载Jarvis AI Assistant 是一款面向 Mac 的开源语音输入 AI 助手它的核心玩法只有一个词Push-to-Talk按住说话。按住Fn键开始说话松开按键一段干净、带标点的文字就会自动出现在你正在使用的任何输入框里——邮件、备忘录、代码编辑器都支持。整个过程通常只需一两秒。这篇文章带你拆解这条按住 Fn 键 → 语音转文字 → 自动粘贴的完整语音链路看看它的速度从哪里来、每一环由哪个模块负责。语音链路全景一次按键触发的 5 个环节在深入细节前先建立整体认知。每次你按住并松开Fn键Jarvis 内部会依次完成 5 件事按键监听——原生模块全局捕获Fn键的按下与抬起事件即时录音——按下瞬间就开始采集麦克风音频零启动延迟语音转文字——根据设置走流式、滚动解码或传统整段转录三条路径之一智能后处理——先判断是否为语音命令再做上下文感知的文本净化与格式化自动粘贴——把最终文字以最低延迟填入当前焦点窗口。整条链路的总调度者是 PushToTalkOrchestrator它把录音、转录、状态、输出等模块编排成一个协作流水线。对外则通过 PushToTalkService 暴露start()/stop()/cancel()三个简洁接口。第一环全局按键监听让 Fn 键按住即录Fn这类修饰键在普通应用里很难被可靠地全局捕获Jarvis 的做法是绕开 JavaScript 层直接下沉到系统底层原生事件监听fn_key_monitor.mm 用 Objective-C 编写基于 macOS 的 CGEventTap 事件钩子监听kCGEventFlagMaskSecondaryFn标志位的变化。按键状态一旦翻转就向主线程回调FN_KEY_DOWN/FN_KEY_UP事件从硬件到 JS 回调的路径极短避免了轮询带来的延迟。按键可配置监听器并非写死Fn。universal-key-service.ts 支持把热键换成Option、Control等按下/抬起事件最终汇入 main.ts 中的handleHotkeyDown()与handleHotkeyUp()。权限校验原生模块启动前会调用AXIsProcessTrusted()检查辅助功能权限——这也是新手最常踩的坑如果按住Fn毫无反应先去系统设置 → 隐私与安全性 → 辅助功能里勾选 Jarvis。按键按下后handleHotkeyDown()会先亮界面、再启录音波形窗口showInactive()、各窗口广播push-to-talk-state-change事件让你在按下瞬间就获得视觉与听觉反馈录音的异步启动紧随其后。第二环零延迟录音按下就开始采集录音环节由 AudioSessionManager 负责核心设计有两条首选原生采集优先使用 native-audio-recorder.ts 的 macOS 原生录音通道不依赖外部 FFmpeg 二进制一旦原生失败才回退到 fast-audio-recorder.ts。边录边送录制并不只是把音频攒进缓冲区。startRecording()会传入一个 chunk 回调每一小块 PCM16 音频数据被捕获后立刻转发给当前启用的流式转录后端——也就是说你说话的同时转录其实已经在后台悄悄进行。PushToTalkOrchestrator 的start()里还藏着一个细节录音启动的同时用setImmediate把上下文检测识别你当前在 Gmail、Slack 还是终端和流式初始化丢进后台执行不让它们占用主路径的任何一毫秒。第三环松开按键后转录走的三条路径stop()被触发时也就是你松手的那一刻系统会根据设置分流这是快字的最大秘密所在路径一流式转录Streaming Flow启用 Deepgram 实时流式或本地流式模型sherpa-online-transcriber.ts时音频块在录制期间就已被逐块喂给识别器并积累了部分文本。松手时如果已经攒到内容Orchestrator 直接走超快路径跳过等待、跳过 finalize文本几乎是松手即出的。路径二滚动解码Rolling Decode使用本地 Parakeet 模型时TranscriptionSessionManager 会启动滚动解码录音过程中每攒够一段音频就在后台安全识别器上并行解码。等你松开Fn时大部分音频早已转完只需补译最后一段尾巴。总耗时从说话时长 解码时长变成了两者的最大值长文本体验提升尤其明显。路径三传统整段转录关闭流式时走最稳妥的整段路径停止录音、拿到完整AudioSessionData交给 FastAssistantTranscriber 统一调度。它支持云端 Deepgram / GPT-4o也支持完全离线的本地 Whisper 与 NVIDIA Parakeetvia Sherpa-ONNX模型清单分别见 local-whisper-transcriber.ts 与 sherpa-models.ts。该构造器还会在启动时预热 API Key 与本地词典避免第一次说话特别慢的尴尬。三条路径最终都收敛为同一个TranscriptionResult结构定义在 push-to-talk-types.ts后两级处理因此与具体模型完全解耦。第四环命令识别与上下文感知后处理转录结果不会直接粘贴它先要过两道安检命令识别command-processor.ts先判断你这句话是不是指令。比如打开 YouTube设一个 5 分钟计时器这类 Jarvis 命令或应用启动命令会被拦截执行直接结束会话命中助手提示词时则交给 assistant-processor.ts 生成回答。文本后处理text-processor.ts普通口述内容进入上下文感知后处理——检测到你在写邮件时会走专门的邮件格式通道首字母大写、收尾句号、称呼落款其他场景则按 AI 后处理开关决定是否清理嗯、那个等口水词并修正语法。值得注意的是上下文比如当前在 Gmail在按下按键的当时就已经在后台探测完毕并缓存好了松手时直接用不再产生额外等待。第五环自动粘贴文字落在任意输入框最后一棒由 OutputManager 交出真正的粘贴逻辑在 text-paster.ts。它按文本长度与场景自动选择fast剪贴板直贴、clipboard或keystroke逐字符键入等输出方式并在 10 秒内连续多次口述时智能补空格让多段语音拼成自然连贯的段落。每次输出都会记录松手 → 文字出现的端到端耗时这也是项目持续优化的底气来源。常见问题为什么我的语音输入没反应或很慢Q按住 Fn 没有任何反应99% 的情况是缺少辅助功能权限。原生监听器在启动时会调用权限检查并明确报错请到系统设置 → 隐私与安全性 → 辅助功能添加 Jarvis 后重启应用。Q第一次说话感觉慢之后变快了转录器在应用启动时就做了服务预热API Key 预取、词典加载、本地模型热身后续会话的冷启动开销被大幅摊薄。Q断网还能用吗可以。选择本地 Whisper 或 Parakeet 模型后即可 100% 离线转录整条链路不离开本机。Q如何让文字出来得更快开启流式转录或切换到支持滚动解码的 Parakeet 本地模型——说话的同时就完成大部分转写松手几乎是秒出。写在最后Jarvis AI Assistant 的按住说话之所以顺滑本质是把传统录完 → 传完 → 等结果的串行流程重排成了边说边转、后台并行、松手即贴的流水线按键事件走原生通道、录音零延迟启动、转录提前开始、上下文预先探测、粘贴按场景择优。如果你也在寻找一款支持本地模型、开源免费的 Mac 语音输入工具这条链路的设计值得你亲自按住Fn键体验一下。赞分享【免费下载链接】jarvis-ai-assistantJarvis AI Assistant - Voice-powered AI assistant for Mac项目地址https://gitcode.com/gh_mirrors/jarvis/jarvis-ai-assistant点击查看免费下载相关推荐OpenClaw macOS 语音唤醒与按住说话Push-to-Talk机制全解析OpenClaw macOS 语音唤醒与按住说话Push to Talk机制全解析 导读 本文围绕 docs/platforms/mac/voicewake人工智能AI Agent多智能体交互助手AI 技能AI 插件本地部署API网关语音CLIFlipper Zero Unleashed NFC 读取10 分钟跑通加密门禁卡从识别到备份的全流程Flipper Zero Unleashed NFC 读取10 分钟跑通加密门禁卡从识别到备份的全流程 先看成果10 分钟跑通加密门禁卡破解、存档与备份链路嵌入式固件物联网智能硬件OpenHuman 按键通话Push-to-Talk提示音资产详解从 WAV 生成、前端播放到会话状态机的全链路实践OpenHuman 按键通话Push to Talk提示音资产详解从 WAV 生成、前端播放到会话状态机的全链路实践 OpenHuman 在桌面端实现了全人工智能AI Agent多智能体Agent 编排工具调用桌面应用上一篇Kornia Boxes3D.from_tensor xyzwhd 模式修复解析非对称 3D 框宽高深字段序保真与几何约定下一篇Dopamine 中的 AcrobotFourierDQNNetwork基于 Fourier 基的线性 DQN 价值网络解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
OpenCreator 深度拆解:以 Codex 为执行内核的本地优先开源 AI 工作台 OpenCreator 深度拆解:以 Codex 为执行内核的本地优先开源 AI 工作台 【免费下载链接】OpenCreator Formerly KrillinAI, VideoTranslation and Dubbing Tool for 120 Languages. Open-source AI workspace for creators, powered by Codex. Video downloader, vide… · 2026/11/5 1:45:38
【联想拯救者笔记本win11安装ubuntu22.04记录】 硬盘分区
作者笔记本两块2T硬盘,win11单独使用一个硬盘,ubuntu22.04单独使用一个硬盘,强烈建议ubuntu22.04单独在一个硬盘中
清空即将安装ubuntu22.04的硬盘搜磁盘管理,出来的应用名可能是创建并格式化硬盘分区,找到… · 2026/11/5 1:45:38
dsh-purge 完整指南:四步拆开宿主拦截,一套可回退的红队评测插件 dsh-purge 完整指南:四步拆开宿主拦截,一套可回退的红队评测插件 【免费下载链接】dsh-purge DeepSeek Harness 破甲:让所有模型都能破甲,不同模型可换不同提示词;默认提示词面向国模「小码酱」。Jailbreak for every … · 2026/11/5 1:44:38
具身智能:从原理到工业与家庭应用实践 1. 具身智能的行业认知重塑第一次接触具身智能这个概念是在2016年的一场机器人学术会议上,当时波士顿动力的Atlas机器人刚刚完成它的后空翻表演。看着这个身高1.5米的金属骨架像体操运动员一样腾空而起,我突然意识到:传统"感知-决策-执行… · 2026/11/5 2:23:50
字母异位词分组的哈希表解法与优化 1. 字母异位词分组问题解析字母异位词分组是LeetCode上经典的哈希表应用题目。题目要求给定一个字符串数组,将字母异位词组合在一起。字母异位词指的是字母相同但排列顺序不同的字符串,比如"eat"、"tea"、"ate"就是一组字… · 2026/11/5 2:23:50
电商数据API实战:竞品分析与动态定价策略 1. 电商数据化运营的核心武器去年双十一大促期间,我们团队通过API接口抓取了37家竞品的实时销售数据,发现某头部商家在凌晨2点突然调整了爆款商品的折扣策略。我们立即跟进调整价格策略,最终该单品销售额同比提升216%。这个案例让我深刻认识到… · 2026/11/5 2:23:50
APS系统如何解决传统库存管理痛点 1. 库存管理之痛:为什么传统方式总是失灵刚接手工厂物料管理那会儿,我最头疼的就是每天早上的"惊喜"——系统显示有库存的物料,仓库实际盘点却找不到;采购拍胸脯说已经下单的原料,产线等了一周还没到货。这种… · 2026/11/5 2:23:50
安卓眼动追踪App源码拆解:从摄像头取帧到瞳孔定位的完整实现 简介:这份资源是面向安卓开发方向毕业设计学习者与计算机交互技术爱好者的开源项目源码,主题为EyeTracker眼动仪,尝试用安卓手机充当眼动传感器,通过目视控制实现鼠标移动、点击、滚动及屏幕键盘键入,为行动不便群体提… · 2026/11/5 2:23:50
字符串与链表反转实战:双指针技巧解析 1. 算法训练营第八天:字符串与链表反转实战作为程序员,算法能力直接决定了我们解决问题的效率和质量。今天要讨论的两个LeetCode题目(344和542)看似简单,却包含了字符串处理和指针操作的核心思想。这两个问题在实际开发… · 2026/11/5 2:22:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38