Re: [eside-ghost] Asterisk, detección de llamadas no exitosas con el SPA3102 y transcoding

Unai Goikoetxeta unai en goikoetxeta.com
Mar Sep 25 11:15:33 CEST 2007


jeje no te creas que he empollado mucho, lo que pasa es que del tema ya
sabía ya que es parte de bastantes asignaturas en teleco ;-). Una cosilla...
en el sip.conf, aunque habilite para los usuario del SPA g729, ALAW y g723,
¿el codec a utilizar en la conversación de que dependerá?¿Del selecionado en
el panel de administración del SPA?¿En el orden en el que he puesto las
sentencias allow?

:/

On 9/25/07, Saúl Ibarra <saghul en gmail.com> wrote:
>
> Joder tio, veo que has empollado bastante :)
>
> Veo que has llegado a la conclusión correcta :) Por norma general, se
> utiliza alaw en LAN, y g729 fuera, *si se puede*.
>
> Con *si se puede* me refiero a que el codec es muy bueno y ofrece
> mucha calidad de voz con poco ancho de banda, pero tiene un coste
> computacional bastante elevado.
>
> Como tu solo vas a tener 1 usuario haciendo transcoding de g729 poco
> te importa el coste computacional, así que lo mejor sería que pusieras
> alaw en las 2 bocas de SPA y g729 en el PAP2.
>
> Haz unas pruebas con OpenVPN ya que estas, para ahorrarte algún dolor
> de cabeza por el NAT y tal.
>
> Keep on hacking!
>
> El 25/09/07, Unai Goikoetxeta <unai en goikoetxeta.com> escribió:
> > Me contesto a mi mismo en alguna cosa... He estado leyendo en la
> siguiente
> > página sobre el tema:
> >
> > http://www.voipforo.com/en/codec/codecs.php
> >
> > Por lo que, he llegado a las siguiente conclusiones que espero que me
> > confirméis.
> >
> > g711a es la versión Europea del estándar de la ITU g711 también conocido
> > como ALAW, estándar basado en la modulación por código de pulsos o PCM
> con
> > una tasa de bits 64kb/s y un muestreo de 8kHz. Si no recuerdo mal lo
> > estudiado en la universidad, esto es la base de la telefonía básica en
> la
> > que un canal de E1 tiene una tasa de 64kb/s.
> >
> > En base a esto, esta claro que NO debo tener activado ulaw ya que no voy
> a
> > darle uso en ningún caso.
> >
> > Siguiendo con los demás codecs, g723.1 es otro codec de la ITU, con
> menor
> > tasa de bits (a elegir entre 5,6 o 6,3 kb/s) que emplea una frecuencia
> de
> > muestreo idéntica a la anterior (8kHz). Esto me hace suponer que este
> codec
> > muestrea lo mismo, aunque lo comprime en mayor medida, reduciendo el
> ancho
> > de banda necesario respecto al g711a en más de una décima parte.
> >
> > En la página también pone que el g723.1 es la parte del audio en el
> estándar
> > H.324 de videoconferencias.
> >
> > Existe otro codec, soportado por asterisk y por mi SPA3102 (puede que
> > también por el PAP2) que es el g726. Este es un codec de la ITU que
> viene a
> > remplazar g723 (completamente diferente al g723.1) y al g721.
> Básicamente
> > emplea la modulación de código de pulsos adaptiva o ADPCM en la que
> podemos
> > seleccionar la tasa de bits entre cuatro posibles (16/24/32/40kb/s)
> > realizando el muestreo también a 8kHz.
> >
> >  El g729 es uno de los codecs más recientes de la ITU, que codifica a
> 8kb/s
> > empleando un sistema de codificación conocido como CS-ACELP
> > (conjugate-structure algebraic-code-excited linear-prediction) con
> muestreo
> > de 8kHz. La ventaja es evidentemente su baja tasa de transmisión, aunque
> a
> > costa de un pequeño retardo de unos 15ms.
> >
> > Por último, el codec GSM es el utilizado en la telefonía móvil de
> segunda
> > generación estandarizado por el ETSI. Debido a las características
> > especiales de las tramas GSM, la tasa de transmisión es de tan solo
> 13kbps,
> > empleando, lógicamente un muestreo de 8kHz. Desde un punto de vista
> técnico,
> > comparándolo con los demás codecs, GSM no ofrece la mejor calidad, pero
> si
> > una calidad aceptable para velocidades de transmisión bajas.
> >
> > Ahora bien, sobre la teoría, debería utilizar g711a en la red local de
> casa
> > debido a que no tengo restricciones de ancho de banda, por lo que
> debería
> > usar ALAW en los dos puertos (FXS y FXO) del SPA3102.
> >
> > En cuanto al codec a utilizar en el PAP2 que tendré conectado en
> cualquier
> > punto de Internet para acceder al servidor Asterisk de casa, deberé
> elegirlo
> > en base a la conexión a Internet que disponga.
> >
> > Evidentemente, ante una conexión pobre, el codec más apropiado será
> g723.1
> > porque puede llegar a funcionar a 5,6kb/s, que si la memoria no me falla
> es
> > la velocidad de transmisión de un simple modem de 56k, aunque
> seguramente
> > dispondré de una conexión bastante mejor. En vez de usar g723.1 o g729,
> ¿no
> > será mejor utilizar g726 con una tasa de 32 o 40 kb/s ?
> >
> >
> >
> > PD:
> >
> > Como curiosidad. El oído humano es capaz de detectar sonidos del rango
> de
> > 20Hz a 20kHz, aunque la voz humana sólo puede llegar a emitir hasta unos
> > 10kHz en casos muy extremos. Por lo que, si quisiéramos realizar un
> codec
> > que registrara la voz humana perfectamente, teniendo en cuenta el
> teorema de
> > Nyquist que dice que para muestrear es necesario tomar las muestras al
> menos
> > al doble de la máxima, necesitaríamos muestrear a 20kHz o más.
> >
> > Aún así, en la telefonía, se tiene en cuenta que tomando sólo los
> valores
> > comprendidos entre 20Hz y 4kHz de los emitidos por cualquier voz humana
> es
> > posible comprender el mensaje sin deteriorar totalmente el contenido
> > frecuencial. Es por esto, que la tasa de muestreo en la telefonía y en
> la
> > mayoría de los codecs es de 8Khz (2*4kHz).
> >
> > Si os fijáis, al hablar por teléfono la voz de la otra persona nunca
> suena
> > igual que en la realidad debido a la ecualización que se realiza durante
> el
> > muestreo. Esta diferencia suele ser más evidente en las chicas debido a
> que
> > su registro es más elevado. Por este motivo, si la otra persona es un
> chico
> > con voz muy grave, pocas veces notaremos diferencia entre su voz real y
> la
> > que escuchamos por el teléfono.
> >
> > Teniendo en cuenta esto, si buscásemos la mayor calidad posible en
> cuanto al
> > muestreo para escuchar la voz de forma más real en una comunicación, el
> > codec a elegir sería el g722 ya que muestrea a 16kHz (filtra las
> frecuencias
> > de 0 a 8kHz en vez e 0 a 4kHz), con lo que lograríamos captar a la
> > perfección a la gran mayoría de las voces humanas. Este codec emplea una
> > tasa de bit de 64kbps, y la pena es no está soportado por los ATA ni por
> > Asterisk por defecto.
> >
> >
> >
> > On 9/25/07, Unai Goikoetxeta <unai en goikoetxeta.com> wrote:
> > > Saúl,
> > >
> > > Yo entendí que me dijiste que como tenía un servidor potente podía
> hacer
> > transcoding :S Bueno.. he instalado los codecs de g729 y g723.1 de esa
> > página en mi Asterisk tal y como me has dicho. Lo que no entiendo bien
> es la
> > recomendación que me has dado respecto a que codecs utilizar en cada
> ata.
> > >
> > > Te comento, ahora mismo, en el PAP2 tengo configurado el codec g729a y
> se
> > conecta a un usuario SIP con las siguientes características:
> > >
> > > [unai]
> > > type=friend
> > > secret=secret
> > > host=dynamic
> > > canreinvite=no
> > > disallow=all
> > > allow=alaw
> > > allow=ulaw
> > > ;allow=g729
> > > ;allow=g723.1
> > > ;allow=gsm
> > > context=etxea
> > > dtmfmode=rfc2833
> > > callerid=666666666
> > > language=es
> > > qualify=yes
> > > mailbox=666666666 en buzondevoz
> > >
> > >
> > > Por otro lado, en el SPA, para el puerto FXS tengo el codec g729a con
> la
> > siguiente configuración en el asterisk para su usuario SIP:
> > >
> > > [etxea]
> > > type=friend
> > > secret=secret
> > > host=dynamic
> > > canreinvite=no
> > > disallow=all
> > > allow=alaw
> > > allow=ulaw
> > > ;allow=g729
> > > ;allow=g723.1
> > > context=etxea
> > > dtmfmode=rfc2833
> > > outgoinglimit=1
> > > callerid=999999999
> > > qualify=yes
> > > language=es
> > > mailbox=999999999 en buzondevoz
> > >
> > >
> > > Y en el puerto FXO el codec g729a con:
> > >
> > > [rtb]
> > > type=friend
> > > secret=secret
> > > host=dynamic
> > > canreinvite=no
> > > disallow=all
> > > allow=alaw
> > > allow=ulaw
> > > ;allow=g729
> > > ;allow=g723.1
> > > ;allow=gsm
> > > context=etxea
> > > cancallforward=yes
> > > dtmfmode=rfc2833
> > > outgoinglimit=1
> > > language=es
> > > qualify=yes
> > >
> > > Me imagino, que el tema de los codecs permitidos en cada uno de los
> casos
> > tengo que cambiarlo. Tengo cinco preguntas:
> > > 1. ¿Debería permitir el uso de alaw, ulaw, g729, gsm y g723.1 en los
> tres
> > casos?
> > > 2. ¿alaw es g711a en los atas?
> > > 3. ¿Cúal de los codecs tiene mejor calidad de audio?
> > > 4. En caso de que desee un compromiso entre la calidad del audio y
> ancho
> > de banda consumido, ¿qué codec sería mejor?
> > > 5. El motivo por el cual me dices que utilice el g729 en el PAP2
> supongo
> > que me lo recomiendas debido a que el PAP2 lo utilizaré fuera de la red
> > local en la que se encuentra Asterisk por lo que me vendrá mejor un
> codec
> > que chupe menos BW, ¿no?
> > >
> > > Muchas gracias por todo!!!
> > >
> > > Unai
> > >
> > >
> > >
> > >
> > > On 9/20/07, Saúl Ibarra < saghul en gmail.com> wrote:
> > > > El 20/09/07, Unai Goikoetxeta < unai en goikoetxeta.com > escribió:
> > > > > Aupa Jon,
> > > > >
> > > > > Muchas gracias por responder. No tenía muy claro como hacer el
> > dialplan, y
> > > > > me lo saqué de la chistera xD Pero ahora que me has dicho eso, lo
> he
> > > > > restructurado para dejarlo así:
> > > > >
> > > > > [etxea]
> > > > >
> > > > > exten => _XXX,Dial( SIP/${EXTEN}@rtb,30)
> > > > > exten => _112,Dial(SIP/112 en rtb,30)
> > > > >
> > > > > exten => _XXXX, Dial(SIP/${EXTEN}@rtb,30)
> > > > >
> > > > > exten => _XXXXX, Dial( SIP/${EXTEN}@rtb,30)
> > > > >
> > > > > exten => _656008062,1,Goto(1,1)
> > > > > exten => _944763299,n,Goto(2,1)
> > > > > exten => _XXXXXXXXX,n,Dial(SIP/${EXTEN}@rtb,30)
> > > > > exten => _XXXXXXXXX,n,Congestion
> > > > >
> > > > > exten => 1,1,Dial(SIP/unai,30)
> > > > > exten => 1,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?4)
> > > > > exten => 1,n,Dial( SIP/6561111111 en rtb,30)
> > > > > exten => 1,n,Goto(6,1)
> > > > > exten => 1,n,PlayBack(vm-goodbye)
> > > > > exten => 1,n,Hangup
> > > > >
> > > > > exten => 2,1,Dial(SIP/etxea,30)
> > > > > exten => 2,n,Goto(7,1)
> > > > > exten => 2,n,PlayBack(vm-goodbye)
> > > > > exten => 2,n,Hangup
> > > > >
> > > > > exten =>
> > 5,1,VoicemailMain(${CALLERID(num)}@buzondevoz)
> > > > > exten => 5,n,Hangup
> > > > >
> > > > > exten => 6,1,Voicemail(656111111 en buzondevoz)
> > > > > exten => 6,n,Hangup
> > > > >
> > > > > exten => 7,1,Voicemail(944761111 en buzondevoz)
> > > > > exten => 7,n,Hangup
> > > > >
> > > > > Sobre la variable ${DIALSTATUS}, probé a ponerlo ayer detrás de la
> > directiva
> > > > > (1,3) pero no me detectaba ni busy ni congestion.... Si tenéis
> alguna
> > > > > sugerencia sobre como ponerlo me haríais un gran favor :)
> > > > >
> > > >
> > > > Para las llamadas a los dispositivos SIP y tal, una macro (normalita
> > jeje):
> > > >
> > > > [macro-llamar]
> > > > exten => s,1,Dial(${ARG1},30,Tt)
> > > > exten => s,n,Goto(s-${DIALSTATUS})
> > > >
> > > > exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}|b)
> > > > exten => s-NOANSWER,1,Voicemail(${MACRO_EXTEN}|u)
> > > >
> > > > exten => _s-.,1,Goto(s-NOANSWER,1)
> > > >
> > > > Y en el dialplan pones:
> > > >
> > > > exten => 2,1,Macro(llamar,SIP/etxea)
> > > >
> > > > > En cuanto al transcoding, lo preguntaba porque Saúl ayer me
> recomendó
> > > > > hacerlo. Según te he entendido, tengo que poner en cada usuario el
> > tipo de
> > > > > codec preferido para él, ¿no? ¿De esta manera, si tengo un codec
> para
> > el
> > > > > usuario a y otro distinto para el b, las comunicaciones del a al
> > asterisk
> > > > > serán empleando el primer codec y las del b al asterisk serán con
> el
> > > > > segundo? Quisiera preguntaros sobre qué codec debería utilizar...
> en
> > el
> > > > > SPA3102 utilizo el g729a, que me he fijado que no lo tengo
> soportado
> > por
> > > > > asterisk....
> > > > >
> > > >
> > > > Umm, yo te recomendé lo contrario :) que no hagas transcodign, para
> no
> > > > cargar la máquina... Asterisk de serie no soporta transcoding de
> g729,
> > > > pero todo se puede arreglar :) puedes bajarte el codec para fines
> > > > educativos de http://asterisk.hosting.lv y así podrás transcodificar
> > > > :)
> > > >
> > > > Por otro lado, vas a utilizar softphones y tal, pero con g729 no los
> > > > hay ni libres ni gratis, así que lo suyo es usar Zoiper y el codec
> GSM
> > > > por ejemplo. Entonces, lo mejor será que configures el SPA en alaw,
> > > > porque el transcoding tiene menor coste. No obstante, en el PAP2
> > > > tendrás que configurar el g729 para que no te consuma mucho ancho de
> > > > banda, así que instalate el codec del link que te he puesto.
> > > >
> > > > Happy Asterisk hacking!
> > > >
> > > > > Muchas gracias!!
> > > > >
> > > > > Unai
> > > > >
> > > > > PD:
> > > > >
> > > > > Me piro a Galicia en dos horas y puede que no pueda contestaros
> con
> > rapidez.
> > > > > Pero en cuanto tenga un momento, chequearé el correo :)
> > > > >
> > > > >
> > > > >
> > > > >  On 9/20/07, Manwe Jon Bonilla <manwe en aholab.ehu.es> wrote:
> > > > > >
> > > > > > El Thu, 20 Sep 2007 03:31:26 +0200
> > > > > > "Unai Goikoetxeta" < unai en goikoetxeta.com> escribió:
> > > > > >
> > > > > > > Bueno, ya he configurado el PAPT y el SPA3102 y he de decir
> que
> > funciona
> > > > > > > todo de maravilla. Quisiera consultaros un par de dudas en
> base a
> > mi
> > > > > > > dialplan en Asterisk:
> > > > > > >
> > > > > > > [etxea]
> > > > > > >
> > > > > > > exten => _XXXXXXXXX,1,GotoIf($["${EXTEN}" =
> > > > > "656111111"]?5)
> > > > > > > exten => _XXXXXXXXX,2,GotoIf($["${EXTEN}" =
> > > > > "944761111"]?6)
> > > > > > > exten => _XXXXXXXXX,3,Dial(SIP/${EXTEN}@rtb,30)
> > > > > > > exten => _XXXXXXXXX,4,Congestion
> > > > > > > exten => _XXXXXXXXX,5,Goto(1,1)
> > > > > > > exten => _XXXXXXXXX,6,Goto(2,1)
> > > > > > >
> > > > > > > exten => 1,1,Dial(SIP/unai,30)
> > > > > > > exten => 1,2,GotoIf($["${DIALSTATUS}" = "BUSY"]?4)
> > > > > > > exten => 1,3,Dial(SIP/6561111111 en rtb ,30)
> > > > > > > exten => 1,4,Goto(6,1)
> > > > > > > exten => 1,5,PlayBack(vm-goodbye)
> > > > > > > exten => 1,6,Hangup
> > > > > > >
> > > > > > > exten => 2,1,Dial(SIP/etxea,30)
> > > > > > > exten => 2,2,Goto(7,1)
> > > > > > > exten => 2,3,PlayBack(vm-goodbye)
> > > > > > > exten => 2,4,Hangup
> > > > > > >
> > > > > > > exten =>
> > 5,1,VoicemailMain(${CALLERID(num)}@buzondevoz)
> > > > > > >
> > > > > > > exten => 6,1,Voicemail( 656111111 en buzondevoz)
> > > > > > > exten => 6,2,Hangup
> > > > > > >
> > > > > > > exten => 7,1,Voicemail( 944761111 en buzondevoz)
> > > > > > > exten => 7,2,Hangup
> > > > > > >
> > > > > > > Como veis, he hecho una regla general para todos los teléfonos
> de
> > 9
> > > > > cifras,
> > > > > > > sobre los que filtro mi numero de teléfono y el de casa, para
> los
> > que
> > > > > hago
> > > > > > > un tratamiento especial. En el caso de mi número, primero
> intento
> > > > > contactar
> > > > > > > vía SIP con mi usuario durante 30 segundos, y de no poder
> hacerlo
> > llamo
> > > > > a mi
> > > > > > > teléfono móvil. Si el usuario sip rechaza la llamada, se salta
> el
> > > > > > > contestador... pero si no la rechaza, se realiza la llamada al
> > móvil, y
> > > > > > > aunque esta no sea exitosa, no salta el contestador. ¿Hay
> alguna
> > manera
> > > > > de
> > > > > > > hacer que Asterisk detecte una llamada fallida en este caso?
> > > > > >
> > > > > > Vamos por partes:
> > > > > >
> > > > > > Las dos primeras líneas que has puesto son imaginativas pero no
> son
> > la
> > > > > manera
> > > > > > correcta de filtrar números. Cuando tienes varias plantillas
> dentro
> > de una
> > > > > > extensión, asterisk usa siempre la menos ambigua que coincida
> con la
> > > > > extensión
> > > > > > que marcas. Ejemplo:
> > > > > >
> > > > > > exten => _XXX,NoOp(Llamada de 3 cifras)
> > > > > > exten => _1XX,NoOp(Llamada al ciento algo)
> > > > > > exten => _112,NoOp(Emergencias)
> > > > > >
> > > > > > Si marcas el 300 solo el primer patrón coincide y esta claro que
> ese
> > se
> > > > > usa.
> > > > > > Si llamases al 150 los dos primeros patrones son válidos pero se
> usa
> > el
> > > > > > segundo por ser menos ambiguo. Y en el caso de llamar al 112 se
> > usaría el
> > > > > > tercero por la misma razón.
> > > > > >
> > > > > > exten => 656111111,1,
> > > > > > ...
> > > > > > exten => 944761111,1,
> > > > > > ...
> > > > > > exten => _XXXXXXXXX,1
> > > > > > ...
> > > > > >
> > > > > > Otra cosa: Las prioridades las marcas 1,2,3,... y es correcto
> pero
> > poco
> > > > > > flexible ya que si quieres meter cosas en medio tienes que
> > renombrarlas
> > > > > todas.
> > > > > > Se usa 1,n,n,n,n,... que es mucho más cómodo.
> > > > > >
> > > > > >
> > > > > > Respecto a lo de detectar las llamadas fallidas y tal te puedo
> decir
> > cómo
> > > > > lo
> > > > > > trataría yo pero cuando Saul se despierte va a mandar seguro una
> > macro
> > > > > enorme
> > > > > > que contemple todas las posibilidades :)
> > > > > >
> > > > > > Si quieres algo refinado lo mejor es que uses una macro que
> > contemple las
> > > > > > posibilidades en función de la variable ${DIALSTATUS} y te
> permitirá
> > > > > > diferenciar entre noanswer, busy...etc
> > > > > >
> > > > > >
> > > > > >
> > > > > > > Por otro lado, quería preguntaros alguna sugerencia para
> mejorar
> > el
> > > > > dialplan
> > > > > > > y sobre como puedo realizar transcoding para lograr mejor
> calidad
> > en la
> > > > > > > conversación.
> > > > > > >
> > > > > >
> > > > > > algunas mejoras ya te las he sugerido. En cuanto al trascoding,
> > asterisk
> > > > > lo
> > > > > > realiza para poder comunicar los canales si usan diferentes
> codecs.
> > Para
> > > > > > mejorar la calidad de audio solo tienes que decir al uusario que
> use
> > > > > mejores
> > > > > > codecs. Puede que no hay entendido esta parte...
> > > > > >
> > > > > >
> > > > > >
> > > > > > Un saludo
> > > > > >
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > eside-ghost mailing list
> > > > > > eside-ghost en deusto.es
> > > > > >
> > https://listas.deusto.es/mailman/listinfo/eside-ghost
> > > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > eside-ghost mailing list
> > > > > eside-ghost en deusto.es
> > > > > https://listas.deusto.es/mailman/listinfo/eside-ghost
> > > > >
> > > >
> > > >
> > > > --
> > > > Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de
> > disketes."
> > > >
> > ----------------------------------------------------------------
> > > > http://www.saghul.net/
> > > >
> > > > _______________________________________________
> > > > eside-ghost mailing list
> > > > eside-ghost en deusto.es
> > > > https://listas.deusto.es/mailman/listinfo/eside-ghost
> > > >
> > >
> > >
> >
> >
> > _______________________________________________
> > eside-ghost mailing list
> > eside-ghost en deusto.es
> > https://listas.deusto.es/mailman/listinfo/eside-ghost
> >
>
>
> --
> Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de
> disketes."
> ----------------------------------------------------------------
> http://www.saghul.net/
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://listas.deusto.es/mailman/private/eside-ghost/attachments/20070925/296cca7f/attachment-0001.htm


Más información sobre la lista de distribución eside-ghost