Per rispondere al suggerimento di un nostro lettore cerchiamo di capire nei prossimi due post qualcosa in più sul VAD acronimo di Voice Activity Detection. Il VAD è una tecnica utilizzata negli algoritimi di elaborazione della voce per rilevare che in una conversazione attiva ci sia effettivamente della voce oppure dei momenti di silenzio.
In pratica, la trasmissione dei dati durante una conversazione VoIP viene interrotta nei momenti di silenzio. I motivi di impiego di tale tecnica sono legati al risparmio di banda, considerato che in una conversazione vocale media ci sono delle pause, la banda comunque riservata alla conversazione non viene utilizzata e dunque “sprecata”.
Per evitare questo, sono stati messi a punto degli algoritmi specifici, che hanno il compito di sospendere la trasmissione dei dati se rilevano il “silenzio”. Molti provider attivano queste tecniche, fra questi c’è Eutelia.
Fin qui l’idea è certamente positiva, perché sprecare banda se non ci sono dati? I problemi nascono quando questi provider vengono utilizzati su centralini Asterisk. Gli inconvenienti si notano maggiormente nei risponditori automatici (IVR) che utilizzano musica di attesa (Music On Hold): normalmente Asterisk non è in grado di generare pacchetti RTP in uscita se i pacchetti in ingresso non arrivano a causa della rimozione del silenzio. Nel prossimo post accenneremo una possibile soluzione al VAD con Asterisk.
Asterisk, come detto, non ha un pieno supporto del VAD. Per questo motivo, spesso, è possibile riscontrare problemi con provider che hanno attivi questi algoritmi allo scopo di risparmiare banda. Come già detto, gli inconvenienti si notano soprattutto durante la musica in attesa, in cui il flusso voce viene sospeso almeno da un lato della conversazione.
In realtà dalla versione Astersik 1.4 è stata introdotta una patch che risolve il problema. Molto semplicemente possiamo dire che la soluzione consiste nel generare pacchetti in uscita, in modo asincrono, anche quando non si rileva voce.
Per quello che riguarda la risoluzione pratica, nelle nostre installazioni, dobbiamo avere installata una versione di Asterisk 1.4 (oppure fare un upgrade), inoltre, se non abbiamo configurato zaptel, dobbiamo essere certi di caricare il modulo ztdummy. Infine è necessario apportare le modifiche al file “/etc/asterisk/asterisk.conf”:
[options]
internal_timing = yes
silence_supression=no
In questo modo i problemi legati ai “momenti di silenzio” con Asterisk dovrebbero essere risolti.