For me this will be useful in automated testing. I currently drive automated SIP calls via SIPCLI and ruby for a variety of tests at work. But how do I know I get the right end point? In the past, I'd have the phone number I dial, record voice mail and send me an email, and the sipcli client would send over text to speech audio.
But I dont always have the luxury of being able to configure the phone number to voice mail.
I've been wanting to do a packet capture during the test and convert it back to audio afterwards, then do a wav comparison on the expected audio vs. the captured audio.
Tools used:
tsharksox
These are both linux tools.
tshark is a command line version of wireshark. It's installed on centos boxes using yum install wireshark-gnome.
sox via yum install sox
Sox is a audio analysis tool that is run from the command line.
Test Script:
After looking at some examples online of different tools, I pieced this together from other people's examples, with a few modifications. It seems to work for me:Contents of pcap_to_wav.sh:
ssrc=$(sudo tshark -n -r
capture.pcap -R rtp -T fields -e rtp.ssrc -Eseparator=, | sort -u)
echo $ssrc
sudo tshark -n -r capture.pcap
-R rtp -R "rtp.ssrc == $ssrc" -T fields -e rtp.payload | tee payloads
for payload in `cat payloads`;
do IFS=:; for byte in $payload; do printf "\\x$byte"
>> sound.raw; done; done
echo 'sox has converted pcap to
wav file'
sudo sox -t raw -r 8000 -c 1 -U
sound.raw capture3d.wav
That's it!
basically if you have sudo access, you can run this and it will take the pcap and find the rdp packets, then make that a raw audio file... sox is then used to convert the raw file to a wav file.
At this point, you can further use sox to compare one wav to another wav.
No comments:
Post a Comment