voxforge.org
VoxForge Dev
Show
Ignore:
Timestamp:
05/15/08 10:44:44 (8 months ago)
Author:
kmaclean
Message:

AudioSegmentation script - alpha release

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Trunk/Scripts/Audio_scripts/AudioSegmentation/AudioBook/Audio.pm

    r2585 r2586  
    3838### Class Variables 
    3939#################################################################### 
    40 my $average_sentence_length = 13; 
    41 my $max_sentence_length = 18; 
    42 #my $min_pause_for_sentence_break = 200000; # HTK time format - 100 millisecond increments 
    43 my $min_pause_for_sentence_break = 5000000; 
     40#my $average_sentence_length = 13; 
     41#my $max_sentence_length = 18; 
     42#my $min_pause_for_sentence_break = 5000000; # HTK time format - 100 millisecond increments 
    4443my (@max_sentences, $max_sentence_length_found, $max_sentence_length_linenumber, $min_sentence_length_linenumber); 
    45 my $min_sentence_length_found = $max_sentence_length; 
     44#my $min_sentence_length_found = $max_sentence_length; 
     45my $min_sentence_length_found; 
    4646my $up_increment = 1; 
    4747my $down_increment = -1; 
    48 my ($command)
     48my $command
    4949#################################################################### 
    5050### Constructor 
     
    5757        $self{'htk_files'} = $super->{'htk_files'}; 
    5858        $self{'g2p_model'} = $super->{'g2p_model'}; 
    59  
     59        $self{"average_sentence_length"} = $super->{"average_sentence_length"}; 
     60        $self{"max_sentence_length"} = $super->{"max_sentence_length"}; 
     61        $min_sentence_length_found = $super->{"max_sentence_length"}; 
     62        $self{"min_pause_for_sentence_break"} = $super->{"min_pause_for_sentence_break"}; 
     63        $self{'log'} = $super->{'log'};  
    6064        bless(\%self,$class); 
    6165        return \%self; 
     
    8791        $textContents->createMLFFile("downsampled","AudioBook/interim_files/words.mlf" ); 
    8892        # forced alignment - creates aligned.out 
    89 #!!!!!! $command = ("cd AudioBook/interim_files && HVite -A -D -T 1 -l '*'  -a -b SENT-END -m -C wav_config -H macros -H hmmdefs -m -t 250.0 150.0 1000.0 -I words.mlf  -i aligned.out -S train.scp dict tiedlist"); system($command) == 0 or confess "error: $command failed: $?"; 
    90         $command = ("pwd && HVite -A -D -T 1 -l '*' -a -b SENT-END -m -C $htk_files/wav_config -H $htk_files/models/macros -H $htk_files/models/hmmdefs -m -t 250.0 150.0 1000.0 -I AudioBook/interim_files/words.mlf  -i AudioBook/interim_files/aligned.out -S $htk_files/train.scp AudioBook/interim_files/dict $htk_files/models/tiedlist"); system($command) == 0 or confess "error: $command failed: $?"; 
    91  
     93        $command = ("pwd && HVite -A -D -T 1 -l '*' -a -b SENT-END -m -C $htk_files/wav_config -H $htk_files/models/macros -H $htk_files/models/hmmdefs -m -t 250.0 150.0 1000.0 -I AudioBook/interim_files/words.mlf  -i AudioBook/interim_files/aligned.out -S $htk_files/train.scp AudioBook/interim_files/dict $htk_files/models/tiedlist > AudioBook/interim_files/logs/HVite_log"); system($command) == 0 or confess "error: $command failed: $?"; 
     94        open (HVite_Log,"AudioBook/interim_files/logs/HVite_log") || confess "error: can't open AudioBook/interim_files/HVite_log: $?"; 
     95        while (my $line = <HVite_Log>) { 
     96                chomp $line; 
     97                my $filename; 
     98                if ($line =~ /Aligning File:/) {  
     99                        my @line=split(/:/, $line); 
     100                        $filename = pop(@line); 
     101                } elsif ($line =~ /No tokens survived to final node of network at beam/) { 
     102                        my @line=split(/ /, $line); 
     103                        my $beam = pop (@line); 
     104                        $beam =~ s/ //g; 
     105                        print "\n\n******************************************************************\n"; 
     106                        print "**** check that audio corresponds to prompt in file ***\n"; 
     107                        print "******************************************************************\n\n"; 
     108                        if ($beam > 250) { 
     109                                confess "audio not corresponding to prompt file, check HVite_Log; error code: $?" ; 
     110                        }        
     111                }  
     112        } 
    92113} 
    93114 
     
    135156        my ($self,$filename,$textContents) = @_;         
    136157        my $debug = $self->{"debug"};            
    137  
     158        my $log = $self->{"log"}; 
     159         
    138160        my $filename_nopath = basename($filename); 
    139161        my $filename_nosuffix = fileparse($filename, "wav"); 
     
    144166        $self->{"filename_prefix"} = lc(substr($filename_nopath,0,3)); 
    145167        $self->{"textContents"} = $textContents; 
     168         
     169        my $average_sentence_length = $self->{"average_sentence_length"}; 
     170        my $max_sentence_length = $self->{"max_sentence_length"}; 
     171        my $min_pause_for_sentence_break = $self->{"min_pause_for_sentence_break"}; 
    146172 
    147173        my $samplerate = _getSampleRate($self); 
     
    200226         
    201227        $command = ("rm AudioBook/interim_files/temp.wav"); print "cmd:$command\n" if $debug; system($command); 
    202          
    203         print "### segment summary: #######################################################\n"; 
    204         print "\nSettings:average_sentence_length->$average_sentence_length;max_sentence_length->$max_sentence_length\n"; 
    205         print   "         pause length:$min_pause_for_sentence_break (" . $min_pause_for_sentence_break/10000000 . " seconds)\n";         
    206         print "\nSentence Length: min:$min_sentence_length_linenumber->$min_sentence_length_found; max:$max_sentence_length_linenumber->$max_sentence_length_found\n"; 
    207         print "\nSentences over max_sentence_length of $max_sentence_length words:\n"; 
    208         foreach my $line (@max_sentences) { 
    209                 print "\t$line\n"; 
    210         }        
    211         print "\n###########################################################################\n"; 
     228 
     229        open(LOG,">>$log") or confess ("cannot open $log file");         
     230        print LOG "\nAudio Segmenting summary:\n"; 
     231        print LOG   "-------------------------\n";       
     232        print LOG "Settings:average_sentence_length: $average_sentence_length\n"; 
     233        print LOG "         max_sentence_length: $max_sentence_length\n";         
     234        print LOG "         pause length: $min_pause_for_sentence_break (" . $min_pause_for_sentence_break/10000000 . " seconds)\n\n";    
     235        print LOG "Sentence Length: min:$min_sentence_length_linenumber: $min_sentence_length_found\n"; 
     236        print LOG "                 max:$max_sentence_length_linenumber: $max_sentence_length_found\n\n"; 
     237        print LOG "Prompt lines with more than max_sentence_length of $max_sentence_length words:\n"; 
     238        if (@max_sentences) { 
     239                foreach my $line (@max_sentences) { 
     240                        print LOG "\t$line\n"; 
     241                }        
     242        } else { 
     243                print LOG "\tnone\n"; 
     244        } 
    212245} 
    213246 
     
    216249        my $debug = $self->{"debug"};    
    217250        my $filename_prefix = $self->{"filename_prefix"}; 
     251        my $average_sentence_length = $self->{"average_sentence_length"}; 
     252        #my $max_sentence_length = $self->{"max_sentence_length"}; 
     253        my $min_pause_for_sentence_break = $self->{"min_pause_for_sentence_break"}; 
    218254         
    219255        my @aligned_line = split(/\s/,$$aligned_words[$$sentence_end + $increment]); 
     
    277313        my ($self,$sentence_start,$sentence_end,$increment,$filename_prefix,$padded_fileid ) = @_; 
    278314        my $debug = $self->{"debug"};    
     315        #my $average_sentence_length = $self->{"average_sentence_length"}; 
     316        my $max_sentence_length = $self->{"max_sentence_length"}; 
     317        #my $min_pause_for_sentence_break = $self->{"min_pause_for_sentence_break"}; 
    279318         
    280319        if ($debug) {