요약
- RFC 3389는 발신자가 무발화 구간 동안 일반 음성 패킷을 배경 소음의 압축된 기술, 즉 필수 레벨 바이트 1개와 선택적 스펙트럼 계수로 대체할 수 있게 했습니다.
- 수신기가 들리는 배경음을 로컬에서 생성했기 때문에, 유효한 컴포트 노이즈 패킷은 모델이 네트워크를 건넜다는 사실을 입증할 뿐, 원격 방이 녹음되었거나 충실히 재현되었다는 것을 입증하지 않습니다.
상상해 보십시오. 초기 패킷 음성 통화에서 상대편의 사람이 말하기를 멈춘 직후의 장면을. 음성 프레임의 흐름이 끊깁니다. 수신기가 수학적 0으로 대체하면 회선은 부자연스러울 만큼 죽은 상태가 됩니다. 에어컨 소리, 마이크 전자회로의 미세한 노이즈, 사람이 있는 방의 낮은 질감이 한꺼번에 사라집니다. 듣는 사람은 통화가 끊겼다고 생각하고, "아직 계십니까?"라고 물을 수 있습니다.
경제적인 해답은 아무도 말하지 않는 방의 전속력 샘플을 계속 보내는 것이 아니라, 그 방의 배경을 간결하게 기술하고 상대 엔드포인트가 그럴듯한 버전을 스스로 만들어내도록 하는 것이었습니다.
RFC 3389는 2002년 9월 표준 트랙(Standards Track)으로 발표되어, 이 경계를 넘는 작은 대상을 표준화했습니다. 제목은 기술적이었습니다 —Real-time Transport Protocol Payload for Comfort Noise— 하지만 그 아키텍처 결정은 드물게도 명확했습니다. 네트워크는 최소한의 컴포트 노이즈 매개변수 집합만을 전송하며, 검출·분석·음향 생성은 로컬에 남습니다.
이 형식은 주로 G.711, G.726, G.727, G.728, G.722처럼 통합된 컴포트 노이즈 메커니즘을 이미 갖추지 않은 오디오 코덱을 위해 고안되었습니다. 활성 음성 구간에는 발신자가 해당 코덱의 정상 RTP 패킷을 전송했습니다. 비활성 음성 구간에서는 음성 활동 검출기(VAD)가 일반 음성 인코딩이 더 이상 전송률 대비 가치가 없다고 판단할 수 있었고, 이어서 불연속 전송 알고리즘이 컴포트 노이즈 갱신을 언제 보낼지 결정했습니다.
RFC는 이 두 결정 중 어느 것도 표준화하지 않았습니다. 검출기가 얼마나 민감해야 하는지, 얼마나 기다려야 하는지, 생성기가 인공적인 방 소리를 어떻게 만들어야 하는지를 규정하지 않았습니다. 독립적으로 구축된 엔드포인트들 사이의 인계(handoff)를 표준화한 것입니다.
그 인계는 한 바이트에서 시작했습니다. RFC 3389는 컴포트 노이즈 대상을 침묵 삽입 기술자(Silence Insertion Descriptor, SID) 프레임이라 불렀습니다. 첫 옥텟은 디지털 과부하 기준 음의 데시벨로 표현된 소음 크기를 담았습니다. 하위 7비트가 0부터 127까지의 값을 나타냈고, 최상위 비트는 사용되지 않으며 0이어야 했습니다. 0은 0 dBov를, 127은 −127 dBov를 의미했습니다.
이 숫자는 원격 방의 샘플이 아니었습니다. 크기에 대한 경계가 있는 서술이었습니다. 이 구분이 중요한 이유는, 하나의 서술이 여러 가능한 출력을 이끌 수 있기 때문입니다. 두 수신기가 같은 바이트를 받고 서로 다른 파형을 생성하더라도, 둘 다 전송 형식에는 부합할 수 있습니다.
발신자는 스펙트럼 정보를 덧붙일 수 있었습니다. 이후의 각 바이트는 올폴(all-pole) 소음 모델의 양자화된 반사 계수 하나를 나타냈습니다. 계수의 개수, 즉 모델 차수는 별도의 필드로 전송되지 않고 패킷 길이에서 추론되었습니다. 인코더는 품질, 복잡도, 예상 소음, 신호 대역폭에 따라 그 차수를 선택할 수 있었습니다. 디코더는 고차 계수를 0으로 설정함으로써 자신의 로컬 복잡도를 낮출 수도 있었습니다.
따라서 상호 운용성에는 층위가 있었습니다. 모든 규격에 부합하는 교환에는 레벨이 있었습니다. 일부에는 스펙트럼 특성에 대한 더 풍부한 기술이 있었습니다. 이전의 1바이트 형식을 위해 만들어진 구형 구현은 첫 옥텟을 읽고 나머지를 무시할 수 있었습니다. 패킷 해석에 실패한 것이 아니라, 발신 환경에 대한 더 얇은 서술을 받아들인 것입니다.
RTP 규칙은 이 대상을 작고 독립적인 코덱처럼 동작하게 만들었습니다. 타임스탬프는 컴포트 노이즈 구간의 시작을 표시했습니다. CN 패킷에는 마커 비트가 설정되지 않아야 합니다. 페이로드 길이가 가변적이므로 각 RTP 패킷에는 채널당 정확히 하나의 CN 페이로드가 들어가며, 멀티채널 페이로드는 모든 채널에 동일한 스펙트럼 모델 차수를 사용해야 했습니다.
페이로드 타입에도 경계가 있었습니다. 정적 RTP 페이로드 타입 13은 8,000 Hz RTP 클록에서 컴포트 노이즈를 식별했습니다. 이는 임의의 다른 레이트에서 같은 의미를 부여하지 않았습니다. 다른 클록 레이트를 사용하는 세션은 동적 페이로드 타입을 할당하고CN/16000같은 매핑을 시그널링해야 했습니다. 따라서 익숙한 번호만으로는 충분하지 않았습니다. 번호, 클록, 협상된 미디어 기술이 서로 일치해야 했습니다.
비활성 구간으로의 전환 시점에 발신자는 같은 RTP 스트림에서 CN 패킷을 보냈습니다. 그 이후의 동작은 의도적으로 전역 정책이 아니었습니다. 구현은 주기적으로 갱신을 보낼 수도 있고, 측정된 배경이 유의미하게 변할 때까지 기다릴 수도 있었습니다. 갱신 사이에는 수신기가 마지막 모델과 자체 합성 알고리즘을 이어갑니다.
바로 여기서 겉보기에 단순한 패킷이 증거 문제로 바뀝니다. CN 패킷의 캡처는 페이로드 타입, 타임스탬프, 레벨 바이트, 계수 바이트들을 확립할 수 있습니다. 발신자가 소음 모델을 광고했음을 확립할 수도 있습니다. 그러나 로컬 음성 검출기가 장면을 올바르게 분류했는지는 확립할 수 없습니다. 분석 전에 마이크로 들어온 아날로그 소리가 무엇이었는지 보여줄 수 없습니다. 원격 청취자가 들은 정확한 파형을 복원할 수도 없습니다. 그 파형은 수신 측에서 생성된 것이기 때문입니다.
패킷이 없는 구간 역시 컴포트 노이즈 동작의 증거가 되지 않습니다. RFC 3389의 SDP 지침은 미디어 기술에서 CN을 생략하는 것이 침묵 억제가 일어나지 않음을 함축하지 않는다고 명시합니다. RTP는 어떤 오디오 페이로드 형식에 대해서도 불연속 전송을 허용합니다. 그런 간격 이후 수신기는 시퀀스 번호가 1만큼만 증가하더라도 타임스탬프 불연속을 관찰할 수 있습니다. 누락된 패킷은 의도된 억제를 반영할 수 있지만, 관찰된 부재만으로는 손실, 중단, 장애를 반영할 수도 있습니다. 다른 수신 증거가 필요합니다.
이후 문서들은 이 선택의 영향력을 드러냈습니다. RFC 6263은 네트워크 주소 변환기(NAT)를 통과하는 RTP 경로를 살려 두는 수단으로 CN 패킷을 검토했습니다. 동시에 원격 측이 CN을 지원하고 협상해야 하며, 그 keepalive가 실제로 소음으로 재생될 수 있다고 경고했습니다. 작동 유지용이라 여겨진 패킷이 들릴 수 있게 된 것입니다. 레벨 선택은 더 이상 단순히 미학적 문제가 아니었습니다.
RFC 6465는 같은 음의 dBov 관례를 RTP 오디오 레벨 확장에 재사용했습니다. 그 재사용은 측정 어휘를 더 일관되게 만들었지만, 오디오 레벨 헤더 확장과 CN 페이로드를 같은 서술로 바꾸지는 않았습니다. 하나는 미디어와 함께 레벨을 보고했고, 다른 하나는 수신기가 비활성 구간 동안 소리를 만들 수 있는 매개변수를 제공했습니다.
Lu Heng의 최소 초기 명세(Minimum Initial Specification) 원칙은 이 설계에 유용한 독해를 제공합니다. RFC 3389는 독립적으로 구축된 엔드포인트들이 상호 운용하기 위해 공통이어야 하는 것 — 레벨 인코딩, 선택적 계수 인코딩, 패킹, 타이밍, 채널, 페이로드 명명, 클록 레이트 규칙 — 을 명세했습니다. 소음 검출이나 합성의 미래를 중앙에서 통제하지 않았습니다. 수신기 설계자는 수신한 모델이 합의된 의미를 유지하는 한, 공유 패킷 형식을 바꾸지 않고 생성 결과를 개선할 수 있었습니다.
실행 코드 우위(Running-Code Primacy)는 필요한 절제를 더합니다. 문서만으로 청취자의 방이 자연스럽게 들리게 되지는 않습니다. 구현이 검출·전송·복호·합성을 수행해야 했고, 운영자가 결과를 관찰해야 했습니다. 표준의 권위는 그것이 실제로 정의한 조건에서 끝났습니다. 지각적 충실성은 RFC 번호의 존재가 아니라 측정과 청취 테스트가 뒷받침해야 하는 주장이었습니다.
이 분리가 지속되는 역사입니다. RFC 3389는 침묵을 전송하지 않았고, 방을 전송하지도 않았습니다. 수신기가 로컬 대체물을 만들 수 있도록 하는 간결한 허가와 매개변수 집합을 전송했습니다. 음성 패킷은 멈췄습니다. 물리적 방은 계속되었습니다. 반대편 끝에서 들리는 방은 하나의 작은 메시지와 한 엔드포인트의 실행 코드로부터 구성된 새로운 산출물이 되었습니다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





