Package edu.cmu.sphinx.result

Source Code of edu.cmu.sphinx.result.PosteriorTest

/*
* Copyright 1999-2004 Carnegie Mellon University.
* Portions Copyright 2004 Sun Microsystems, Inc.
* Portions Copyright 2004 Mitsubishi Electric Research Laboratories.
* All Rights Reserved.  Use is subject to license terms.
*
* See the file "license.terms" for information on usage and
* redistribution of this file, and for a DISCLAIMER OF ALL
* WARRANTIES.
*
*/

package edu.cmu.sphinx.result;

import org.testng.Assert;
import org.testng.annotations.Test;

import edu.cmu.sphinx.result.Lattice;
import edu.cmu.sphinx.result.Node;
import edu.cmu.sphinx.util.LogMath;

/**
* Tests the posterior score computation code. Sets up a simple lattice, and
* dumps out the posterior probabilities of each node.
*/
public class PosteriorTest {

  @Test
  public void testPosterior() {

      LogMath logMath = LogMath.getLogMath();
     
    Lattice lattice = new Lattice();

    Node a = lattice.addNode("A", "A", 0, 0);
    Node b = lattice.addNode("B", "B", 0, 0);
    Node c = lattice.addNode("C", "C", 0, 0);
    Node d = lattice.addNode("D", "D", 0, 0);

    double acousticAB = 4;
    double acousticAC = 6;
    double acousticCB = 1;
    double acousticBD = 5;
    double acousticCD = 2;

    lattice.setInitialNode(a);
    lattice.setTerminalNode(d);

    lattice.addEdge(a, b, logMath.linearToLog(acousticAB), 0);
    lattice.addEdge(a, c, logMath.linearToLog(acousticAC), 0);
    lattice.addEdge(c, b, logMath.linearToLog(acousticCB), 0);
    lattice.addEdge(b, d, logMath.linearToLog(acousticBD), 0);
    lattice.addEdge(c, d, logMath.linearToLog(acousticCD), 0);

    lattice.computeNodePosteriors(1.0f);
    double pathABD = acousticAB * acousticBD;
    double pathACBD = acousticAC * acousticCB * acousticBD;
    double pathACD = acousticAC * acousticCD;
    double allPaths = pathABD + pathACBD + pathACD;

    double bPosterior = (pathABD + pathACBD) / allPaths;
    double cPosterior = (pathACBD + pathACD) / allPaths;

    double delta = 1e-4;
    Assert.assertEquals (logMath.logToLinear((float) a.getPosterior()), 1.0, delta);
    Assert.assertEquals (logMath.logToLinear((float) b.getPosterior()), bPosterior, delta);
    Assert.assertEquals (logMath.logToLinear((float) c.getPosterior()), cPosterior, delta);
    Assert.assertEquals (logMath.logToLinear((float) d.getPosterior()), 1.0, delta);
  }
}
TOP

Related Classes of edu.cmu.sphinx.result.PosteriorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.