In developing Sphinx-4 (our speech recognizer written in the Java 
programming language), we often are dealing with large graphs that define the
search space.  When debugging the system, we often will want to visualize these
large graphs to ensure that they are constructed properly.  

To do this we use a program called aiSee. 

AiSee is a software package for laying out and displaying graphs. AiSee has
a number of algorithms for laying out different styles of graphs.  There 
are a number of examples on their Gallery  page.

AiSee uses a little language called GDL The Graph Description Language . 

Here's a good example  
of GDL for a graph that looks like this:

We've instrumented Sphinx-4 to dump out upon request GDL for the important data
structures.  With this we can explore our large data structures using aiSee.  
Here are some examples.

Component Hierarchy

This plot shows the various high level components in a typical Sphinx-4 
configuration and how the components relate to each other:

JSGF Grammar Graph

This is a word graph that represents the simple JSGF Grammar:

public <basicCmd> = <startPolite> <command> <endPolite>;

<command> =  ;
<action> = /10/ open |/2/ close |/1/ delete |/1/ move;
<object> = [the | a] (window | file | menu);

<startPolite> = (please | kindly | could you | oh  mighty  computer) *;
<endPolite> = [ please | thanks | thank you ];

Search Graph Here's an example of a very small (isolated digits) search graph:

AiSee is not open source, but it is available for free for non-commercial use. 

It is an essential part of our toolkit for developing Sphinx-4.

How does this compare with GraphViz (

Posted by John D. Mitchell on June 11, 2004 at 10:33 AM EDT #

Post a Comment:
Comments are closed for this entry.

This blog copyright 2010 by plamere