I want to record 10 seconds of audio from my microphone input with SoX. I haven’t found any example in the documentation or elsewhere that would show how to do it. Here’s my current command using timeout to stop the recording. Is there a better way to do it?

timeout 10 sox -b 32 -e unsigned-integer -r 96k -c 2 -d --clobber --buffer $((96000*2*10)) /tmp/soxrecording.wav

1 Answer 1


A little late, but if anyone had the same question, you have to use the trim "effect" to record a set length of audio.

So to record 10 seconds of audio just append trim 0 10 at the end of your command, e.g.,

$ sox -b 32 -e unsigned-integer -r 96k -c 2 -d --clobber --buffer $((96000*2*10)) /tmp/soxrecording.wav trim 0 10

From the SoX man:

trim {position(+)}

Cuts portions out of the audio. Any number of positions may be given; audio is not sent to the output until the first position is reached. The effect then alternates between copying and discarding audio at each position. Using a value of 0 for the first position parameter allows copying from the beginning of the audio.

  • 2
    better late than never :)
    – shrx
    Apr 19, 2016 at 20:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.