On Thu, 7 Oct 2021 at 13:32, Jeremy Nicoll - ml sox users < jn.ml.sxu.88@wingsandbeaks.org.uk> 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%