camenduru's picture
pocketsphinx-20.04
37a92a9
#!/usr/bin/env perl
use strict;
my $nstates;
while (<>) {
chomp;
s/#.*$//;
next if /^$/;
if (/FSG_BEGIN (\S+)/) {
print "digraph $1 {\n\trankdir=LR;\n\t";
}
elsif (/NUM_STATES (\d+)/) {
$nstates = $1;
}
elsif (/START_STATE (\d+)/) {
}
elsif (/FINAL_STATE (\d+)/) {
my $end = $1;
print "\tnode [shape=circle];";
for (my $i = 0; $i < $nstates; ++$i) {
print " $i" unless $i == $end;
}
print ";\n\tnode [shape=doublecircle]; $end;\n\n";
}
elsif (/TRANSITION/) {
my (undef, $from, $to, $weight, $word) = split;
my $label;
if ($weight != 1.0 and defined($word)) {
$label = sprintf "%s/%.2f", $word, $weight;
}
elsif ($weight != 1.0) {
$label = sprintf "%.2f", $weight;
}
elsif ($word) {
$label = $word;
}
print "\t$from -> $to [label=\"$label\"];\n";
}
}
print "}\n";