Re: SoX not handling WAVE file as expected

Lee Jones <[email protected]> Thu, 7 Oct 2021 14:00:59 +0100
Newsgroups gmane.comp.audio.sox
Message-ID <CABVG=qdGdX=G2s2c-ekTqMEJtGNmEWJ-rRcAq-0eNc+ShWm2SA@mail.gmail.com>
On Thu, 7 Oct 2021 at 13:32, Jeremy Nicoll - ml sox users <
[email protected]> wrote:

> On 2021-10-06 07:50, Lee Jones wrote:
> > It's almost certainly my fault, but I'm perplexed as to how to fix it.
>
> I'm just guessing, but ...
>
> >> # Trimming all silence to 2 seconds
> >> ljkenny:~$ sox -V manchester_app_test.wav
> >> manchester_app_test-trimmed.wav silence -l 1 0.1 1% -1 2.0 1%
>
> That effect: silence -l 1 0.1 1% -1 2.0 1%
>
> has parameters  -l   then 1 0.1 1%  then others.   According to the
> manual:
>
>     1   0.1  1%
>     ^                  1 means trim audio from the start of the file
> until
>                              it first finds non-silence
>
>         ^^^            0.1 means the length of time that non-silence must
> be
>                              detected for
>
>              ^^        1% means the level sound must have to be treated
> as
>                              non-silence
>
> You possibly thought that the "0.1" meant 0.1 seconds.  It doesn't.  It
> means 0.1 samples which seems to me to be meaningless and might cause
> sox to think that non-silence is never detected.  In that situation I'd
> suspect that sox would then "trim" away ALL the contents.
>

Thanks for your reply Jeremy.

I took that command from Example 6 here:
https://digitalcardboard.com/blog/2009/08/25/the-sox-of-silence/

In the opening paragraphs, it seems to suggest that if you use a decimal
value then SoX treats the value as seconds instead of samples.

Which seems to be backed-up by the man page:

       [[hours:]minutes:]seconds[.frac][t]
              A  specification  of `1:30.5' corresponds to one minute,
thirty and ½ seconds.  The t suffix is entirely op‐
              tional (however, see the silence effect for an exception).
Note that the component values do not have to be
              normalized;  e.g., `1:23:45', `83:45', `79:0285', `1:0:1425',
`1::1425' and `5025' all are legal and equiva‐
              lent to each other.

       sampless
              Specifies the number of samples directly, as in `8000s'.  For
large sample counts, e notation is  supported:
              `1.7e6s' is the same as `1700000s'.

Ah, but there is a cavat later in the same man page:

duration  is  a time specification with the peculiarity that a bare number
is interpreted as a sample count,
not as a number of seconds.  For specifying seconds, either use the t
suffix (as in `2t')  or  specify  min‐
utes, too (as in `0:02').


I tried these commands, both resulted in the same outcome (full header, no
data):

sox -V --ignore-length in.wav out.wav silence -l 1 0.1t 1% -1 2.0 1%
sox -V --ignore-length in.wav out.wav silence -l 1 0:0.1 1% -1 2.0 1%

_______________________________________________
Sox-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sox-users