快速结论
Parlor 适合想在受控机器上实验实时语音与视觉对话的开发者。它是 Apache 2.0 许可的研究预览项目:浏览器采集麦克风和摄像头,经 WebSocket 把音频与 JPEG 画面发给 FastAPI 服务;服务使用 Gemma 4 E2B 理解输入,再用 Kokoro 合成语音返回。项目明确提醒会有粗糙体验和 Bug。截至 2026-07-21,GitHub 没有正式 Release,pyproject.toml 版本虽为 0.1.0,也不等于已经发布稳定包。
“本地运行”必须按网络拓扑理解。当前服务启动时监听 0.0.0.0,而 /ws 没有应用层登录、令牌校验或明确的 Origin 白名单;只要端口被局域网、容器映射或入口服务暴露,别的来源就可能尝试连接。前端还通过 innerHTML 插入模型回答与转写文本,没有先做 HTML 转义,存在 DOM XSS 风险。默认页面会从 Google Fonts 和 jsDelivr 加载字体、ONNX Runtime Web 与 VAD 脚本,因此默认体验也不是完全离线。Parlor 可用于单机研究,但不能未经加固就当成多人服务。
核心功能
- 语音与视觉输入:浏览器获取麦克风和摄像头,把 16 kHz 音频与压缩画面编码后发给服务端。
- 本地多模态推理:Gemma 4 E2B 通过 LiteRT-LM 处理音频、图像和对话上下文。
- 本地语音合成:Kokoro 在 macOS 走 MLX 相关后端,在 Linux 走 ONNX 相关后端。
- 浏览器 VAD:Silero VAD 判断语音起止,支持免按键对话;用户说话时可中断正在播放的回答。
- 句级音频流:服务把回答拆成句子,逐段生成 PCM 音频并通过 WebSocket 返回。
- 单连接会话:每个 WebSocket 连接创建独立对话状态,断开后结束该会话。
- 性能参考:项目在 Apple M3 Pro 上给出的端到端数据约为 2.5 至 3.0 秒,而不是旧介绍所称的亚秒级完整响应。
适合人群
- 想研究浏览器采集、VAD、多模态推理和流式 TTS 串联方式的开发者。
- 拥有 Apple Silicon,或带兼容 GPU 的 Linux 机器,并能处理模型依赖的人。
- 需要在单机上制作语言练习、物体讲解或语音视觉交互原型的研究者。
- 愿意读源码、固定 commit、补安全控制并接受预览版故障的技术用户。
- 不适合没有运维能力的普通用户、需要正式支持与稳定版本的团队,或计划直接把端口开放给多人使用的组织。
使用场景
个人实验时,可以在同一台可信机器上启动服务,用浏览器访问 localhost,授权麦克风和摄像头后测试对话、打断和画面理解。语言练习、桌面物品描述、无障碍交互原型和本地多模态性能研究都比较契合。项目给出的 M3 Pro 参考中,语音与视觉理解约 1.8 至 2.2 秒,短回答生成约 0.3 秒,TTS 约 0.3 至 0.7 秒;实际速度仍取决于硬件、回答长度和后端。
若浏览器与服务不在同一台机器,麦克风、画面、转写和回答会跨网络传输。此时必须使用受信入口、传输加密、身份验证、Origin 校验和最小网络范围。不要简单映射 8000 端口。当前 WebSocket 处理没有显式消息大小、连接数或速率限制,每个连接又会占用模型对话、CPU、GPU 和 TTS 资源;恶意或误配置客户端发送超大 base64 音频、连续画面或大量并发连接,可能耗尽内存和计算资源。
价格与版本
Parlor 源码按 Apache 2.0 免费提供,没有项目订阅费。运行成本包括兼容硬件、电力、约 2.6 GB 的 Gemma 模型下载、TTS 模型、内存与维护时间。README 建议预留约 3 GB 空闲内存给模型,但完整进程、浏览器和图形后端还会占用更多资源。模型首次下载和默认 CDN 资产也需要网络可用。
截至 2026-07-21,仓库没有正式 Release。复现实验应固定 commit,而不是长期直接跟随 main。Python 条件必须以 pyproject.toml 为准:>=3.12,<3.13,也就是当前应使用 Python 3.12,不能因为 README 简写成“3.12+”就使用 3.13。Apache 2.0 只覆盖 Parlor 仓库代码;Gemma 模型、Kokoro、Silero VAD、LiteRT-LM、ONNX Runtime、字体和其他依赖各有自己的许可证或使用条款,需要分别核对。
国内访问与使用体验
启动步骤是克隆仓库、进入 src、执行 uv sync 和 uv run server.py,再访问 http://localhost:8000。模型会在首次运行时自动下载,也可以通过 MODEL_PATH 指向已有文件。依赖和模型是否能顺利取得取决于对应代码托管、模型托管和 CDN 的当时可用性。更严格的离线环境应提前下载并校验模型,同时把字体、ONNX Runtime Web 和 VAD 资源改成本地托管。
浏览器会请求摄像头和麦克风权限,用户应能清楚看到授权状态并随时关闭页面或设备权限。当前前端的摄像头开关主要控制是否附带画面,不能替代浏览器级权限管理。要供真实用户试用,应把模型文本和转写当作不可信字符串,用 textContent 或可靠清洗库渲染;设置严格 CSP,移除不必要的第三方脚本,给固定资源增加完整性校验,并为 WebSocket 增加身份、Origin、消息大小、连接数、超时和速率控制。
优点
- 浏览器、FastAPI、多模态模型和 TTS 的数据流清楚,适合学习和修改。
- 语音、相机、VAD、打断与句级播放组成了完整的实时交互原型。
- 推理与语音合成可在本机完成,不需要按次购买模型 API。
- Apache 2.0 许可证明确,仓库规模较小,便于安全审阅。
- 项目公开了 M3 Pro 分阶段性能数据,预期比模糊的“实时”宣传更容易校准。
- Apple Silicon 与兼容 Linux GPU 均有对应后端路径。
不足
- 明确处于 research preview,且没有正式 Release、兼容承诺或生产支持。
- Python 只支持
>=3.12,<3.13,环境窗口比 README 的简写更窄。 - 服务监听
0.0.0.0,WebSocket 没有应用层身份验证和明确 Origin 限制,误暴露风险高。 - 前端用
innerHTML渲染模型回答与转写,未转义内容可能形成 DOM XSS。 - 默认依赖 Google Fonts 与 jsDelivr 脚本,离线性、供应链和资源完整性需要额外处理。
- 缺少显式连接数、消息大小和速率控制,音视频与模型计算可能被滥用而耗尽资源。
- 本地代码许可不代表 Gemma、Kokoro、Silero 及其他依赖拥有相同条款。
- 摄像头画面按消息上传给服务端;跨机器部署后,它不再是“仅设备内”的简单边界。
替代品对比
| 工具 | 更适合谁 | 主要差异 |
|---|---|---|
| Ollama | 需要通用本地模型运行与 API 的开发者 | 模型管理更成熟,但不自带 Parlor 的浏览器语音视觉交互 |
| Open WebUI | 想要多用户本地模型聊天界面的团队 | 账号与界面能力更多,实时相机和 VAD 不是核心 |
| LocalAI | 需要兼容 API 和多后端部署的人 | 服务端能力更广,需要自行组装浏览器媒体体验 |
| ElevenLabs | 优先追求托管语音质量与多语言的人 | 语音服务成熟,但数据、计费和部署边界不同 |
| HeyGen | 需要成品数字人视频工作流的内容团队 | 产品化程度高,不是可修改的单机研究运行时 |
常见问题 FAQ
Parlor 是稳定产品吗?
不是。仓库将它标为 research preview,并提醒存在粗糙体验和 Bug;截至 2026-07-21 也没有正式 GitHub Release。
Parlor 应该使用哪个 Python 版本?
当前 pyproject.toml 要求 >=3.12,<3.13,所以应使用 Python 3.12。README 的“3.12+”不能覆盖项目文件给出的上限。
Parlor 是否完全离线?
模型推理和 TTS 可以在本机完成,但默认页面会从外部 CDN 加载字体和 VAD 相关脚本,首次运行还要下载模型。严格离线使用需要预下载并本地托管这些资源。
可以把 8000 端口开放给其他人吗?
不应直接开放。当前服务监听所有接口,WebSocket 没有完整鉴权、Origin 白名单、消息大小和速率控制。共享前必须增加加密入口、身份验证、网络限制和资源保护。
为什么模型和依赖条款要单独检查?
Apache 2.0 适用于 Parlor 仓库代码,不会自动改变 Gemma 权重、Kokoro、Silero VAD、LiteRT-LM、ONNX Runtime 或字体的条款。分发应用或商用前要逐项确认。
总结
Parlor 是一个结构清楚、便于研究的本地语音视觉原型,不是开箱即用的安全多人服务。正确的试用方式是固定 commit、使用 Python 3.12、在同一可信机器通过 localhost 运行,并核对全部模型与依赖条款。只要浏览器和服务跨机器,就要重新评估媒体传输边界;只要端口对外,就必须先修复无鉴权 WebSocket、innerHTML 注入、CDN 依赖和资源耗尽风险。完成这些工作前,应把它保留在隔离的研究环境中。