Descargo de responsabilidad: Este es un enfoque orientado a Unix (aunque sox es multiplataforma y también debería hacerlo en Windows).
Tendrá sox - "el cuchillo [multiplataforma] Suizo de los programas de procesamiento de sonido".
Este script envoltorio perl, le ayuda a generar ningún segundos de silencio: http://www.boutell.com/scripts/silence.html
$ perl silence.pl 3 silence.wav
silence.pl
es bastante corto, por lo que incluimos aquí, ya que es el ámbito público:
#!/usr/bin/perl
$seconds = $ARGV[0];
$file = $ARGV[1];
if ((!$seconds) || ($file eq "")) {
die "Usage: silence seconds newfilename.wav\n";
}
open(OUT, ">/tmp/$$.dat");
print OUT "; SampleRate 8000\n";
$samples = $seconds * 8000;
for ($i = 0; ($i < $samples); $i++) {
print OUT $i/8000, "\t0\n";
}
close(OUT);
# Note: I threw away some arguments, which appear in the original
# script, and which did not worked (on OS X at least)
system("sox /tmp/$$.dat -c 2 -r 44100 -e signed-integer $file");
unlink("/tmp/$$.dat");
Entonces solo lame
él:
$ lame silence.wav silence.mp3
En un mundo ideal, podría hacer esto directamente con ffmpeg y no necesitar usar otra biblioteca. – Stephen