开源桌面应用 Locally Uncensored 将 Whisper base.en、Pocket TTS 与对话模型串联,支持语音问答及用户插话打断。语音检测、识别和合成由本地常驻进程处理,目前功能处于测试阶段且仅支持英语。
实时语音助手的交互方式是这样的:你开口说话,它出声回答;你插话,它就停下来。从 3.0.6 版本开始,Locally Uncensored 支持了这样的模式,搭配你自己电脑上的模型就能使用。语音识别、语音合成和对话轮次控制都在本地运行,负责回答的则是你平时使用的任意聊天模型。
这项功能还处于 beta 阶段,而且只支持英语。本文会介绍它的实现方式、内存和时间开销,以及目前的不足。
Locally Uncensored 是一款用于在本地运行 AI 模型的开源桌面应用,采用 AGPL-3.0 许可证,下载量已超过 180,000 次。
Speech recognition Whisper base.en local
Voice Pocket TTS local, 15 voices
Turn taking the voice engine local
Answer your chat model local, or any provider you set up
语音引擎是一个独立进程,负责语音活动检测、语音识别和语音合成。这些组件会在引擎启动时加载,而不是等到语音会话开始时才加载。应用的 Cloud 开关开启时,语音功能会隐藏,因为托管端还没有语音服务。
在主导航中打开 Voice。首次使用时,会先显示设置界面,在下载任何内容之前,告诉你下载大小、所需空间和当前可用空间,同时列出要下载的内容及其保存位置。点击一次 Install 即可安装。根据我们的测量,在 Mac 上下载量约为 0.7 GB。
你可以在这里选择音色,也可以稍后再选。共有十五种:Alba、Anna、Azelma、Charles、Eponine、Eve、Fantine、George、Jane、Javert、Marius、Mary、Michael、Paul 和 Vera。切换音色只需下载一个小文件。
点击 Start。一声轻柔的和弦会提示它正在聆听。接着你就可以说话,它会出声回答,你也可以通过插话打断它。会话会保存为普通对话。
使用本地模型时,从问题说完到回答开始,测得的耗时如下:
Windows, RTX 3060 12 GB, local 9B model 1.6 to 3.1 s
M5 Pro Mac 1.4 to 2.0 s
安装完成或重启后的第一次会话启动较慢。在我们的 Windows 测试中,冷启动需要 23 到 63 秒,热启动则只需约一秒。等待期间你说的话最多会保留一分钟,等会话启动后再回答,所以你可以直接开始说话。
Voice engine in memory about 1 GB on our Windows machine
1.2 to 1.3 GB on the M5 Pro Mac
标题旁边有一个开关,会显示 LU 测得的内存占用。点击一下就能卸载引擎;如果聊天模型也是由这次语音会话加载的,也会一起卸载。如果不点击,引擎会在最后一次会话结束五分钟后自动关闭。
标题旁边有四个开关:Voice settings、Agent、Where it may work 和 Thinking。
开启 Agent 后,语音会话就能使用 Agent 的工具,并沿用相同的权限。本地模型拿到的工具列表更短,只包含网页、文件、shell 和屏幕,以便尽快给出第一条回答。需要你批准的工具会等待你点击 Approve 或 Reject。口头说 yes 不会批准工具调用,因为语音识别可能听错,而且麦克风会收进整个房间的声音。
Where it may work 默认设为 Workspace only:文件操作限制在当前会话的文件夹内,执行命令前先征求同意,也不能访问屏幕。选择 Whole computer 并再确认一次后,就会开放你用户账户下的其他位置和屏幕访问权限。无论选择哪个级别,系统文件夹以及存放密钥和密码的文件夹都不会开放。
Thinking 默认关闭。开启后,思考内容会显示在对话记录中,但绝不会朗读出来。思考的 token 上限可设为 128 到 4096,默认是 512。如果超出上限,LU 会结束思考,并要求模型直接回答。
开启 Whole computer 后,你可以让它完成屏幕上的任务,并听取执行结果。这属于电脑控制功能,是另一项独立的 beta 功能,有自己的规则。每个新聊天都会询问“Allow computer control in this chat?”,然后等待你点击确认。LU 会出声告诉你它正在等待。口头说 yes 不会授予权限,口头说 no 或 stop 则会拒绝。
任务执行期间,yes 或 no 用来回应普通操作;单独说“stop”或“wait”会暂停任务。“Wait, what is two plus two?”会被当成问模型的问题,而不是暂停指令。在我们的 Windows 测试中,使用本地 9B 模型,通过语音让它在 Notepad 中输入一条笔记,从指令说完到它出声报告结果,需要 11 到 22 秒。
Mac 版应用中也有电脑控制功能,但尚未经过完整测试。
只支持英语,而且只能使用预设音色。
打断功能依赖系统的回声消除。如果扬声器音量很大,又没有戴耳机,插话开头的几个词可能音量很小,或者丢失。戴耳机会有所帮助。
点击 Start 后的六秒内,如果某路语音传到麦克风时已经很微弱,它还会被进一步压低音量。
Windows 上已逐项检查,Mac 上做过手动试用。Linux 版尚未在应用内运行测试,不过 Linux 安装包中包含语音引擎。
这是一种实时语音模式:除了回答之外,其他环节都是固定的本地处理流程,包括 Whisper base.en、Pocket TTS 和对话轮次控制引擎;回答则交给你自己的聊天模型。内存占用约为 1 到 1.3 GB,停止说话后 1.4 到 3.1 秒开始回答,戴耳机时打断效果最好。工具调用和屏幕控制需要点击授权,口头说 yes 不算。只支持英语,目前仍处于 beta 阶段。
代码位于 github.com/PurpleDoubleD/locally-uncensored。安装步骤、测量数据和使用限制都记录在仓库的 VOICE.md 中。
AI 辅助声明:本文由我在 AI 模型的帮助下撰写,并对照代码和 VOICE.md 核查了事实。
如需进一步采取行动,你可以考虑屏蔽此人和/或举报滥用行为。