정의
WebRTC는 브라우저와 앱이 기기 사이에서 실시간 오디오, 비디오, 데이터를 직접 주고받게 하는 웹 표준과 프로토콜의 집합입니다. 암호화, 네트워크 통과, 미디어 전송을 처리합니다.
WebRTC의 작동 방식
WebRTC는 두 가지 사양 묶음입니다. W3C의 JavaScript API와, RFC 8825가 개요를 제시하는 IETF의 프로토콜 묶음입니다. 둘이 합쳐져 페이지가 마이크를 캡처하고, 연결을 설정하고, 그 위로 오디오를 보낼 수 있게 합니다.
연결 설정에는 세 부분이 필요합니다. 시그널링은 양쪽이 오퍼와 앤서를 교환하는 방법이며 WebRTC는 이를 애플리케이션에 맡기므로 앱마다 자체 서버를 씁니다. ICE는 가정용 라우터와 방화벽을 통과하는 경우를 포함해 양쪽 사이의 네트워크 경로를 찾고, 직접 경로가 막혀 있으면 STUN과 TURN이라는 보조 서버를 씁니다. 그런 다음 미디어는 UDP 위에서 DTLS와 SRTP로 암호화되어 흐르고 Opus로 부호화된 오디오를 실어 나릅니다. RFC 7874는 WebRTC 엔드포인트가 Opus와 G.711을 지원하도록 요구합니다.
브라우저는 음성에 중요한 기능을 더합니다. 에코 제거, 노이즈 억제, 자동 이득 제어를 마이크에 전송 전에 적용합니다. 애플리케이션이 아무것도 하지 않아도 패킷 손실과 지터에 적응합니다.
음성 에이전트에게 중요한 이유
음성 에이전트는 두 가지 방식으로 발신자에게 닿습니다. 전화 통화는 PSTN과 SIP 트렁크를 거쳐 도착하며 협대역 전화 오디오입니다. 웹사이트나 모바일 앱에서 오는 통화는 WebRTC를 쓰고 광대역 오디오를 유지할 수 있어 인식에 도움이 되고 소리도 더 좋습니다.
절충점은 운영상의 것입니다. WebRTC는 UDP 위에서 동작하고 기다리지 않고 손실에서 회복하므로 낮은 지연에 적합하지만, 시그널링과 흔히 TURN 서버가 필요하며 비용이 들고 움직이는 부품이 늘어납니다. WebSocket은 TCP로 오디오를 실어 나르므로 만들기는 더 간단하지만 패킷이 손실되면 멈출 수 있습니다. 가이드가 둘을 자세히 비교합니다.
앱 안의 음성 에이전트는 전화번호도 받지 않으므로 발신번호와 번호 기반 라우팅이 적용되지 않습니다. 대신 앱이 사용자를 식별합니다.
예시
설명용 설정입니다. 지원 페이지에 문의하기 버튼이 있습니다. 클릭하면 마이크 권한을 요청하고, 에이전트의 서버로 WebRTC 연결을 열어 48 kHz Opus 오디오를 양방향으로 스트리밍합니다. 같은 에이전트가 SIP 트렁크를 통해 8 kHz로 회사 전화번호의 통화도 받습니다.