[Asterisk-Dev] DTMF detection on Italian national analogue phone

Steve Underwood steveu at coppice.org
Wed Dec 15 17:22:18 MST 2004


Hi Leandro,

If it fails that test you probably have some additional noise on the 
line. After pressing hook flash, do you get a new dial tone? If so, that 
is probably the problem. The DTMF detector in * is world class...... but 
only on echo cancelled lines :-). When echo causes a lot of dial tone 
(or voice in an IVR application) to reach the DTMF detector it can have 
problems. I designed it to be a really good DTMF detector for IVR use, 
rather than a really relaxed detector for normal dialling use. If does 
no dial tone filtering.

Regards,
Steve


Leandro wrote:

>I noticed asterisk was unable to detect DTMF on italian national standard
>analogue phone, Telecom Sirio.187, after you press flash-hook key, using
>three-way-calling.
>Before you press the flash-hook key (R on italian phone) DTMF is correctly
>detected. After the press, you can still ear DTMF tones, but asterisk fails
>to detect them.
>
>Scrolling through the code in dsp.c I found the Sirio.187 fails the
>"fraction of total energy test".
>
>Here is the values of row_energy, col_energy and s->energy pressing a key
>(4) before pressing the flash-hook key, so correctly detected by *.
>Following there are results still pressing a key (4), but after pressing the
>flash-hook key, so * not recognizing it.
>
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 51197734912.000000
>col_energy[best_row] = 79007612928.000000
>s->energy = 2446498816.000000
>Totalized = 130205347840.000000
>Required =  102752950272.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 40048136192.000000
>col_energy[best_row] = 68445212672.000000
>s->energy = 2220868352.000000
>Totalized = 108493348864.000000
>Required =  93276470784.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 48126177280.000000
>col_energy[best_row] = 73434710016.000000
>s->energy = 2343587584.000000
>Totalized = 121560887296.000000
>Required =  98430678528.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 41578663936.000000
>col_energy[best_row] = 69766201344.000000
>s->energy = 2250892032.000000
>Totalized = 111344865280.000000
>Required =  94537465344.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 46268534784.000000
>col_energy[best_row] = 73994788864.000000
>s->energy = 2341982976.000000
>Totalized = 120263323648.000000
>Required =  98363284992.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 47956094976.000000
>col_energy[best_row] = 76737814528.000000
>s->energy = 2382856960.000000
>Totalized = 124693909504.000000
>Required =  100079992320.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 40457850880.000000
>col_energy[best_row] = 67653341184.000000
>s->energy = 2211096320.000000
>Totalized = 108111192064.000000
>Required =  92866045440.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 51918557184.000000
>col_energy[best_row] = 77449338880.000000
>s->energy = 2437239552.000000
>Totalized = 129367896064.000000
>Required =  102364061184.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 36203597824.000000
>col_energy[best_row] = 65965674496.000000
>s->energy = 2147873536.000000
>Totalized = 102169272320.000000
>Required =  90210688512.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 51488350208.000000
>col_energy[best_row] = 78079942656.000000
>s->energy = 2426924032.000000
>Totalized = 129568292864.000000
>Required =  101930809344.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 39871606784.000000
>col_energy[best_row] = 66242617344.000000
>s->energy = 2182198528.000000
>Totalized = 106114224128.000000
>Required =  91652338176.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 48861020160.000000
>col_energy[best_row] = 78064590848.000000
>s->energy = 2401483008.000000
>Totalized = 126925611008.000000
>Required =  100862286336.000000
>Dec 15 19:39:32 NOTICE[23571]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>
>Here the result for a key (4) pressed after the flash-hook.
>
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 40055701504.000000
>col_energy[best_row] = 68427182080.000000
>s->energy = 2842917376.000000
>Totalized = 108482883584.000000
>Required =  119402529792.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 46886240256.000000
>col_energy[best_row] = 75203706880.000000
>s->energy = 3012673024.000000
>Totalized = 122089947136.000000
>Required =  126532267008.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 41132843008.000000
>col_energy[best_row] = 68392464384.000000
>s->energy = 2954963968.000000
>Totalized = 109525307392.000000
>Required =  124108486656.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 45613502464.000000
>col_energy[best_row] = 77834403840.000000
>s->energy = 2990991872.000000
>Totalized = 123447906304.000000
>Required =  125621658624.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 45468848128.000000
>col_energy[best_row] = 65383550976.000000
>s->energy = 2924743424.000000
>Totalized = 110852399104.000000
>Required =  122839223808.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 48466411520.000000
>col_energy[best_row] = 77433192448.000000
>s->energy = 2994533888.000000
>Totalized = 125899603968.000000
>Required =  125770423296.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:610 dtmf_detect: Get a DTMF hit with 52
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 36973805568.000000
>col_energy[best_row] = 68595224576.000000
>s->energy = 2832371712.000000
>Totalized = 105569030144.000000
>Required =  118959611904.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 52560257024.000000
>col_energy[best_row] = 73354240000.000000
>s->energy = 3117404416.000000
>Totalized = 125914497024.000000
>Required =  130930985472.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 37500686336.000000
>col_energy[best_row] = 68955963392.000000
>s->energy = 2833644544.000000
>Totalized = 106456649728.000000
>Required =  119013070848.000000
>Dec 15 19:45:39 NOTICE[26644]: dsp.c:591 dtmf_detect:
>Sirio 187 Debug:
>row_energy[best_row] = 49607892992.000000
>col_energy[best_row] = 72208801792.000000
>s->energy = 3053703168.000000
>Totalized = 121816694784.000000
>Required =  128255533056.000000
>
>As you can notice the s->energy level is higher. I don't want to use an hack
>and reduce manually the s->energy value to its 85%, but any idea about the
>reasons? Take in mind that Sirio.187 made by Telecom is the wider used
>analog phone here in Italy. It is the "de facto" standard.
>
>Thank you
>
>Leandro
>
>_______________________________________________
>Asterisk-Dev mailing list
>Asterisk-Dev at lists.digium.com
>http://lists.digium.com/mailman/listinfo/asterisk-dev
>To UNSUBSCRIBE or update options visit:
>   http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>  
>




More information about the asterisk-dev mailing list