Remove sox dependency by handling wav conversion directly - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit d997b94f7515ada2a46c18eb3247edb9facf51fc
(DIR) parent 8b9384948db26895e2737f227c906c39d285edc9
(HTM) Author: HD Moore <hd_moore@rapid7.com>
Date: Sat, 6 Aug 2011 17:03:13 +0000
Remove sox dependency by handling wav conversion directly
Diffstat:
M bin/verify_install.rb | 14 --------------
M etc/warvox.conf | 1 -
M lib/warvox/audio/raw.rb | 17 +++++++++++++++++
M lib/warvox/jobs/analysis.rb | 6 ++++--
4 files changed, 21 insertions(+), 17 deletions(-)
---
(DIR) diff --git a/bin/verify_install.rb b/bin/verify_install.rb
@@ -49,20 +49,6 @@ rescue ::LoadError
exit
end
-sox_path = WarVOX::Config.tool_path('sox')
-if(not sox_path)
- puts "[*] ERROR: The 'sox' binary could not be found"
- exit
-end
-
-sox_data = `#{sox_path} --help 2>&1`
-if(sox_data !~ /raw/)
- puts "[*] ERROR: The 'sox' binary does not have support for RAW audio"
- exit
-end
-puts "[*] The SOX binary appears to be available with RAW file support"
-
-
if(not WarVOX::Config.tool_path('gnuplot'))
puts "[*] ERROR: The 'gnuplot' binary could not be installed"
exit
(DIR) diff --git a/etc/warvox.conf b/etc/warvox.conf
@@ -22,7 +22,6 @@ data_path: "%BASE%/data/"
#
tools:
gnuplot: gnuplot
- sox: sox
lame: lame
iaxrecord: "%BASE%/bin/iaxrecord.rb"
dtmf2num: "%BASE%/bin/dtmf2num"
(DIR) diff --git a/lib/warvox/audio/raw.rb b/lib/warvox/audio/raw.rb
@@ -54,6 +54,23 @@ class Raw
(s > 0x7fff) ? (0x10000 - s) * -1 : s
end
end
+
+ def to_raw
+ self.samples.pack("v*")
+ end
+
+ def to_wav
+ raw = self.to_raw
+ wav =
+ "RIFF" +
+ [raw.length + 36].pack("V") +
+ "WAVE" +
+ "fmt " +
+ [16, 1, 1, 8000, 16000, 2, 16 ].pack("VvvVVvv") +
+ "data" +
+ [ raw.length ].pack("V") +
+ raw
+ end
def to_flow(opts={})
(DIR) diff --git a/lib/warvox/jobs/analysis.rb b/lib/warvox/jobs/analysis.rb
@@ -347,8 +347,10 @@ class Analysis < Base
tmp_wav = Tempfile.new("wav")
tmp_mp3 = Tempfile.new("mp3")
- # Generate a MP3 audio file
- system("#{WarVOX::Config.tool_path('sox')} -s -2 -r 8000 -t raw -c 1 #{rawfile.path} -t wav #{tmp_wav.path}")
+ # Generate a WAV file from raw linear PCM
+ ::File.open(tmp_wav, "wb") do |fd|
+ fd.write(raw.to_wav)
+ end
# Default samples at 8k, bump it to 32k to get better quality
system("#{WarVOX::Config.tool_path('lame')} -b 32 #{tmp_wav.path} #{tmp_mp3.path} >/dev/null 2>&1")