스픽스(영어: Speex)는 Xiph에서 개발된 무특허 오디오 압축 포맷이며 VoIP 소프트웨어 및 팟캐스트에 사용되는 프리웨어 음성 코덱이다.[5]CELP 음성 코딩 알고리즘에 기초하고 있다.[6] 스픽스는 모든 특허 제한으로부터 자유로움을 추구하며, 개정된 (3절) BSD 라이선스 하에 허가를 받았다. Ogg 컨테이너 포맷과 함께 사용되거나 UDP/RTP를 통해 전송되기도 한다.

스픽스
파일 확장자.spx
인터넷 미디어 타입
audio/x-speex, audio/speex, audio/ogg
개발Xiph.Org 재단, Jean-Marc Valin
포맷 종류오디오 포맷
다음에 포함Ogg
표준RFC 5574
웹사이트www.speex.org
libspeex
개발자Xiph.Org 재단, Jean-Marc Valin[1]
발표일1.0 / 2003년 3월
안정화 버전
1.2.0[2] / 2016년 12월 7일(7년 전)(2016-12-07)
저장소
운영 체제크로스 플랫폼
종류오디오 코덱, 참조 구현
라이선스BSD 스타일 라이선스[3][4]
웹사이트Xiph.org 다운로드

스픽스 개발자들은 이 프로젝트를 Vorbis 범용 오디오 압축 프로젝트와 상호 보완적인 것으로 본다. 스픽스는 파일 크기를 줄이기 위해 영구적으로 품질을 떨어뜨리는 손실 압축 포맷이다.

스픽스 프로젝트는 2002년 2월 13일에 시작되었다.[7] 스픽스의 첫 개발 버전은 LGPL 라이선스 하에 공개되었으나, 1.0 베타 버전과 마찬가지로 스픽스는 Xiph 재단의 개정 BSD 라이선스 하에 공개되었다.[8] 스픽스 1.0은 2003년 3월 24일에 공지되었다. 스픽스의 최종 버전 인코더와 디코더는 1.1.12이다.[2] Xiph.Org 재단은 스픽스를 이전 버전으로 보고 있으며, 오푸스가 그것을 계승하고 있다고 본다.

설명 편집

스픽스는 VoIP와 파일 기반 압축에 사용할 목적으로 개발되었다. 개발 목표는 높은 품질의 음성과 낮은 비트레이트에 최적화된 코덱을 개발하는 것이었다. 이 목표를 달성하기 위해 스픽스는 다중 비트레이트를 사용하며, 초광대역(32 kHz 샘플링 레이트), 광대역(16 kHz 샘플링 레이트), 협대역(전화 품질, 8 kHz 샘플링 레이트)을 지원한다. 스픽스는 휴대폰용이 아닌 VoIP용으로 만들어졌기 때문에 스픽스는 손실된 패킷에 강해야한다. 이러한 이유로 인해 CELP가 스픽스를 위해 사용할 인코딩 기술로 채택되었다.[6] 가장 큰 이유 중 하나는 CELP가 낮은 비트레이트와 높은 비트레이트에서 작업을 잘 수행하고 크기를 잘 조정할 수 있다는 것이 오랫동안 증명됐다는 것이다. 주요 특징은 다음과 같다.

  • 프리웨어/오픈 소스, 무특허, 무로열티
  • 동일한 비트스트림에서 협대역과 광대역의 통합
  • 광범위한 사용가능 비트레이트(2 kbit/s에서 44kbit/s)
  • 동적 비트레이트 전환과 가변 비트레이트(VBR)
  • 음성 활동 감지(Voice Activity Detection, VBR과 통합)(1.2 버전에서는 지원하지 않음)
  • 가변 복잡성
  • 32 kHz에서 초광대역 모드(48 kHz까지)
  • 인텐시티 스테레오 인코딩 옵션

기능 편집

