#!/usr/bin/perl if((@ARGV != 1) && (@ARGV != 0)) { print ("\nUsage: create_vocals [-clean]\n"); print ("\nMP3_ROOT must be set before running" . " the script\n\n"); exit(1); } if((@ARGV == 1) && !($ARGV[0] eq '-clean')) { print ("\nIf you supply one argument it must be" . " '-clean'\n"); exit(1); } $mp3root = $ENV{'MP3_ROOT'}; if(!(-d $mp3root)){ print ("\nMP3_ROOT not present!!\n"); exit(1); } print ("MP3_ROOT is $mp3root\n"); $vocals = $mp3root . '/.vocals'; if(-d $vocals){ if(@ARGV == 1){ print ("Cleaning up the .vocals directory\n"); chdir( $vocals); system ("rm -f *"); exit(0); } else { print ("\nThe .vocals directory is already in" . " $mp3root\n"); print "We will update the files as appropriate\n"; } } else { print ("\n.vocals is not there, so we will " . "create it.\n"); mkdir( $vocals, 0777); } &recursively_list_files($mp3root); exit(0); sub recursively_list_files { local($dir) = @_; local($prevdir); local($directory); local($file); local(@directories); local(@files); opendir (DIR, $dir) || die ( "\nCannot open a directory in the tree\n\n"); $prevdir = $dir; chdir $dir || die ( "\nCannot find a directory in the tree\n\n"); @directories = grep(!/^\./ , grep (-d ,<\n> readdir(DIR))); rewinddir(DIR); closedir(DIR); foreach $directory (@directories) { $file_to_open = $vocals . "/" . $directory . ".txt"; if(!(-e $file_to_open)){ open(OUR_FILE, ">$file_to_open"); $our_changed_directory = $directory; $our_changed_directory =~ s/[^a-zA-Z]/ /g; print OUR_FILE "$our_changed_directory"; close( OUR_FILE); } $output_file = $vocals . "/" . $directory; if(!(-e $output_file)){ system("/usr/lib/festival/examples/text2wave -o $output_file -otype ulaw $file_to_open"); } &recursively_list_files($prevdir . "/" . $directory); } }