- 디지털 오디오 데이터를 압축하고 압축 해제를 하는 알고리즘을 구현하는 컴퓨터 프로그램.
- 고품질의 오디오 신호를 품질을 유지하면서 최소한의 수의 비트로 표현.
제한된 무선 통신 대역폭 내에서 실시간 오디오 전송을 구현하기 위한 페이로드 최적화
8kHz = 초당 8,000번
출처: Killander Music Records
8kHz 샘플링
고음을 잘라내 무전기처럼 먹먹한 소리
16kHz 샘플링
ㅅ, ㅍ과 같은 자음 구별이 명확한 맑은 소리
출처: ZipDX
16kbps = 초당 약 2KB 전송마이크에서 16kHz (샘플링 레이트)로 원음 데이터를 수음.
원본 데이터는 초당 약 256kbps 발생.
대역폭(광대역/협대역) 결정.
코덱이 데이터를 넘겨받아, 사람의 목소리를 전달하는 데 불필요한 고주파 대역을 잘라냄.
대역폭이 제한된 신호를 코덱의 내부 압축 알고리즘을 통해 손실 압축을 처리.
지정한 타겟 비트레이트 상한선에 맞춰 최종 패킷이 생성됨.
| 코덱 및 모드 | 샘플링 레이트 | 표준 비트레이트 | 초당 페이로드 트래픽 | 인코딩 효율성 (품질 대비 대역폭) | ESP32-S3 CPU 오버헤드 |
|---|---|---|---|---|---|
| Opus (Narrowband) | 8kHz | 6 ~ 8 kbps | ~1,000 Byte/s | 최상 (낮은 대역폭에서 높은 명료도 유지) | 보통 |
| Speex (Narrowband) | 8kHz | 8 kbps (Q4 기준) | ~1,000 Byte/s | 낮음 (고주파 왜곡, 기계음 유입) | 최하 |
| Opus (Wideband) | 16kHz | 16 kbps | ~2,000 Byte/s | 우수 (하이브리드 모드로 압축률 극대화) | 높음 |
| Speex (Wideband) | 16kHz | 16.8 kbps (Q4 기준) | ~2,100 Byte/s | 보통 (동일 비트레이트 대비 Opus보다 음질 저하) | 낮음 |
데이터 포인터에 NULL 전달 시 PLC 활성화.
직전 프레임 정보를 기반으로 손실 구간 파형을 예측하여 PCM 출력을 생성.
현재 패킷에 이전 프레임의 저비트레이트 복사본을 삽입하여 전송.
N번 패킷 손실 시 N+1번 수신 후 decode_fec=1로 선행 프레임 복원. SILK 모드에서만 동작.
* SILK는 Opus의 음성 전용 인코딩 모드.
speex_decode_int(state, NULL, pcm_out) 호출로 PLC 활성화.
직전 프레임 상태를 기반으로 손실 구간 파형을 생성하여 PCM 버퍼를 채움.
| 그룹 | 코덱 | 비트레이트 | RF 점유율 (A) | CPU 점유율 | 상태 |
|---|
6~12kbps) 적용 시 Opus와 체감 음질 차이가 크지 않음.