Introduction
Introduction Statistics Contact Development Disclaimer Help
Bump the mp3 quality a bit, allow iaxrecord to work when there is no ring (aka …
Log
Files
Refs
README
---
commit 6b0626b2db5bb3e7bc048b961a32de39c56fe929
parent 39e637f7729852d500d1037f0b2d6071a3a1f36c
Author: HD Moore <[email protected]>
Date: Sun, 24 May 2009 19:12:32 +0000
Bump the mp3 quality a bit, allow iaxrecord to work when there is no ring (aka …
Diffstat:
A bin/warvox.agi | 24 ++++++++++++++++++++++++
M etc/sigs/99.default.rb | 25 +++++++++++++++++++++++++
M lib/warvox/jobs/analysis.rb | 5 ++++-
M src/iaxrecord/iaxrecord.c | 29 ++++++++++++++++++++++-------
4 files changed, 75 insertions(+), 8 deletions(-)
---
diff --git a/bin/warvox.agi b/bin/warvox.agi
@@ -0,0 +1,24 @@
+#!/usr/bin/env ruby
+
+#
+# This script can be used to redial an existing job through Asterix.
+# To use this script, add an entry to extensions.conf:
+#
+# exten => _777.,1,agi,warvox.agi|/warvox/data/20
+#
+
+base = ARGV.shift
+conf = {}
+while(line = $stdin.gets)
+ line = line.strip
+ break if line == ""
+ if(line =~ /^agi_([^:]+):\s(.*)/)
+ conf[$1] = $2
+ end
+end
+
+targ = conf['extension'].sub(/^777/, '')
+
+$stdout.puts "EXEC MP3Player #{File.join(base,"#{targ}.mp3")}"
+$stdout.flush
+$stdin.gets
diff --git a/etc/sigs/99.default.rb b/etc/sigs/99.default.rb
@@ -1,6 +1,31 @@
#
# WarVOX Fallback Signatures
#
+#
+
+#
+# Initialize some local variables out of data
+#
+freq = data[:freq]
+fcnt = data[:fcnt]
+maxf = data[:maxf]
+
+# Look for voice mail by detecting the 1000hz BEEP
+# If the call length was too short to catch the beep,
+# this signature can fail. For non-US numbers, the beep
+# is often a different frequency entirely.
+if(fcnt[1000] >= 1.0)
+ @line_type = 'voicemail'
+ break
+end
+
+# Look for voicemail by detecting a peak frequency of
+# 1000hz. Not as accurate, but thats why this is in
+# the fallback script.
+if(maxf > 995 and maxf < 1005)
+ @line_type = 'voicemail'
+ break
+end
#
# Fall back to 'voice' if nothing else has been matched
diff --git a/lib/warvox/jobs/analysis.rb b/lib/warvox/jobs/analysis.rb
@@ -294,7 +294,10 @@ class Analysis < Base
# Generate a MP3 audio file
system("sox -s -2 -r 8000 -t raw -c 1 #{rawfile.path} #{bname}…
- system("lame #{bname}.wav #{bname}.mp3 >/dev/null 2>&1")
+
+ # Default samples at 8k, bump it to 32k to get better quality
+ system("lame -b 32 #{bname}.wav #{bname}.mp3 >/dev/null 2>&1")
+
File.unlink("#{bname}.wav")
File.unlink(rawfile.path)
rawfile.close
diff --git a/src/iaxrecord/iaxrecord.c b/src/iaxrecord/iaxrecord.c
@@ -29,6 +29,7 @@ int audio = 0;
int busy = 0;
int fail = 1;
int done = 0;
+int ansd = 0;
float silence_threshold = 0.0f;
int call_state = 0;
@@ -52,6 +53,7 @@ void usage(char **argv) {
int state_event_callback(struct iaxc_ev_call_state call) {
if(call.state & IAXC_CALL_STATE_BUSY) busy = 1;
if(call.state & IAXC_CALL_STATE_COMPLETE) fail = 0;
+
call_state = call.state;
/*
if(debug) {
@@ -88,13 +90,24 @@ int state_event_callback(struct iaxc_ev_call_state call) {
}
int audio_event_callback( struct iaxc_ev_audio audio) {
- if(call_state & IAXC_CALL_STATE_COMPLETE) {
- if(call_trace == -1) call_trace = open(iax_out, O_CREAT|O_TRUN…
- if(call_trace != -1) {
- if(debug) printf("audio data: format=%d encoded=%d siz…
- write(call_trace, audio.data, audio.size);
- call_bytes += audio.size;
- }
+
+ /* We have been recording rings, dump the file and reopen */
+ if(call_trace != -1 && !fail && !ansd) {
+ close(call_trace);
+ unlink(iax_out);
+ call_trace = -1;
+ call_bytes = 0;
+ ansd = 1;
+ }
+
+ if(call_trace == -1) {
+ call_trace = open(iax_out, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S…
+ }
+
+ if(call_trace != -1){
+ if(debug) printf("audio data: format=%d encoded=%d size=%d sta…
+ write(call_trace, audio.data, audio.size);
+ call_bytes += audio.size;
}
return 0;
}
@@ -251,6 +264,8 @@ int main(int argc, char **argv) {
if(! etime) time(&etime);
+ if(call_bytes > 0 && fail == 1) fail = 0;
+
fprintf(stdout, "COMPLETED %s BYTES=%d FILE=%s FAIL=%d BUSY=%d RINGTIM…
iax_num,
call_bytes,
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.