# rename wav files by add prefix by "speaker" start_path=`pwd` for dirname in $(ls | grep "speaker") do #get first filename filename=$(ls $dirname | head -n 1) if [[ $filename =~ "speaker" ]]; then echo "files in $dirname have already renamed, passing..." else echo "now rename flies with prefix speakers" echo $dirname cd $dirname #in centos rename rename "00" $dirname"_00" "00"* # ubuntu using follows #rename "s/00/$dirname""_00/" 00* cd .. fi done
# devide file to train, cv and test cd $start_path rm -rf test train cv && mkdir test train cv
i=1 for dirname in $(ls | grep "speaker") do if [ $i -lt 9 ];then cp $dirname/* train else cp $dirname/* test fi let i=$i+1
done
function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) echo $(($num%$max+$min)) }
count=0 array=("0" "0" "0" "0") #ls -al train if [ needcv ]; then for file in $(ls train | grep "speak") do array[$count]=$file let count=$count+1 if [ $count -eq 4 ];then rnd=$(rand 0 3) mv train/${array[$rnd]} cv #echo ${array[$rnd]} let count=0 fi done echo "cv files prepared over, examples number is $(ls cv | wc -l)" fi echo "train files number is $(ls train | wc -l)" echo "test files number is $(ls test | wc -l)"
$ ls decode_dnn.config fbank.conf mfcc.conf $ more mfcc.conf --use-energy=false # only non-default option. --sample-frequency=8000 $ more decode_dnn.config beam=18.0 # beam for decoding. Was 13.0 in the scripts. lattice_beam=10.0 # this has most effect on size of the lattices. $ more fbank.conf --sample-frequency=8000 --num-mel-bins=40
# This file prepares files needed in kaldi # including text, wav.scp, utt2spk, spk2utt # output: # data/train dir include infomation of train data # data/test dir include infomation of test data # data/cv dir include infomation of cross validation data
run_dir=$1 dataset_dir=$2
cd $run_dir echo "prepare data in data/{train, test, cv}" mkdir -p data/{train,test,cv}
#create text, wav.scp, utt2spk, spk2utt ( i=0 for dir in train cv test; do echo "clean dir data/$dir" cd $run_dir/data/$dir rm -rf wav.scp utt2spk spk2utt word.txt text #phone.txt for data in $(find $dataset_dir/$dir/*.wav | sort -u | xargs -i basename {} .wav);do let i=$i+1 spkid=$(echo $data | awk -F"_" '{print "" $1}') uttid=$data echo $uttid $dataset_dir/$dir/$data.wav >> wav.scp echo $uttid $spkid >> utt2spk # gen word.txt echo $uttid $(cat $dataset_dir/utt2word.txt | grep $uttid | awk '{print "" $2}') >> word.txt # gen phone.txt TODO done cp word.txt text sort wav.scp -o wav.scp sort utt2spk -o utt2spk sort text -o text # sort phone.txt -o phone.txt done echo "all file number is $i" ) || exit 1