轉換wav爲採樣率16000的wav

記錄一個腳本,功能使用過sox來批量轉換wav爲採樣率16000的wav,更復雜的轉換能夠經過ffmpeg來進行轉換,固然sox也提供了不少的轉換,詳細的能夠查閱他的documentshell

http://sox.sourceforge.net/Docs/Documentation數組

#/bin/bash
export arrayindex
export array
function  scandir() {
	local cur_dir parent_dir workdir
	workdir=$1
	cd $workdir
	if test $workdir = "/" 
	then
		cur_dir=""
	else
		cur_dir=$(pwd)
	fi
	for dirlist in $(ls $cur_dir)
	do
		if test -d $dirlist;then
			cd $dirlist
			scandir $cur_dir/$dirlist
			cd ..
		else
			# echo ${cur_dir}/${dirlist}
			#shell 數組賦值
			array[$arrayindex]=$cur_dir/$dirlist
			#注意shell索引的遞增方式
			((arrayindex++))
		fi
	done
}
function GetALLDirInfo()
	{
		local dir
		dir=$1
		arrayindex=0
		if test -d $dir
		then
			scandir $dir
		elif test -f $dir
		then
			echo "you input a file not a directory"
			exit 1
		else
			echo "the dir you input $dir is not exit"
		fi
	}
read -p "please input the paths needed transform(file or dir):" LOCATION
echo "path is:$LOCATION"
read -p "please input the dir which you need to save the transform file :" SAVE_DIR
echo "path is:$SAVE_DIR"
if [ ! -d $SAVE_DIR ]
then 
	mkdir $SAVE_DIR
fi
if [[ -d $LOCATION ]]
then
    GetALLDirInfo $LOCATION
	for content in ${array[@]}
	do
		file_name=${content##*/}
		echo $file_name
		length=${#file_name}
		out_name=${file_name:0:length-4}
		echo $out_name
		echo $SAVE_DIR"/"$out_name"_16000.wav"
		sox  $content -r 16000   $SAVE_DIR"/"$out_name"_16000.wav"
		done
else
		file_name=${LOCATION##*/}
		echo $file_name
		length=${#file_name}
		out_name=${file_name:0:length-4}
		echo $out_name
		echo $SAVE_DIR"/"$out_name"_16000.wav"
		sox  $LOCATION -r 16000   $SAVE_DIR"/"$out_name"_16000.wav"
fi
echo "Transformation is completed!"
相關文章
相關標籤/搜索