Componenti per il VoIP: i CODEC
Tipologie
- Per realizzare un componente di missaggio audio, che
realizzi la somma di più segnali, occorre disporre dei campioni vocali in formato lineare (PCM-16), mentre quelli provenienenti ed indirizzati ai singoli
conferenzieri, sono in formato compresso, mediante algoritmi di
co-decodifica. Tra questi abbiamo codec senza memoria, codec di forma
d'onda, e codec con modello di sorgente; i primi rappresentano ogni
campione con un ridotto numero di bit, i secondi applicano un algoritmo
con memoria che produce un valore in uscita in corrispondenza di
più valori di ingresso, ed i terzi operano a lotti,
elaborando
intere trame di segnale (dai 10 ai 30 millisecondi), e producendo come
risultato i valori dei parametri di un modello del segnale, tale da
premetterne una riproduzione psico-acusticamente accettabile. Una breve
rassegna sull'argomento può essere trovata presso l'Università
di Southampton.
Incapsulamento
- Per ogni codec, possono sussitere modalità di
pacchettizzazione ed incapsulamento RTP ad esso peculiari, e queste sono descritte in documenti IETF RFC; ad esempio, mentre i codec di forma d'onda possono inserire in un pacchetto un numero variabile di campioni, quelli che operano su trame di durata fissa, possono inserire in uno stesso
pacchetto più trame, possibilmente in numero intero. In particolare, parecchi codec sono descritti nella RFC 3551, detta anche RTP/AVP (Audio
Video Profile), che definisce tra l'altro, il mapping tra i codec ed il PT (Paylod Type) RTP. Le regole di pacchettizzazione di altri codec possono essere descritte da altri documenti; tali codec possono essere identificati da numeri di PT dinamici, ovvero validi solo per la durata di una singola sessione. Per quella sessione, il codec identificato dal numero di PT dinamico, è individuato in una fase di segnalazione precedente, tipicamente condotta mediante la sintassi dell'SDP.
-
Forniamo
ora una breve descrizione analitica dei più diffusi
codec per
VoIP.
G.729
| Codifica e descrizione |
CELP - Code Excited Linear Prediction Model; G729B
è CS-ACELP Conjugate-Structure Algebraic CELP, che necessita
una complessità ridotta, mentre il 729AB è uno
schema di compressione del silenzio |
| Velocità e ritardo |
8 kbps, con trame da 80 bits ogni 10 msec,
spesso pacchettizzate a coppie. |
| Licenza commerciale |
Sipro Lab Telecom,
VoiceAge,
SurfUp
(su DSP), Qodec, GAO,
Agora
Labs |
| Versione libera |
per uso non commerciale
VoiceAge,
Intel,
ITU-T,
Readytechnology |
| Normativa |
RFC
3551 Payload Type 18, ITU-T |
G.728
| Codifica e descrizione |
CELP a basso ritardo che calcola i coefficienti del
filtro di
predizione mediante un adattamento all'indietro. Codifica frames di 5
campioni (presi a 8 KHz) con 10 bit.
|
| Velocità e ritardo |
16 kbps, ottenuti raggruppando 4 frames (40 bits) ogni
2,5 msec |
| Licenza commerciale |
Encore
(DSP Texas) |
| Versione libera |
Zatsman-Concannon |
| Normativa |
RFC
3551 Payload Type 15, ITU-T |
G.726
| Codifica e descrizione |
ADPCM con 5, 4, 3, 2 bit/campione.
Rimpiazza G.721 per ADPCM-32, e G.723 per le
velocità di 40, 32 e 16 kbps. Un flusso G.726 non contiene
informazioni relative alla velocità adottata, e questa deve
essere espressa dal payload type del pacchetto RTP. Dato
inoltre che in dipendenza della velocità, cambia il
pacchettizzazione, in uno stesso pacchetto non posssono coesistere velocità differenti.
|
| Velocità e ritardo |
40, 32, 24, 16 kbps |
| Licenza commerciale |
|
| Versione libera |
Sun
Microsystems, Inc (G.721, G.723), |
| Normativa |
RFC
3551 Payload Type dinamico, ITU-T |
G.723.1
| Codifica e descrizione |
Offre due velocità, ed è
obbligatorio per videotelefoni H.324. Esiste una specifica per la
compressione di silenzio nella Annex A, per l'implementazione floating
point nella Annex B, e per la codifica di canale per wireless nella
Annex C. Trame con diverse velocità e descrittori
di silenzio sono di dimensioni diverse, ma possono essere mescolate
nello stesso pacchetto RTP, dato che il tipo di codifica è
indicato nella trama stessa.
|
| Velocità e ritardo |
5.3 e 6.3 kbps, trame da 30 msec più 7.5
msec di look-ahead. |
| Licenza commerciale |
Agora
Labs, SiPro,
VoiceAge |
| Versione libera |
Intel, |
| Normativa |
RFC
3551 Payload Type 4, ITU-T |
G.722
| Codifica e descrizione |
Codificatore wideband, opera un
campionamento a 16 KHz, ed effettua un ADPCM su due sotto-bande.
Interessante questa descrizione
presso l'Università del Maryland. Nel 1999,
l'ITU-T standardizza
il G.722.1, basato su transform coding; nel 2002, standardizza il
G.722.2, con codifica ACELP, poi integrato nell'AMR-WB
|
| Velocità e ritardo |
64, 65 e 48 kbps per il G.722, 24 o 32 kbps per il
G.722.1, da 23.85 a 6.6 kbps per G.722.2; tutti con trama da
20 msec |
| Licenza commerciale |
Encore
(DSP Texas), VoiceAge
(G.722, G.722.1) |
| Versione libera |
CMU/Bellcore,
(G.722 originale) |
| Normativa |
RFC
3551 Payload Type 9, ITU-T |
G.711 ALaw e uLaw
| Codifica e descrizione |
8/7 bit a campione, consiste in una semplice tabella.
Legge A e legge mu (u) sono due diverse tabelle |
| Velocità e ritardo |
64 kbps, una trama ogni 12.5 msec porta 100 campioni
ovvero 800 bit |
| Licenza commerciale |
|
| Versione libera |
Sun
Microsystems, Inc |
| Normativa |
RFC
3551 Payload Type 0 per legge mu, e PT 8 per legge
A, ITU-T |
iLBC
| Codifica e descrizione |
iLBC sta per internet Low Bitrate Codec ed
è progettato specificatamente per il VoIP. Esibisce un
peggioramento graduale in presenza di paccheti persi, migliore
di quanto accade per il G.729A, a parità di
complessità computazionale. E' integrato in KPhone, telefoni
Pingtel, Logitech PS2 SDK, OpenH323, Asterisk, XTen. E' sponsorizzato
da GIPS,
che fornisce i codecs di Skype,
tanto che qualcuno ha pensato che quest'ultimo usi iLBC, ma
probabilmente, non
è così. |
| Velocità e ritardo |
Le due velocità di 13.33 e
15.20 kbps corrispondono a trame di 30 e 20
ms rispettivamente. |
| Licenza commerciale |
- |
| Versione libera |
iLBC
Freeware |
| Normativa |
RFC
3951 ,RFC 3952 |
AMR
| Codifica e descrizione |
Adaptive Multi rate (AMR) è stato sviluppato
per il sistema GSM, e quindi adottato nel 1999 da 3GPP,
come mandatory codec per i sistemi cellulari 3G. Include Voice Activity
Detection, Confort Noise. Esiste sia la versione Narrow Band (NB), con
campionamento a 8 KHz, che quella WideBand (WB), campionata
a 16 KHz. che può operare in una modalità compatibile
con G.722.2, che adotta una codifica ACELP. |
| Velocità e ritardo |
Narrow Band: 12.20 (GSM EFR), 10.20, 7.95, 7.40
(IS-641), 6.70 (PDC-EFR), 5.90, 5.15, 4.75 kbps
Wide Band: 23.85, 23.05, 19.85, 18.25, 15.85, 14.25, 12.65, 8.85, 6.6
kbps
In entrambi i casi vengono adottate trame di 20 msec. |
| Licenza commerciale |
VoiceAge |
| Versione libera |
VoiceAge Open
AMR, AMR-NB, AMR-WB+, come eseguibile Win32 |
| Normativa |
3GPP
26071, 3GPP
26244, RFC
3267 |
GSM
| Codifica e descrizione |
Quello usato negli attuali telefoni cellulari di seconda
generazione ha codice 06.10, e si basa sul Residual Pulse Excitation -
Long term Prediction (RTE-LTP). Le varianti più recenti sono
l'Enhanced Full Rate (EFR) che usa ACELP e l'Half Rate (HR) che usa
CELP-VSELP.
|
| Velocità e ritardo |
13.2, 12.2 e 5.6 kbps rispettivamente per RPR-LTP, EFR
e
HR, con trame di 20 msec. Per una confronto tra le
complessità, e quella per l'AMR, si veda commsdesign. |
| Licenza commerciale |
|
| Versione libera |
Quut - prima era Technical
University of Berlin |
| Normativa |
RFC
3551 Payload
Type 3 per RPE-LTP o dinamico per EFR, ETSI
ETS 300 961 specifica il
bitstream, ETSI TS 101 318 riprende la pacchetizzazione definita da IETF |
Speex
| Codifica e descrizione |
Una suite di codec completamente libera da brevetti,
disponibile sia in versione NarrowBand che WideBand (campionamento a 8
e 16 kHz), con bit rate dinamico, Voice Activity Detection, e switch
dinamico. Si può bilanciare tra complessità di calcolo e
qualità sonora.
|
| Velocità e ritardo |
24.6, 18.2, 15, 11, 8, 6 per il NB, ritardo di 30 e 34 msec per NB e WB |
| Licenza commerciale |
|
| Versione libera |
http://speex.org/download.html |
| Normativa |
speex.org,
IETF
Draft, |
LPC-10
| Codifica e descrizione |
Sviluppato originariamente presso il DoD USA
|
| Velocità e ritardo |
2.4 |
| Licenza commerciale |
|
| Versione libera |
Washington
Univ. |
| Normativa |
|
Riferimenti vari e sfusi
- Presso voip-info.org sono disponibili links alle infomazioni sui diversi codec, confronti tra gli stessi, supporto da parte delle implementazioni, ed esempi di codifica.
- Anche Uninett
pubblica una buona pagina di confronto, completa di valutazione di qualità.
- Hawksoft
pubblica un confronto tra la complessità di diversi codecs
- Rfc-ref.org costituisce un ottimo motore di ricerca, indicizzazione e navigazione tra i documenti IETF. Presso networksorcery
troviamo un interessante riferimento incrociato tra i Payload Type RTP
ed i rispettivi profili.
- VoiceAge propone una CodecLib API che facilita lo sviluppo di applicazioni multi-codec, ad esempio gestendo il buffering in ingresso in accordo con le esigenze del codec in uso, ovvero gestendo un handshake con l'applicazione per il buffer di uscita, impedendo il suo overflow.
- Intel propone una Unified
Speech Codec (USC) Interface per lo sviluppo di blocchi standard per applicazioni vocali, ed in questo ambito permette il dowload di Intel integrated performance primitives speech samples, che consistono in due applicazioni di co-decodifica in diversi formati, complete di codice dei codec
- Tra i fornitori di tecnologia di codifica, Encore
offre implementazioni su DSP
- Presso data-compression.com
sono linkati alcuni algoritmi di codifica, come 2.4 kbps MELP Proposed
Federal Standard, U.S. DoD LPC-10, GSM 06.10 13 kbit/s RPE/LTP, 16
kb/s Low-Delay CELP G.728, ADPCM G.721 e G.723.
- Presso la CMU si trova una implementazione del CELP
4.8 kbps, standard F1016 in versione "rapida" ed "efficiente".
- Presso l'Università del Maryland troviamo un interessante tutorial
sulla codifica WideBand.
- Fujitsu fornisce un IP-Phone Chip con tutto on-board
- Hellosoft propone uno stack VoIP completo su micropocessore RISC
- Microchip propone dsPIC30F,
una Speech Encoding/Decoding Library basata su di una versione modificata del codice di Speex, scritta in assembler, e che offre una API ben definita, per l'integrazione con le applicazioni
- Ittian offre un sotto-sistema software completo di speech coders Narrow Band e Wideband,
cancellazione d'echo, Jitter Buffer adattivo, Packet Loss Concealment
e RTP. Gira su DSP TI C64x™, ed integra una implementazione Multi Canale rientrante, con una API chiamabile da C
- Spirit DSP offre una ampia scelta di codecs per eXpressDSP di TI. Il codice è rientrante, e supporta multithreading ed allocazione di memoria dinamica.
Copyright © by LabTel @ Info-Com All Right Reserved. Pubblicato su: 2006-01-08 (6504 letture) [ Indietro ] |