mirror of
https://github.com/cmusphinx/pocketsphinx.git
synced 2026-05-17 12:20:35 +00:00
45 lines
856 B
Perl
Executable File
45 lines
856 B
Perl
Executable File
#!/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";
|