VoIP Eutelia, VAD e Music on hold

News dicembre 11th. 2007, 3:09pm

VAD, acronimo di Voice Activity Detection, è un algoritmo utilizzato nell’elaborazione vocale per rilevare la presenza o l’assenza di voce umana nell’audio campionato. Solitamente il VAD è utilizzato nella codifica audio e nei sistemi di riconoscimento vocale.

Citando un bell’articolo tratto dal sito Cisco: “nelle normali conversazioni a voce, se uno parla l’altro ascolta. Nelle odierne reti di comunicazione vengono utilizzati canali bidirezionali a 64kbps a prescindere dal fatto che qualcuno stia parlando. Questo significa che viene sprecato almeno il 50 percento del totale della banda disponibile. Il quantitativo di banda sprecato può essere addirittura più alto se si analizza statisticamente quante pause nel parlato ci sono in una conversazione media”.

Proprio per risparmiare banda il VAD, già in uso sulle reti GSM, è stato introdotto anche da alcuni carrier VoIP nazionali.

Naturalmente il VAD ha creato qualche problema laddove è presente una installazione di Asterisk, specialmente se si ha un risponditore automatico (IVR) che fa uso di una musica di attesa (Music On Hold): normalmente Asterisk non è in grado di generare pacchetti RTP in uscita se i pacchetti in ingresso non arrivano per via della rimozione del silenzio. Risultato finale, la musica d’attesa si ode a tratti o meglio solo quando dall’altro lato nella cornetta si incanala voce o qualche rumore di fondo… Il problema è venuto alla mia attenzione durante una fase di testing di un IVR, grazie alla preziosa collaborazione dell’amico Alfredo Gentile che colgo l’occasione di salutare.

Per ovviare a questo problema, in Asterisk 1.4 è stata introdotta – già da diverso tempo e dopo parecchio testing delle varie applicazioni disponibili – una patch che risolve il problema. In pratica viene forzata la generazione di pacchetti in uscita in modo asincrono quando è disponibile una sorgente di timing esterna: se sull’altra estremità non è presente una sorgente di timing Asterisk genererà appunto i pacchetti in uscita in modo asincrono.

Sarà dunque sufficiente assicurarsi di:

1) Avere una release 1.4 di Asterisk

2) Caricare il modulo ztdummy, se non si dispone di una scheda che fa uso di zaptel e fare in modo che l’avvio sia automatico al boot.3) Aggiungere le seguenti righe al file /etc/asterisk/asterisk.conf:

[options]
internal_timing = yes
silence_supression=no

Per chi fa uso di XEN, si rende necessaria anche la ricompilazione di zaptel, previa modifica del codice del file sorgente ztdummy.c commentando le righe da 57 a 70:

/*#if defined(__i386__) || defined(__x86_64__)
#if LINUX_VERSION_CODE >= VERSION_CODE(2,6,13)
The symbol hrtimer_forward is only exported as of 2.6.22:
#if defined(CONFIG_HIGH_RES_TIMERS) && LINUX_VERSION_CODE >= VERSION_CODE(2,6,22
)
#define USE_HIGHRESTIMER
#else
#define USE_RTC
#endif
#else
#if 0
#define USE_RTC
#endif
#endif
#endif
*/

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

Tag: Sistemi di Call Center | Centralino Voip | Consulente Asterisk Napoli | Centralino Telefonico | Voip | Asterisk CTI | PBX | Telefoni IP | Networking | Linux


Sviluppo di IVR, sistemi di callcenter, PBX Voip.

5 commenti:

  1. Antonio, 21. giugno 2008, 16:18

    Ho provato a fare le modifiche qui descritte ma il problema della moh su eutelia è rimasto, io uso trixbox 2.6 e il modulo ztdummy già era presente ho fatto le modifiche al file asterisk.conf ma niente di nuovo.
    C’è qualche altra prova che potrei fare.
    Grazie mille.

     
  2. admin, 21. giugno 2008, 21:52

    Ciao,
    sei proprio sicuro di avere il modulo ztdummy attivo?

    [root@asterisk ~]# lsmod | grep ztdummy
    ztdummy 8096 0
    zaptel 191652 9 ztdummy

    Fammi sapere.

     
  3. Franco, 4. novembre 2008, 17:54

    A me non risolve assolutamente nulla, il comando
    lsmod | grep ztdummy
    da questo:
    ztdummy 9256 0
    zaptel 190980 11 xpp,ztdummy,wcusb,wctdm,wcfxo,wctdm24xxp,wcte11xp,wct1xxp,wcte12xp,wct4xxp,tor2
    per cui dovrebbe essere tutto funzionante
    [options]
    internal_timing = yes
    silence_suppression = no
    e non risolve affatto !!! Il problema continua ad esserci.

     
  4. admin, 4. novembre 2008, 19:58

    Ciao Franco,
    qualche informazione in più in merito alla tua configurazione (versione di asterisk, kernel, etc. etc.), insomma tutto quello che può essere utile?

     
  5. admin, 4. novembre 2008, 22:34

    Nel frattempo puoi dare un’occhiata a questo post: http://www.asterisk-italia.it/forum/viewtopic.php?f=2&t=1051

    Ciao!

     

Scrivi un commento: