#!/usr/bin/perl use strict; my %words; my $phrase; my $datafile = "data"; #read in the words-to-phonetics file open (DATA, $datafile) or die "Error opening $datafile: $!"; while () { chomp; my ($word, @pho) = split(/\t/); $words{$word} = \@pho; } close(DATA); #get the phrase to vocalize if (@ARGV) { $phrase = join(' ', @ARGV); } else { print "Enter text: "; $phrase = ; } $phrase =~ tr/A-Z/a-z/; print "vocalizing...\n"; my $all = ""; foreach my $word (split(/\s/, $phrase)) { my $words; if (defined($words{$word})) { $words = $words{$word}; } else { print "$word not found in $datafile!\n"; next; } print "$word: ", join(" ", @$words); my $mp3string; my $notfound; foreach my $mp3 (@$words) { if (-e "$mp3.mp3") { $mp3string .= " $mp3.mp3"; } else { $notfound .= " $mp3"; } } print $notfound ? "\tnot found: $notfound\n" : "\n"; $all .= $mp3string." silence.mp3 silence.mp3"; `mpg123 -d2 -k1 $mp3string 2> /dev/null`; } #`mpg123 -w out.$$.wav -d2 -k1 $all 2> /dev/null`; print "...done.\n";