首页 / 正文

本地三模型让电脑“听话”:Whisper + Qwen + Moondream,离线语音控屏 1 秒级响应

Mooko
发布于 2026-05-07 · 5分钟阅读
1336 浏览
0 点赞 暴击点赞!

本地三模型控屏:让你的电脑“看得见、听得懂、会动手”

你肯定遇到过这种烦:

  • 跟云端 AI 说“把这段数据从网页抄到表格”,它要你截图、上传、等半天。
  • 你看着进度条发呆,心里默念:我只是想少点几下鼠标啊。

把这套事搬到本地,感觉会完全不一样:说一句话,电脑 1 秒内就开始动。不靠 API 往返,也不需要把屏幕截图交给云端。

这篇给你一套可落地的方案:Whisper + Qwen + Moondream 三模型流水线。你照着搭完,就能做一个离线“电脑助理”。


这套架构到底怎么跑的?

一句话:语音 → 文本 → 意图计划 → 看屏幕定位 → 执行动作

  • Whisper:你说话,它把语音变成文字。
  • Qwen(指令模型):读文字,判断你想干嘛,输出一份“操作计划”。
  • Moondream(视觉语言模型):看屏幕截图,帮你找按钮/输入框/菜单的位置。
  • 执行器(Automation):根据坐标点击、输入、快捷键、滚动。

为什么快?

  • 云端方案慢在“截图上传 + 云端推理 + 返回指令”。
  • 本地方案省掉网络往返,截图只在你电脑里转一圈。

隐私也省心:屏幕内容、账号信息、表格数据都不出机器。


开始动手前:你需要准备什么

硬件建议

  • CPU 也能跑,只是延迟会抖。
  • 想稳定 1 秒级:
    • 有 NVIDIA 显卡更舒服(8GB 显存起步更稳)
    • Apple Silicon(M 系列)也能玩,但不同推理框架速度差异很大

软件环境

  • Python 3.10+
  • Git
  • 一个能跑本地模型的推理框架(你任选其一):
    • Ollama(上手快)
    • llama.cpp(轻量、可控)
    • vLLM(吞吐高,部署偏工程化)

模型选择建议(别贪大)

  • Whisper:
    • 追求速度:small / medium
    • 追求准确:large-v3(慢一点)
  • Qwen:
    • 建议用 7B 级别的指令模型(本地更现实)
  • Moondream:
    • 优势是轻量、适合做“屏幕问答 + 粗定位”

提醒一句:控屏这事,稳定比聪明更重要。模型越大越聪明,但延迟和不可控也会涨。


你要实现的最小可用版本(MVP)

目标非常具体:

你对着麦克风说:“打开浏览器,搜索某某,然后把第一条结果标题复制到备忘录。”

电脑能完成:

  1. 听到语音 → 转文字
  2. 生成计划(例如:打开浏览器 → 聚焦地址栏 → 输入关键词 → 回车 → 读取第一条标题 → 打开备忘录 → 粘贴)
  3. 循环执行每一步:每一步都截图给 Moondream 做定位,然后点/输入

这就是最小闭环。


核心数据结构:让模型输出“可执行计划”

控屏翻车的高发原因:让大模型直接输出“点击右上角那个按钮”。

右上角是哪个?它一激动就瞎编。

更靠谱的做法:让 Qwen 输出结构化步骤,然后每一步交给 Moondream 去“看图找位置”。

给你一个计划格式(你可以照抄):

{
  "goal": "把第一条搜索结果标题复制到备忘录",
  "steps": [
    {"action": "hotkey", "keys": ["CMD", "SPACE"], "why": "打开Spotlight"},
    {"action": "type", "text": "Safari"},
    {"action": "key", "key": "ENTER"},
    {"action": "hotkey", "keys": ["CMD", "L"], "why": "聚焦地址栏"},
    {"action": "type", "text": "moondream github"},
    {"action": "key", "key": "ENTER"},
    {"action": "vision_click", "query": "第一条搜索结果标题"},
    {"action": "hotkey", "keys": ["CMD", "C"]},
    {"action": "app_open", "name": "Notes"},
    {"action": "hotkey", "keys": ["CMD", "V"]}
  ]
}

注意这里的关键点:

  • 只有 vision_click 这种动作需要视觉模型。
  • 其他动作尽量用快捷键(快、稳、跨分辨率)。

组件 1:Whisper 语音转文字(低延迟玩法)

低延迟的窍门就一个:别录一大段再识别

用“短音频分块 + 流式识别”会更接近即时对话。

你可以用这些方案:

  • faster-whisper(很多人用它做实时转写)
  • whisper.cpp(C++ 实现,速度不错)

你要的效果是:

  • 你说完一句话,200~500ms 内能出文字
  • 文字够准,别老把“备忘录”听成“背忘路”

实操建议:

  • 中文场景用 medium 往往够了
  • 环境吵就加 VAD(语音活动检测),少吞字

组件 2:Qwen 负责“把人话变成计划”

Qwen 这部分要做两件事:

  1. 识别你的意图(你要达成什么)
  2. 拆成可执行步骤(尽量用快捷键,少依赖视觉点击)

你可以这样写提示词(精简但够硬):

