Skip to content

[macOS] 移除 Ollama 运行依赖:开箱即用原文字幕 + 应用内置翻译引擎 #25

Open

Description

@PCcoding666

需求

移除 macOS 客户端对 Ollama 的运行依赖。不要把“另装 Ollama / 启动服务 / 配置端口 / 安装模型”作为用户使用 LCT 的必经流程,也不要只是把 Ollama 安装器搬进向导。

LCT 应当先提供可直接使用的实时原文字幕;翻译能力通过应用自带、应用管理的推理引擎提供。用户安装一个 LCT 即可开始使用,不需要理解或维护另一个推理服务。

本次 GUI 实测

  • 环境:Apple M4、16 GB、macOS 26.4。
  • 测试版本:从 master 的 c3dd390b0e4844d6a123062b6ad7e3eacfac3b03 源码本机编译,使用临时本机签名;不是已发布、已公证的 Mac 安装包。
  • 欢迎向导、权限页面、主界面、设置、历史页面可以打开。
  • 向导可以选择 Skip for Now,随后显示 Setup Skipped 并进入主界面。
  • 进入主界面后点击 start,仍提示 Ollama is not installed...,保持 idle,连原文语音识别也无法启动。 当前“跳过设置”只允许看界面,没有提供可用的基础模式。
  • 已打开并确认 YouTube 英文视频正在播放;由于上述启动检查,未能进入“视频声音 → 原文字幕 → 翻译”的完整测试。不能据此宣称识别或翻译已经通过验证。
  • 设置另提示默认英文缺少本地语音模型,麦克风设备不可用。这些是独立的环境前置条件:应分别引导处理,系统音频模式不应要求可用麦克风。
  • 检查时正式 Releases 和现存 Actions 附件均无可下载的 macOS 应用包;macOS README 中的构建包下载说明与现状不符。

问题所在

音频采集、苹果原生语音识别与翻译是不同能力,翻译引擎未就绪不应阻断基础字幕。

当前 TranscriptionVM.start() 在启动语音识别和音频采集之前,先要求 Ollama 服务可用、目标模型已安装且预热成功;任何一步失败直接 return:

这是当前代码的启动耦合,不是语音识别必须依赖 Ollama。

期望行为

1. 首次启动即可使用的原文字幕模式

完成必要的系统授权、具备所选语言的苹果语音资源后,即可采集系统音频或麦克风并显示实时原文。默认提供这个可用路径,不要求翻译引擎或 LLM 模型先准备好。

所选语言缺少语音资源时,给出明确的安装/下载入口和进度或可执行指引;不能把语音资源问题混同为翻译服务问题。

2. 翻译由 LCT 内置、管理推理运行时

  • 采用可直接集成到应用的本地推理引擎,随应用交付并由 LCT 管理其生命周期,不以 Ollama 为运行时或恢复路径。
  • 引擎与模型权重分开考虑:运行时随包;权重可在许可和包体积允许时随包,或在应用内一键下载,说明大小、硬件要求、进度、取消、失败重试及恢复方式。
  • 不要求用户使用终端、包管理器、启动后台服务、配置 localhost 端口或管理外部程序。
  • 翻译准备、下载、加载或失败期间,原文字幕持续可用;就绪后可在当前会话中开启翻译。
  • 保持本地处理的产品定位;不要以强制云账号、API Key 或远程服务替代上述基础体验。

3. 清晰的状态与可直接分发的 Mac 包

主界面分别展示“音频采集 / 语音识别 / 翻译”的状态。提供正式签名、公证的 Mac 发布包,并同步文档、向导及下载入口。

验收标准

  • 在未安装 Ollama、未运行 11434 服务、未下载 LLM 权重的干净 Mac 上,满足苹果语音资源和授权条件后,可直接显示 YouTube 英文视频的实时原文字幕。
  • 系统音频模式在没有可用麦克风设备的 Mac 上可用。
  • 暂停、恢复、停止及字幕导出可在原文模式工作。
  • 原文模式不会执行 Ollama 安装探测、服务启动、健康检查、模型列表或预热请求。
  • 翻译运行时随 LCT 交付;模型准备在应用内完成,无额外应用安装步骤。
  • 模型下载取消/失败、翻译引擎加载失败或运行中失败,不会终止原文字幕或丢失已有会话内容。
  • 模型和语音资源已就绪后,可离线完成识别与本地翻译。
  • 发布包可直接下载、安装和启动,不要求用户先编译源码;文档与实际发布产物一致。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions