/root/date/agent1/voicefilename-in.alaw
/root/date/agent1/voicefilename-out.alaw
/root/date/agent2/voicefilename-in.alaw
/root/date/agent2/voicefilename-out.alaw
/root/date/agent4/voicefilename-in.wav
/root/date/agent4/voicefilename-out.wav
我使用下面的脚本将上面的类型文件转换为mp3。
它花了很多时间来完成转换,因为它一次只转换一个文件
有没有其他方法可以一次读取和转换多个文件
FILES=/root/*/*/*-in.*"
for f in $FILES
do
fileroot="${f%-in.*}"
if [ ${f##*.} == "alaw" ]
then
sox -t al "$f" -s -r 8000 -2 "$fileroot"-in.wav
sox -t al "$fileroot"-out.alaw -s -r 8000 -2 "$fileroot"-out.wav
sox -m "$fileroot"-in.wav "$fileroot"-out.wav "$fileroot".wav
lame -q0 -b8 "$fileroot".wav "$fileroot".mp3
rm "$f" "$fileroot"-out.alaw "$fileroot"-in.wav "$fileroot"-out.wav "$fileroot".wav
elif [ ${f##*.} == "wav" ]
then
sox -m "$f" "$fileroot"-out.wav "$fileroot".wav
lame -q0 -b8 "$fileroot".wav "$fileroot".mp3
rm "$f" "$fileroot"-out.wav "$fileroot".wav
fi
done
答案 0 :(得分:2)
使用 GNU parallel
转换 .alaw 文件,每个CPU核心使用一个进程,将每个输出文件写入当前目录,尝试类似:< / p>
parallel sox {} {/.}.mp3 ::: /root/date/agent1/*.alaw
然后,如果输出令人满意,并且不再需要源文件:
rm /root/date/agent1/*.alaw