#!/usr/bin/perl use warnings; use strict; use Symbol 'gensym'; use IPC::Open3 qw(open3); $| = 1; # measure duration and rms # requires sox and libsox-fmt-all die unless $ARGV[0]; my $pid = open3(undef, undef, my $err = gensym(), "sox", $ARGV[0], "-n", "stats"); while (defined(my $line = <$err>)) { my @fields = split /\s+/, $line; if ($line =~ /^RMS lev dB/) { print "calcms_audio_recordings.rmsLeft = " . int($fields[3] + 0.5) . "\n"; print "calcms_audio_recordings.rmsRight = " . int($fields[4] + 0.5) . "\n"; } elsif ($line =~ /^Length\ss/) { print "calcms_audio_recordings.audioDuration = " . int($fields[2] + 0.5) . "\n"; } } waitpid($pid, 0); die if $?;