我们刚刚将“Voice”重命名为“Live”。该插件现在称为 Discourse Live,或者简称为 Live。
去年年底,我们分享了 Resenha,这是一个实验性项目,直接在 Discourse 中添加了类似 Discord 的语音和视频房间。无需外部应用,只需在侧边栏中使用点对点 WebRTC 即可。
这个实验很成功。从那以后,我们一直用它来开自己的会议,而今天它正式毕业:Resenha 现在改名为 Voice,并作为核心插件随每个 Discourse 安装包一起发布。![]()
你能获得什么
- 侧边栏优先的房间 — 点击即可加入或离开,查看带有动态说话指示器的实时参与者头像,并在通话时继续浏览论坛。无需更改路由,无弹窗窗口,且紧凑的通话小部件会跟随你在站点各处移动。
- 视频和屏幕共享 — 每个房间都有一个包含平铺网格的全页面;摄像头和屏幕共享可即时切换,画质会根据观看者数量自动调整。
- 背景虚化 — MediaPipe 人体分割完全在你的浏览器中运行,提供实时预览和可调节的强度。
- 降噪 — 可在三种 AI 引擎(RNNoise、DTLN、DeepFilterNet3)之间进行选择,它们以 WebAssembly 音频工作线程的形式运行,从轻量级到录音室级别应有尽有。
- 实时字幕 — 可选功能,基于 NVIDIA Parakeet 语音识别技术,通过 WebGPU 在本地运行,为观看者提供字幕。多语言支持,处于行业领先水平,本地 AI。你还可以直接将通话记录保存到主题草稿中。
- 直接呼叫 — 直接从用户的个人资料卡或个人主页呼叫某人。
- 每房间文本聊天 — 由真正的 Discourse 聊天提供支持:每次通话都会在房间的聊天频道中获得一个独立的帖子。
- 房间权限和管理 — 公共、群组限制和私有房间;用户创建房间的功能受群组控制;静音、失聪、单用户音量控制以及踢出用户。
- 主题化音频提示 — 加入/离开和呼叫音调遵循你的聊天通知声音包,因此 Voice 听起来与你站点的其他部分风格一致。
工作原理
默认情况下,一切都是点对点的:你的 Discourse 服务器只处理信令,媒体流直接在参与者之间传输,并使用 DTLS-SRTP 加密。零额外基础设施,非常适合最多约 50 人的语音房间,或最多 10 人的视频房间。
所有音频和视频处理(降噪、背景虚化、字幕)都在每个参与者的设备上本地运行。不会向第三方发送任何数据。
需要更大的通话吗?将插件指向云端或自托管的 LiveKit 服务器,并将所有房间(或部分房间)通过它进行路由。这样,无论房间大小如何,每个参与者都只需发布一次每个轨道。通过 LiveKit 路由的房间还可以录制通话,并且可以直接在 Discourse 的房间 UI 中控制录制。
如何启用
Voice 在我们所有的托管计划中都可用。用于大型通话的 LiveKit 集成在我们的 Business 和 Enterprise 计划中可用;自托管用户
可以将其指向自己的 LiveKit 服务器。
Voice 已捆绑在 Discourse 中,因此无需安装任何东西。通过 管理 > 设置 > 插件 > voice enabled 开启它。该插件会创建一个默认的“闲聊室”(Watercooler),让你立即有个地方可以闲逛。
在那里,voice_allowed_groups 控制谁可以加入房间,而 voice_create_room_allowed_groups 控制谁可以创建房间(默认为管理员、版主和 TL2)。视频默认开启。直接呼叫在你选择 voice_direct_calls_allowed_groups 中的某些群组之前是关闭的,字幕是通过 voice_subtitles_enabled 选择的(这需要 WebGPU,且每个用户只需下载一次约 2.5 GB 的模型)。
如果你之前正在使用我个人仓库中的 Resenha 插件,请在方便时从你的 app.yml 中移除它,因为捆绑的 Voice 插件已经取代了它。
状态
这仍然处于早期阶段。我们每天内部试用它已经好几个月了,对于小团体来说效果非常好,但在向整个社区开放之前,请先与你的团队进行测试。默认的点对点路径没有通话录制功能,除了用户标记、踢出和“结束通话”之外的管理工具仍在路线图中。
欢迎反馈
试试看,告诉我们效果如何!Bug、想法和问题都欢迎在这个主题中提出。PR 也欢迎,现在比以往任何时候都更容易:代码位于 core。![]()






