우리는 이 기능을 Voice에서 Live로 이름 변경했습니다. 플러그인의 이름은 이제 Discourse Live, 또는 단순히 Live입니다.
작년 말에 우리는 Discord 스타일의 음성 및 비디오 룸을 Discourse에 직접 추가하는 실험적인 기능인 Resenha를 공유한 바 있습니다. 외부 앱이 필요하지 않으며 사이드바에서 피어 투 피어(P2P) WebRTC만 사용합니다.
실험은 성공적이었습니다. 그 후로 우리는 자체 회의에 이 기능을 사용해 왔으며, 오늘 드디어 정식 버전으로 출시됩니다: Resenha는 이제 Voice라고 불리며, 모든 Discourse 설치에 포함된 핵심 플러그인으로 제공됩니다. ![]()
제공하는 기능
- 사이드바 우선 룸 — 클릭하여 참여하거나 나가고, 애니메이션된 발언 표시기가 있는 실시간 참가자 아바타를 확인하며 통화 중에도 포럼을 계속 탐색할 수 있습니다. 라우트 변경이나 팝업 창 없이, 컴팩트한 통화 위젯이 사이트 전체를 따라다닙니다.
- 비디오 및 화면 공유 — 각 룸에는 타일 그리드가 있는 전체 페이지가 제공되며, 카메라와 화면 공유는 즉시 토글되고, 화질은 시청자 수에 따라 자동으로 조정됩니다.
- 배경 흐림 효과 — MediaPipe 사람 분할 기술이 브라우저 내에서 완전히 로컬로 실행되며, 실시간 미리보기와 강도 조절이 가능합니다.
- 노이즈 서프레션 — 경량부터 스튜디오 등급까지, WebAssembly 오디오 워크렛으로 실행되는 세 가지 AI 엔진(RNNoise, DTLN, DeepFilterNet3) 중에서 선택할 수 있습니다.
- 실시간 자막 — NVIDIA Parakeet 음성 인식 기술이 WebGPU를 통해 로컬에서 실행되어 구동되는 옵트인 방식의 시청자 측 자막입니다. 다국어 지원, 최첨단 기술, 로컬 AI. 또한 통화 내용을 바로 토픽 초안으로 기록할 수도 있습니다.
- 직접 통화 — 사용자 카드나 프로필에서 바로 누군가와 통화를 시작할 수 있습니다.
- 룸별 텍스트 채팅 — 실제 Discourse 채팅 기반으로 동작합니다: 각 통화는 룸의 채팅 채널에서 별도의 스레드를 생성합니다.
- 룸 권한 및 관리 — 공개, 그룹 제한, 비공개 룸; 그룹 기반 사용자 룸 생성 제어; 음소거, 디afen(소리 차단), 사용자별 볼륨 조절, 내보내기(Kick).
- 테마 기반 오디오 큐 — 입장/퇴장 및 통화 음향은 채팅 알림 사운드 팩을 따르므로, Voice가 사이트의 나머지 부분과 동일한 느낌을 줍니다.
작동 원리
기본적으로 모든 것이 피어 투 피어 방식으로 동작합니다: Discourse 서버는 시그널링만 처리하고, 미디어는 DTLS-SRTP 암호화를 사용하여 참가자 간에 직접 전송됩니다. 추가 인프라가 전혀 필요 없으며, 최대 약 50명 규모의 음성 룸 또는 최대 10명 규모의 비디오 룸에 이상적입니다.
모든 오디오 및 비디오 처리(노이즈 서프레션, 배경 흐림, 자막)는 각 참가자의 기기에서 로컬로 실행됩니다. 제3자에게 아무것도 전송되지 않습니다.
더 큰 규모의 통화가 필요한가요? 플러그인을 클라우드 또는 셀프 호스팅된 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.5GB 모델 파일을 한 번 다운로드해야 합니다).
개인 저장소에서 Resenha 플러그인을 실행 중이었다면, 번들된 Voice 플러그인이 이를 대체하므로 가능할 때 app.yml에서 제거해 주세요.
상태
아직 초기 단계입니다. 우리는 수개월 동안 매일 내부 테스트(dogfooding)를 해왔고 소규모 그룹에게는 매우 잘 작동하지만, 커뮤니티 전체에게 공개하기 전에 팀 내에서 테스트해 보시기 바랍니다. 기본 피어 투 피어 경로에서는 통화 녹화 기능이 없으며, 사용자 플래그, 내보내기(Kick), "통화 종료"를 제외한 기타 모더레이션 도구는 여전히 로드맵에 있습니다.
피드백 환영
사용해 보고 어떻게 되는지 알려주세요! 버그, 아이디어, 질문 모두 이 토픽에서 환영합니다. PR도 환영하며, 이제比以往보다 더 쉬워졌습니다: 코드는 core에 있습니다. ![]()






