[VoIP 개요] G.729 음성코덱
저번에 말씀 드린 바와 같이 오늘은 G.729 코덱에 대해 좀더 알아 보도록 하겠습니다.
G.729 코덱에 대해 별도로 지면을 할애 하는 것은 그만큼 이 코덱이 중요하다는 의미 이지요.
G.729 코덱은 두가지 Annex 가 있습니다.Annex A 와 B 가 있습니다.
무슨말 이냐면 G.729 코덱의 성능의 향상을 위하여 약간의 변화를 준 두가지 변형이 있다고 보시면 됩니다.
이중에 G.729a 코덱이 대부분의 VoIP 벤더들의 기본 코덱으로 사용되고 있습니다. 시스코도 마찬가지 입니다.
더불어 시스코의 IP 폰에서 지원되는 코덱도 G.711 과 G.729a 코덱 두가지만 지원이 됩니다.
여러분들이 VoIP 에 대한 관심이 있다면 이들 두가지 G.729 Annex에 대해 아셔야 합니다.
이들은 모두 ITU 의 표준(Standard) 코덱 입니다.
또한 모두 음성을 초당 8Kbps 로 압축 하고 인코딩 타임(Compression Delay)도 동일하게 10ms 입니다.
여기까진 동일한데…그런데 몇가지 성능상의 차이점이 있습니다.
첫째로 가장 큰 차이라면 G.729a 코덱은 알고리즘이 보다 단순해서 DSP 에 대한 부하가 G.729에 비해 절반 정도 적습니다.
즉, G.729 는 20MIPS 이고 G.729a 는 10MIPS 입니다.
이 차이 때문에 하나의 DSP 칩은 동시에 두개의 G.729a 통화를 처리 할수 있는 반면에 G.729 통화는 하나밖에 지원하지 못합니다. DSP(Digital Signal Processor) 칩은 NM 보이스 모듈이나 카타리스트 6500의 6608모듈 이나 AS5000 시리즈의 VoIP 모듈등에 존재하는 칩이고 앞서 말씀 드렸다 시피 음성을 압축하는 부분 이라고 했습니다.각 장비마다 장착 할수 있는 DSP 칩의 갯수가 한정 되어 있기 때문에 DSP 에 대한 부하가 얼마 인지는 중요한 요소가 됩니다.
예를 들면 아래 그림은 AS 5300 과 VoIP 모듈의 그림 입니다.
<그림 1>
<그림 2>
<그림1>은 AS5300에 하나의 T1 모듈과 두개의 VoIP 모듈이 장착되어져서 VoIP 게이트웨이로 구성되어 있는 사진 입니다.(예전에는 VoIP 모듈 대신 MICA(Modem ISDN Channel Aggregation) 모듈을 통해 PC 통신 서비스나 PPP 인터넷 접속 서비스용도로 사용되었지요.)
<그림2>의 VoIP 모듈은 <그림1>의 슬롯에 장착 됩니다.하나의 VoIP 모듈에는 최대 30개의 DSP 칩을 장착 할수 있습니다.
만약 두개의 모듈을 설치하면 60개의 DSP 칩을 이용할수 있습니다.
이때 게이트웨이에서 사용하는 코덱이 G.729 코덱 이라면 이 게이트웨이는 동시에 60개의 통화만 처리할수 있습니다.하지만 사용하는 코덱이 G.729a 코덱이라면 동시에 처리할수 있는 통화는 120 개가 됩니다.DSP 칩에 대한 부하(Load)의 차이가 이해 되시죠?추가해서 만약 코덱이 G.711 이라면 240개의 동시 통화가 가능합니다.
두번째 차이점은 MOS 값은 G.729 코덱이 약간 좋습니다.
G729 코덱은 MOS 가 3.92 이고 G729a 코덱은 3.9 입니다. 하지만 아주 미미한 차이죠?
자… 이번엔 G.729 Annex B 입니다.
Annex B 는 VAD (Voice Activity Detection) 과 CNG(Comport Noise Generation) 를 정의합니다.
VAD (Voice Activity Detection) 란 Silence Suppression 이라고도 합니다.
사람의 전화 통화시에 거의 절반 정도는 침묵 입니다.
즉, 저쪽에서 말을 하면 이쪽은 듣기만 하고 반면에 이쪽에서 말을 하면 저쪽은 듣기만 한다는 것이죠.
기존의 TDM 환경에서는 이렇게 말을 하지 않더라도 채널이 비어있는 채로 전송이 될뿐 그 채널을 다른 통화 시도자에게 할당 하지는 못합니다.
하지만 VoIP 환경에서는 이렇게 송화자가 침묵을 할 경우 IP 패킷을 생성하지 않는 것 입니다.
그렇게 되면 일시적으로 음성이 밴드위드를 사용하지 않게 되고 이렇게 남는 밴드위드를 다른 어플리케이션 (WEB 이나 FTP등)이 사용할 수가 있는 것이죠.
이렇게 음성의 진폭값이 일정 한도(Threshold)에 도달 하는지를 감지해서 패킷의 생성 여부를 결정하는 것이 VAD 입니다.
다만 VAD를 사용하게 되면 말의 시작부분이나 음성의 진폭이 떨어지는 말의 끝부분은 잘려 나갈수가 있습니다. 이런것을 클리핑(Clipping) 이라고 합니다.
그래서 음질이 나빠질수가 있습니다.시스코 게이트웨이는 디폴트로 이 기능이 Enable 되어 있습니다.
CNG는 VAD와 관련이 있습니다.VAD를 사용하게 되면 말을 하지 않는 사람이 상대방에게 아무런 음성 패킷을 보내지 않으므로 말을 하는 사람은 당연히 수화기에서 아무런 소리도 안들리게 됩니다.이럴경우 말을 혼자서 일방적으로 오랫동안 하는 사람은 간혹 전화가 끊어졌을까 염려해서 “여보세요?”하고 상대의 존재 여부를 확인하게 됩니다.
이런 상황을 방지하고 통화자들에게 통화의 안정감을 주기 위해서 VAD 시에도 일정한 잡음을 발생시키게 되는데…이걸 CNG(Comport Noise Generation) 라고 합니다.
이러한 G.729 Annex B는 G.729 코덱과 G.729a 코덱 둘다에 적용됩니다.
오늘은 내용이 길고 새로운 용어들이 소개 되었는데요…이런 용어들은 VoIP 에서 일상적으로 사용되는 용어들이니 잘 알아 두시고요…
결론은 G.729a 코덱이 VoIP 환경에서 일반적으로 가장 많이 사용되는 코덱이고 이러한 기능들을 갖고 있다는 것을 알아 두시면 되겠습니다
'개발 이야기 > VoIP' 카테고리의 다른 글
[VoIP개요] #9. VoIP 게이트웨이의 정의 (0) | 2008.09.18 |
---|---|
[VoIP개요] 음성의 패킷화(Packetization) 2 (0) | 2008.09.18 |
[VoIP개요] 음성의 패킷화(Packetization) 1 (0) | 2008.09.18 |
[VoIP 개요] 음성코덱의 종류 (0) | 2008.09.18 |
[VoIP 개요]음성코덱의 개념과 필요성 (0) | 2008.09.18 |