你是桌面自动化规划器。
输出严格的 JSON,不要输出解释。
只允许 action: hotkey/type/key/app_open/vision_click/wait。
能用快捷键就别用 vision_click。
每一步 why 简短说明目的。

再把用户指令丢进去,让它吐 JSON。

工程上建议加两层保险:

  • JSON Schema 校验(格式不对就让它重写)
  • 黑名单动作拦截(比如“删除所有文件”“发送邮件给所有联系人”这种直接拒绝)

别怕麻烦,这一步能救你无数次。


组件 3:Moondream 负责“看屏幕找东西”

Moondream 在这里干的事很朴素:

  • 你给它一张屏幕截图
  • 你问它:某个元素在哪(按钮/输入框/第一条结果/关闭图标)
  • 它回答一个位置(理想是坐标或边框)

现实里可能遇到两个情况:

  • 模型能直接给坐标:爽,直接点。
  • 模型只能描述位置:那就再做一步“从描述到坐标”的转换(比如结合 OCR、模板匹配、或者让模型输出 bbox)。

想让它更稳:

  • 截图别太大。缩放到 1280 宽左右,推理快很多。
  • 提问别抽象。别问“把它打开”,要问“右上角的搜索输入框在哪里”。

执行器:让电脑真的动起来

执行器是最“土但关键”的部分。

你可以用:

  • macOS:
    • 快捷键/AppleScript
    • Accessibility API(更稳,但要写一些系统交互)
  • 跨平台:
    • pyautogui(简单粗暴,适合原型)

原型阶段我更建议用 pyautogui,因为你先把闭环跑通再说。

执行器要做的事:

  • 截图:每一步执行前/后截一张
  • 点击:把 Moondream 给的目标点映射到真实屏幕坐标
  • 输入:文本、回车、快捷键
  • 失败重试:点不到就换策略(滚动、缩放、再截图)

把三者串起来:循环就这么写

下面是你需要的“脑内主循环”(伪代码,方便你照着实现):

while True:
    audio = record_until_silence()
    text = whisper_transcribe(audio)

    plan = qwen_make_plan(text)  # JSON steps

    for step in plan["steps"]:
        if step["action"] in ["hotkey", "type", "key", "app_open", "wait"]:
            execute(step)
            continue

        if step["action"] == "vision_click":
            screenshot = capture_screen(resize=1280)
            point = moondream_locate(screenshot, step["query"])  # x,y
            click(point)

跑起来后你会发现:体验差距就出在细节

  • 截图+视觉推理要快
  • 规划别啰嗦
  • 点击别抖

延迟压到 1 秒级:真有用的优化点

想快,别堆更大的模型,堆这些:

  • 减少视觉调用次数
    • 能快捷键就快捷键
    • 能 Tab 切焦点就别满屏找输入框
  • 屏幕截图缩放
    • 4K 屏直接喂模型,速度必炸
  • 缓存策略
    • 同一个界面连续点击多个元素,别每次都重新跑完整推理
  • 分级推理
    • 小模型先粗定位,失败再升级策略
  • 把“等待”写进计划
    • 页面没加载完就点,必错

体感上,少一次视觉推理,就像少等一次红灯。


适合用它干哪些活?(真的能省时间那种)

这套离线控屏最香的场景是:

  • 每天都要在多个系统之间搬数据:网页 → Excel → IM → 邮件
  • 批量处理:改文件名、导出报表、重复填表
  • 盯着屏幕点鼠标的脏活:复制粘贴、点菜单、翻页检查

你给它一句话,它帮你把“机械动作”做了。

你只要盯关键节点:做对没、有没有越权。


避坑清单(血压飙升预警 😅)

  • 别让模型直接执行危险动作:删除、转账、群发、覆盖文件。
    • 做权限闸门:高风险动作必须二次确认。
  • 坐标会漂:分辨率变化、窗口没激活、DPI 缩放都会让点位偏掉。
    • 解决:点击前先把目标应用激活;尽量用 UI 元素定位而不是绝对坐标。
  • 模型会“自信胡说”:明明没找到按钮,它也能编个位置。
    • 解决:让 Moondream 返回置信度;低于阈值就改用滚动/搜索/快捷键。
  • 输入法坑:中文输入法状态切换会导致输入乱码。
    • 解决:统一用英文输入,或每次输入前强制切输入法。
  • 页面动态加载:按钮位置会跳。
    • 解决:等待页面稳定(固定等待 + 视觉检测“加载中”消失)。

你可以怎么升级:从“能用”到“很好用”

想玩得更爽,可以加这些模块:

  • 记忆层:记录你常用应用的打开方式、常用按钮的相对位置。
  • 任务模板:把“日报生成”“发票整理”“竞品数据抓取”存成一键指令。
  • 多模态校验:Moondream 找到元素后,用 OCR 再验一次文字,避免点错。
  • 回放系统:每次执行把步骤录成脚本,下次直接复用,不用再推理。

一个很现实的结论

当本地小模型组合起来,能比云端大模型更快、更稳、更不泄露数据,“AI 一定要在云端”这话就站不住了。

你的电脑也不用再当工具了。

它可以当个真正的助手:你动嘴,它动手。

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取