[Freeswitch-users] Best practices for determining if originated call is answered by human or voicemail system?

Piotr Gregor peterg at sytelco.com
Thu Feb 4 22:42:36 MSK 2016


Hi,
"I looked at the AVMD module documentation at
https://freeswitch.org/confluence/display/FREESWITCH/mod_avmd , and it
seems to indicate that this simply detects a beep, i.e. it does not use
talking / silence heuristics into account to determine if the call is
answered by a human or machine.
Am I correct about that? "

Yes. The AVMD module works by calculating the estimate of the frequency and
amplitude of signal using DESA-2 algorithm. It fires amd::beep event when
the variance for the frequency estimate is below the threshold.
The event is of form:

Event-Subclass: avmd%3A%3Abeep
Event-Name: CUSTOM
Core-UUID: 36a5b214-8d83-487e-8f8b-50af9a090486
FreeSWITCH-Hostname: home
FreeSWITCH-Switchname: home
FreeSWITCH-IPv4: 128.11.35.8
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2016-02-04%2016%3A56%3A55
Event-Date-GMT: Thu,%2004%20Feb%202016%2016%3A56%3A55%20GMT
Event-Date-Timestamp: 1454605015915799
Event-Calling-File: mod_avmd.c
Event-Calling-Function: avmd_process
Event-Calling-Line-Number: 556
Event-Sequence: 950
Beep-Status: stop
Unique-ID: 0a6f6df3-cc48-4b8a-93f3-b35ee1b8ef0a
call-command: avmd

The AVMD doesn't take into consideration segments of speech and segments of
silence. It simply calculates it's estimate of frequency and amplitude.


"How is this intended to be used, do I assume that the call is answered by
a human until this module sends a avmd%3A%3Abeep event to me?  How do
others use this module or other techniques to determine human / machine
answer to outbound calls with Freeswitch? "

It's use is to detect beep only.
You can test how it works by creating extension that will play a tone of
given frequency, e.g:
    <extension name="10014">
      <condition field="destination_number" expression="^10014$">
        <action application="playback"
data="tone_stream://L=3;%(500,6850,850)" />
        <action application="hangup"/>
      </condition>
    </extension>
This plays tone of 500Hz frequency and 6850 ms long, then silence by 850 ms.

Start avmd on the call with fs_cli:
avmd 8c6a6bb1-ec64-4b2c-9e48-93a6a2598b64 start

and inspect events by regestering to avmd events with:
events plain CUSTOM avmd::beep

Analysing the audio for a presence of the tone is not enough for answering
machine detection. You should also analyse at least the length of
speech/silence segments. You can do this by subscription to TALK/NOTALK
events.
Hope this helps.

cheers,
Piotr

On 4 February 2016 at 17:50, Piotr Gregor <peterg at sytelco.com> wrote:

> Hi,
> "I looked at the AVMD module documentation at
> https://freeswitch.org/confluence/display/FREESWITCH/mod_avmd , and it
> seems to indicate that this simply detects a beep, i.e. it does not use
> talking / silence heuristics into account to determine if the call is
> answered by a human or machine.
> Am I correct about that? "
>
> Yes. The AVMD module works by calculating the estimate of the frequency
> using DESA-2 algorithm. It fires amd::beep event when the variance for that
> estimate is below threshold.
> The event is of form:
>
> Event-Subclass: avmd%3A%3Abeep
> Event-Name: CUSTOM
> Core-UUID: 36a5b214-8d83-487e-8f8b-50af9a090486
> FreeSWITCH-Hostname: home
> FreeSWITCH-Switchname: home
> FreeSWITCH-IPv4: 128.11.35.8
> FreeSWITCH-IPv6: %3A%3A1
> Event-Date-Local: 2016-02-04%2016%3A56%3A55
> Event-Date-GMT: Thu,%2004%20Feb%202016%2016%3A56%3A55%20GMT
> Event-Date-Timestamp: 1454605015915799
> Event-Calling-File: mod_avmd.c
> Event-Calling-Function: avmd_process
> Event-Calling-Line-Number: 556
> Event-Sequence: 950
> Beep-Status: stop
> Unique-ID: 0a6f6df3-cc48-4b8a-93f3-b35ee1b8ef0a
> call-command: avmd
>
> The AVMD doesn't take into consideration TALK/NOTALK events.
>
>
> "How is this intended to be used, do I assume that the call is answered
> by a human until this module sends a avmd%3A%3Abeep event to me?  How do
> others use this module or other techniques to determine human / machine
> answer to outbound calls with Freeswitch? "
>
> You can test how it works by creating extension that will play a tone of
> given frequency, e.g:
>     <extension name="10014">
>       <condition field="destination_number" expression="^10014$">
>         <action application="playback"
> data="tone_stream://L=3;%(500,6850,850)" />
>         <action application="hangup"/>
>       </condition>
>     </extension>
> This plays tone of 500Hz frequency and 6850 ms long, then silence by 850
> ms.
>
> Start avmd on the call with fs_cli:
> avmd 8c6a6bb1-ec64-4b2c-9e48-93a6a2598b64 start
>
> and inspect events by regestering to avmd events with:
> events plain CUSTOM avmd::beep
>
> Analysing the audio for a presence of the tone is not enough for answering
> machine detection. You should also analyse at least the length of
> speech/silence segments.
> Hope this helps.
>
> cheers,
> Piotr
>
>
>
>
>
>
>
> On 3 February 2016 at 19:50, Christopher Rienzo <cmrienzo at gmail.com>
> wrote:
>
>> I wouldn't use beep detection in a dialer application, but it could be
>> useful in something like follow me to reduce the occurrence of voicemails
>> being left on subscriber phones.
>>
>> On Wed, Feb 3, 2016 at 2:28 PM, Bob Hartwig <bobjectsfreeswitch at gmail.com
>> > wrote:
>>
>>> I have a client that needs to reliably detect if their outbound calls
>>> are answered by a human or voicemail system, so that they can take
>>> different actions based on that determination.
>>>
>>> I looked at the AVMD module documentation at
>>> https://freeswitch.org/confluence/display/FREESWITCH/mod_avmd , and it
>>> seems to indicate that this simply detects a beep, i.e. it does not use
>>> talking / silence heuristics into account to determine if the call is
>>> answered by a human or machine.
>>>
>>> Am I correct about that?  How is this intended to be used, do I assume
>>> that the call is answered by a human until this module sends
>>> a avmd%3A%3Abeep event to me?  How do others use this module or other
>>> techniques to determine human / machine answer to outbound calls with
>>> Freeswitch?
>>>
>>> Thanks!
>>> Bob
>>>
>>>
>>>
>>> _________________________________________________________________________
>>> Professional FreeSWITCH Consulting Services:
>>> consulting at freeswitch.org
>>> http://www.freeswitchsolutions.com
>>>
>>> Official FreeSWITCH Sites
>>> http://www.freeswitch.org
>>> http://confluence.freeswitch.org
>>> http://www.cluecon.com
>>>
>>> FreeSWITCH-users mailing list
>>> FreeSWITCH-users at lists.freeswitch.org
>>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>>> http://www.freeswitch.org
>>>
>>
>>
>> _________________________________________________________________________
>> Professional FreeSWITCH Consulting Services:
>> consulting at freeswitch.org
>> http://www.freeswitchsolutions.com
>>
>> Official FreeSWITCH Sites
>> http://www.freeswitch.org
>> http://confluence.freeswitch.org
>> http://www.cluecon.com
>>
>> FreeSWITCH-users mailing list
>> FreeSWITCH-users at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
>> http://www.freeswitch.org
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20160204/adbd1967/attachment-0001.html 


Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list