Oggi mi sono sentito chiedere su quale principio funziona il VoIP e perché esistono diversi tipi di Codec. Iniziamo col dire che la voce è un segnale analogico (ossia, guardandolo da “vicino” assume n-mila diversi stati) mentre la rete di trasmissione è di tipo digitale (ossia contempla solo due stati: 0 e 1).
Pertanto dobbiamo trasformare il nostro segnale analogico in un segnale digitale: il processo è in se abbastanza semplice, basta infatti effettuare una campionatura del segnale, ovvero dato un intervallo di tempo prestabilito il codec andrà a vedere su quale livello è la nostra voce, e lo assegnerà ad una determinata scala.
Quindi siamo passati da un segnale avente infiniti stati ad una serie di “punti” campionati dal software. Con questi punti siamo in grado di ricostruire perfettamente l’onda sonora iniziale mediante il processo inverso di campionamento, tuttavia pur avendo una perdita di informazioni: più saranno i punti campionati e più informazioni avremo sull’onda analogica iniziale, più fedele sarà quindi il risultato.
Il problema principale è che dobbiamo trovare un compromesso fra qualità e quantità, visto che maggiori sono le informazioni campionate e maggiore sarà il peso dei pacchetti inviati. A questo punto pero’ arrivano in nostro soccorso gli algoritmi di compressione, che permettono di comprimere una serie di dati al fine di inviare pacchetti più piccoli, pero’ anche qui esiste un problema.
Esistono algoritmi più o meno complessi che permettono di ridurre sensibilmente la quantità e la dimensione di pacchetti in transito sulla rete, tuttavia per il VoIP subentra un problema: il tempo di compressione/decompressione deve necessariamente essere basso, perché in caso contrario introdurrà un ritardo sulla comunicazione, che se troppo alto, sarà percepito dall’utente.
Immaginiamo di aver campionato la nostra voce, a questo punto non resta che trasmettere il pacchetto e attendere la conferma di ricezione da parte dell’host, ma questo lo vedremo nella prossima puntata :-)