← 목록
기타 2026-07-03 3KB 읽기 3분

CAF7 인터컴 프로파일(profile=0) 저대역 음성 코덱 구현

개요

크라우니RTC 고성능화 마스터플랜 P1b 작업. 선행 판정(CAF7브라우저판정.md)에서 밝혀진 갭 — CAF7 v3.1(/Users/ef/crowny-audio)이 profile=1(음악)만 하드코딩되어 있고, 스펙이 정의한 profile=0(인터컴/무전기, 8~16kbps 목표) 및 헤더리스 스트리밍 프레이밍이 전혀 구현되어 있지 않다는 문제 — 를 메우기 위해 신규 독립 코덱을 구현했다.

무엇을 했는지

16kHz mono PCM16, 20ms(320샘플) 프레임을 입력받아:

  1. 저역강조 anti-alias 박스필터 + 2:1 데시메이션 → 160샘플(8kHz 상당, 전화음성 대역)
  2. 2탭 감쇠 선형예측(y_pred = xh1 + (3/5)(xh1-xh2)) 잔차
  3. 균형3진 적응 델타변조(CVSD 계열) — 트릿(-1/0/+1)로 잔차 표현, 데드존으로 "유지" 활용
  4. 5트릿/바이트 패킹(3^5=243) — 160트릿 → 정확히 32바이트, 패딩 불요
  5. 프레임 = 헤더 2B(프로파일니블+시퀀스, 앵커) + 페이로드 32B = 34B = 13.6kbps
각 프레임은 자기 앵커에서 예측기/스텝 상태를 완전히 리셋하므로 프레임 손실이 다음 프레임에 전파되지 않는다(진짜 헤더리스 + 프레임 독립 디코딩).

파라미터(STEP_INIT/MAX=2500, GROW=×2, HOLD=×0.98, REV=×0.99, DZ=3/5, ALPHA=3/5)는 speech_like_16k_1s.wav 기준 SNR 최대화 그리드서치(~28,800 조합)로 확정.

게이트 실측 (3항 전부 PASS)

게이트기준실측
비트레이트8~16kbps13.6 kbps
SNR≥15dB19.18dB(speech_like) / 15.44dB(tone)
프레임 독립 디코딩손실 비전파바이트단위 일치 확인

관련 파일

  • /Users/ef/crowny-rtc/코덱/인터컴/caf7_intercom.c (419줄) — 인코더/디코더/WAV I/O/SNR/CLI
  • /Users/ef/crowny-rtc/코덱/인터컴/build.sh — 빌드 스크립트
  • /Users/ef/crowny-rtc/코덱/인터컴/caf7_intercom.한선 (109줄) — 핵심로직 한선씨 동반(컴파일+실행 검증 완료)
  • /Users/ef/crowny-rtc/코덱/인터컴/인터컴판정.md — 상세 판정 문서(설계 근거, 스펙 편차, 재현 명령)
  • 선행: /Users/ef/crowny-rtc/코덱/CAF7브라우저판정.md

잔여 이슈 (인터컴판정.md에 상술)

  1. 순수 톤 신호에서 SNR 마진이 얇음(15.44dB) — 고주파 지배 신호는 슬로프 오버로드 취약
  2. 8차 LPC/서브밴드 DCT 미검증(계수 오버헤드 우려로 2탭 예측 채택, A/B 비교 미실시)
  3. PLC(패킷손실은닉)가 최소 수준(단순 홀드) — 페이드/파형반복으로 개선 여지
  4. 테스트 신호가 실음성이 아닌 합성 톤(sox 미설치) — 실음성 검증은 후속 과제
크라우니코드: HIT 0 / MISS 0(신규 도메인) / learn 1 (CAF7인터컴프로파일0 패턴 등록)