Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to batch convert .sph files to .wav with sox

I have a directory with many folders containing hundreds of .SPH files. I need to convert all .SPH files into .wav format. I have adopted the following code:

cd %~dp0
mkdir converted
FOR %%A IN (%*) DO sox -t raw -s -2 -r 22050 -c 2 %%A "converted/%%~nA.wav"
pause

However, it doesn't do anything on Windows 7. When I try the code on CMD inside a folder where some of .SPH are:

sox *.SPH output.wav

It embeds all *.SPH into output.wav file, which is not what I want. I need name1.SPH to name1.wav, name2.SPH to name2.wav

Please help.

like image 267
Laura Avatar asked Sep 04 '13 18:09

Laura


2 Answers

For Linux consider this:

for f in *.SPH; do sox -t sph "$f" -b 16  -t wav "${f%.*}.wav"; done
like image 197
Kazi Nazmul Haque Shezan Avatar answered Oct 18 '22 16:10

Kazi Nazmul Haque Shezan


In Windows 7, I need to provide the entire path for the destination files, and the mdkir command got a permission error even though I was running as Administrator, so pre-make your destination directory and delete the mkdir command, and then your SOX command should look similar to this (with your own flags based on the conversion or edit you are trying to accomplish):

FOR %%A IN (%*) DO sox  -t raw -e mu-law -c 1 -r 8000 %%A c:\converted\%%~nA.wav

The cmd file should not be in the folder where the files are, it should be in the folder where SOX is installed, and then drag the files you want converted onto the cmd (or bat) file.

like image 3
user2855736 Avatar answered Oct 18 '22 16:10

user2855736