샘플링 레이트
스픽스는 주로 3 가지 샘플링 레이트로 개발되었다. 8 kHz(전화용 샘플링 레이트와 같다), 16 kHz, 32 kHz. 이것들은 각각 협대역, 광대역, 초광대역을 가리킨다.
품질
스픽스 인코딩은 0부터 10까지 범위의 품질 매개변수에 대부분의 시간을 통제받는다. 고정 비트레이트(CBR) 작동에서는 품질 매개변수가 정수이며, 가변 비트레이트(VBR) 작동에서는 품질 매개변수가 실수(부동소수점)이다.
복잡도(가변)
스픽스로, 인코더에 허용된 복잡도를 변화시키는 것이 가능하다. 이는 gzip 압축의 -1에서 -9까지의 옵션과 비슷하게 1에서 10까지의 범위의 정수로 수행되는 검색 방식으로 조작된다. 일반적인 용도에서는 복잡도 1의 노이즈 레벨이 복잡도 10보다 1에서 2 dB 정도 높지만 복잡도 10의 CPU 요구조건은 복잡도 1보다 5배 높다. 실제적으로 최적의 균형은 2와 4 사이이다.[9]
가변 비트레이트(VBR)
가변 비트레이트(VBR)는 오디오를 인코딩하는 데에서 발생하는 어려움을 조절하기 위해 비트레이트를 동적으로 변화시킬 수 있다. 스픽스의 예를 살펴보면 모음 혹은 '높은 진폭과 짧은 지속시간을 갖는 음(high-energy transient)'은 좋은 품질을 가지기 위해 높은 비트레이트가 필요하지만, 마찰음은 더 낮은 비트레이트로도 충분하다. 이 때문에 VBR은 동일한 품질을 더 낮은 비트레이트에서 얻거나 어떤 비트레이트에서는 더 좋은 품질을 얻을 수도 있다. 이러한 이점에도 불구하고 VBR은 세 가지 문제점을 안고 있다. 첫째로 품질을 정해놓기 때문에 최종 평균 비트레이트에 대한 보장이 없다. 둘째로 음성 인터넷 프로토콜(VoIP) 같은 몇몇 실시간 소프트웨어에서는 통신 채널의 특성상 최대 비트레이트가 낮아야 하지만 그렇지 못하다. 셋째로 VBR로 인코딩한 음성을 암호화하는 것은 완전한 보안성을 유지하지 못한다.
평균 비트레이트(ABR)
평균 비트레이트는 특정 목표 비트레이트에 맞추기 위해 품질을 동적으로 조절하는 VBR의 문제를 해결하였다. 품질과 비트레이트의 비율이 실시간으로 조절되기 때문에 전체 품질이, 정확한 품질 설정을 한 VBR로 인코딩한 것보다 약간 낮다.
음성 활동 감지(VAD)
음성 활동 감지가 동작하면 오디오가 음성을 인코딩하고 있는지 혹은 무음이나 배경음을 인코딩하고 있는지를 감지할 수 있다. VAD는 VBR로 인코딩할 경우에 무조건적으로 활성화되므로 비VBR 작업에서만 작동여부를 선택할 수 있다. 이 기능이 활성화 됐을 경우 스픽스는 비음성 부분을 감지하고 배경음을 재구성하기 위해 충분한 비트로 그것들을 인코딩한다. 이것을 '안정 소음 발생'(CNG)라고 한다. VAD를 지원했던 마지막 버전은 1.1.12이며, v 1.2부터 Any Activity Detection으로 대체되었다.
불연속 전송(DTX)
불연속 전송은 VAD 및 VBR에 추가된 기능이다. 배경음이 정지 상태일 때 전송을 완전히 멈출 수 있게 한다. 한 파일에서 5비트는 사라진 각 프레임에 이용된다.(250 bit/s와 일치)
인식 강화(Perceptual enhancement)
인식 강화는 코딩/디코딩 과정에서 발생한 소음을 감소시키는 디코더의 한 부분이다. 많은 경우에 인식강화는 객관적으로 원음과의 차이를 발생시키지만 최종적으로는 여전히 괜찮은 소리이다.
알고리즘적 지연
모든 코덱은 전송할 때 지연이 발생한다. 스픽스는 이러한 지연이 프레임 크기와 같다. 협대역(8kHz)에서 지연 시간은 30ms, 광대역(16kHz)에서는 34ms이다. 이 값들은 프레임들을 인코딩하거나 디코딩하는데 걸리는 CPU시간을 차지하지 않는다.

같이 보기 편집

참조 편집

  1. Jean-Marc Valin (2009). “people.xiph.org - personal webspace of the xiphs - Jean-Marc Valin”. Xiph.Org. 2009년 9월 11일에 확인함. 
  2. “Speex News”. Xiph.Org Foundation. 2017년 4월 11일에 확인함. 
  3. “The Speex Codec Manual - Speex License”. Xiph.Org Foundation. 2009년 9월 1일에 확인함. 
  4. “Sample Xiph.Org Variant of the BSD License”. Xiph.Org Foundation. 2009년 8월 29일에 확인함. 
  5. Xiph.Org Speex: A Free Codec For Free Speech, 2009-09-01에 확인
  6. Xiph.Org Introduction to CELP Coding, 2009년 9월 1일에 확인
  7. Xiph.org Speex releases - pre-1.0 - NEWS and ChangeLog in speex-0.0.1.tar.gz, 2009년 9월 1일에 확인
  8. Xiph.Org (2003-03-24) Speex reaches 1.0; Xiph.Org now a 501(c)(3) Non-Profit Organization, 2009년 9월 1일에 확인
  9. Codec Description

외부 링크 편집