提交 a15dcbe3 authored 作者: Mike Jerris's avatar Mike Jerris

Merge pull request #973 in FS/freeswitch from…

Merge pull request #973 in FS/freeswitch from ~PIOTRGREGOR/freeswitch:feature/FS-9564-add-lagged-detectors to master

* commit 'b44b6e5b':
  FS-9564 [avmd]: add lagged detectors
......@@ -37,7 +37,7 @@
<!-- required number of consecutive elements in the SMA buffer
without reset. This parameter helps to avoid false beeps, bigger this value is
smaller the probability of getting false detection -->
<param name="sample_n_continuous_streak" value="5"/>
<param name="sample_n_continuous_streak" value="3"/>
<!-- define number of samples to skip starting from the beginning
of the frame and/or after reset has happened. This serves the purpose of skipping first few
......@@ -46,7 +46,7 @@
<param name="sample_n_to_skip" value="0"/>
<param name="require_continuous_streak_amp" value="1"/>
<param name="sample_n_continuous_streak_amp" value="5"/>
<param name="sample_n_continuous_streak_amp" value="3"/>
<!-- define/undefine this to enable/disable simplified estimation
of frequency based on approximation of sin(x) with (x)
......
......@@ -37,7 +37,7 @@
<!-- required number of consecutive elements in the SMA buffer
without reset. This parameter helps to avoid false beeps, bigger this value is
smaller the probability of getting false detection -->
<param name="sample_n_continuous_streak" value="5"/>
<param name="sample_n_continuous_streak" value="3"/>
<!-- define number of samples to skip starting from the beginning
of the frame and/or after reset has happened. This serves the purpose of skipping first few
......@@ -46,7 +46,7 @@
<param name="sample_n_to_skip" value="0"/>
<param name="require_continuous_streak_amp" value="1"/>
<param name="sample_n_continuous_streak_amp" value="5"/>
<param name="sample_n_continuous_streak_amp" value="3"/>
<!-- define/undefine this to enable/disable simplified estimation
of frequency based on approximation of sin(x) with (x)
......
......@@ -324,7 +324,7 @@
<extension name="618"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(618)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,2000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,1950)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -332,7 +332,7 @@
<extension name="619"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(619)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,1000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,200,500)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -340,7 +340,7 @@
<extension name="620"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(620)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=1"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,2000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,700)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -493,7 +493,7 @@
<extension name="718"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(718)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,2000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,1900,1950)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -501,7 +501,7 @@
<extension name="719"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(719)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,100,1000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,200,500)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -509,7 +509,7 @@
<extension name="720"><!-- this BEEP must be DETECETD in detection_mode 1 (FREQ), NOTDETECTED in detection_mode 0 (AMP) and 2 (BOTH) -->
<condition field="destination_number" expression="^(720)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,debug=0,detection_mode=2"/>
<action application="playback" data="tone_stream://L=1;%(1850,1000,1000,2000)" />
<action application="playback" data="tone_stream://L=1;%(1850,1000,500,700)" />
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
......@@ -780,3 +780,61 @@
<action application="hangup"/>
</condition>
</extension>
<extension name="840531400"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531400)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/2764944714-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531401"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531401)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/3054957758-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531402"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531402)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/5044810548-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531403"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531403)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/5852842171-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531404"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531404)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/5857330628-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531405"><!-- obscure voicemail pack 2 -->
<condition field="destination_number" expression="^(840531405)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/8702463704-18-15-bad.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
<extension name="840531051"><!-- fragment of "Save tonight" by Eagle-Eye Cherry covered by D-Lete-Funk-K -->
<condition field="destination_number" expression="^(840531051)$">
<action application="avmd_start" data="inbound_channel=1,outbound_channel=0,detection_mode=2,debug=0"/>
<action application="playback" data="voicemail/8000/save_tonight_8000.wav"/>
<action application="avmd_stop"/>
<action application="hangup"/>
</condition>
</extension>
#!/usr/bin/perl -w
#brief Call single voicemail available in default dialplan
# and print detection result to the console.
#brief Call single voicemail and print detection result to the console.
#author Piotr Gregor <piotrgregor@rsyncme.org>
#date 15 Sept 2016 02:44 PM
......@@ -74,7 +73,7 @@ sub test_once {
my $uuid = $con->api('create_uuid')->getBody();
my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
printf("Calling with uuid [%s] [%s]...\n", $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $time_hires);
printf("Calling with uuid [%s] [%s]...\n", $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)));
$con->bgapi(sprintf($originate_string, $uuid));
......
#!/usr/bin/perl -w
#brief Call (possibly) multiple voicemails
# and print detection result to the console.
#author Piotr Gregor <piotrgregor@rsyncme.org>
#date 15 Sept 2016 02:44 PM
use strict;
use warnings;
require ESL;
use POSIX;
use Time::HiRes;
my $host = "127.0.0.1";
my $port = "8021";
my $pass = "ClueCon";
my $extension_base = "sofia/internal/1000\@192.168.1.60";
my $playback = 'local_stream://moh';
my $context = 'default';
#Example:
#my $endpoint = "originate {originator_codec=PCMA,origination_uuid=%s}sofia/gateway/box_b/840534002 \&park()";
my $endpoint = "originate {originator_codec=PCMA,origination_uuid=%s}sofia/gateway/%s/%s \&park()";
my $gateway;
my $dest;
my $callerid;
my $thread_n;
my $idx = 0;
if ($#ARGV + 1 eq 4) {
$gateway = $ARGV[0];
$dest = $ARGV[1];
$callerid = $ARGV[2];
$thread_n = $ARGV[3];
print "Dialing [" .$thread_n ."] calls simultaneously to [" .$gateway ."][" .$dest ."] as [" .$callerid ."]\n";
} else {
die "Please specify gateway, destination number, caller id and number of calls to make\n";
}
my $con = new ESL::ESLconnection($host, $port, $pass);
if (!$con) {
die "Unable to establish connection to $host:$port\n";
}
if ($con->connected()) {
print "OK, Connected.\n";
} else {
die "Connection failure.\n";
}
while($con->connected() && ($idx < $thread_n)) {
call_once($dest, $callerid, $idx);
$idx++;
Time::HiRes::sleep(0.15); # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
}
print "Disconnected.\n\n";
sub call_once {
my ($dest, $callerid, $idx) = @_;
my $uuid =
my $originate_string =
'originate ' .
'{ignore_early_media=true,' .
'originator_codec=PCMA,' .
'origination_uuid=%s,' .
'originate_timeout=60,' .
'origination_caller_id_number=' . $callerid . ',' .
'origination_caller_id_name=' . $callerid . '}';
if(defined($endpoint)) {
$originate_string = '';
$originate_string .= $endpoint;
} else {
$originate_string .= 'loopback/' . $dest . '/' . $context;
$originate_string .= ' ' . '&playback(' . $playback . ')';
}
my $uuid = $con->api('create_uuid')->getBody();
my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
$con->bgapi(sprintf($originate_string, $uuid, $gateway, $dest));
$con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start');
}
#!/usr/bin/perl -w
#brief Test module avmd by calling all voicemails available
# in avmd test suite and print detection results to the console.
#brief Test module avmd by calling voicemails from avmd test suite
# and print detection results to the console.
#author Piotr Gregor <piotrgregor@rsyncme.org>
#details If you are testing serving voicemails from dialplan then avmd
# must be set to inbound mode, either globally (by avmd set inbound
# in fs_cli) or in dialplan settings (<action application="avmd_start"
# data="inbound_channel=1,outbound_channel=0").
# data="inbound_channel=1,outbound_channel=0") or dynamically per call.
#date 15 Sept 2016 03:00 PM
......@@ -114,6 +114,13 @@ my %numbers = (
840531212 => "DETECTED",
840531213 => "DETECTED",
840531214 => "DETECTED",
840531400 => "DETECTED", # obscure voicemails ATT pack
840531401 => "DETECTED",
840531402 => "DETECTED",
840531403 => "DETECTED",
840531404 => "DETECTED",
840531405 => "DETECTED",
840531051 => "NOTDETECTED", # fragment of "Save tonight" by Eagle-Eye Cherry covered by D-Lete-Funk-K
);
my $host = "127.0.0.1";
......@@ -162,7 +169,7 @@ $con->events("plain", "CHANNEL_HANGUP");
print "OK.\n\n";
printf("\nRunning [" .keys(%numbers) ."] tests.\n\n");
printf("outbound uuid | destination number | timestamp | expectation | test result\n\n");
printf("outbound uuid | destination number | timestamp | expectation | test result | freq | f-variance | amplitude | a-variance\n\n");
foreach $dest (sort keys %numbers) {
if (!$con->connected()) {
last;
......@@ -192,6 +199,11 @@ sub test_once {
my $uuid_in = "";
my $freq = "N/A";
my $freq_var = "N/A";
my $amp = "N/A";
my $amp_var = "N/A";
my $resolution = "N/A";
my $offset = "N/A";
my $idx = "N/A";
if(defined($endpoint)) {
$originate_string .= $endpoint;
......@@ -220,6 +232,11 @@ sub test_once {
if ($avmd_event_type eq 'avmd::beep') {
$freq = $e->getHeader("Frequency");
$freq_var = $e->getHeader("Frequency-variance");
$amp = $e->getHeader("Amplitude");
$amp_var = $e->getHeader("Amplitude-variance");
$resolution = $e->getHeader("Detector-resolution");
$offset = $e->getHeader("Detector-offset");
$idx = $e->getHeader("Detector-index");
}
$outcome = $e->getHeader("Beep-Status");
if ($outcome eq $expectation) {
......@@ -243,6 +260,6 @@ sub test_once {
}
}
}
printf("\t[%s]\t[%s]\t\t[%s]\t[%s]HZ\t[%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result, $freq, $freq_var);
printf("\t[%s]\t[%s]\t\t[%s]\t[%s]HZ\t[%s]\t[%s]\t[%s]\t[%s][%s][%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result, $freq, $freq_var, $amp, $amp_var, $resolution, $offset, $idx);
Time::HiRes::sleep(0.5); # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论