/* * Copyright 1999-2002 Carnegie Mellon University. * Portions Copyright 2002 Sun Microsystems, Inc. * Portions Copyright 2002 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.linguist.acoustic; import edu.cmu.sphinx.util.props.Configurable; import java.io.IOException; import java.util.Iterator; import java.util.Properties; import edu.cmu.sphinx.util.props.S4String; /** Represents the generic interface to the Acoustic Model for sphinx4 */ public interface AcousticModel extends Configurable { /** The directory where the acoustic model data can be found. */ @S4String(defaultValue = ".") public final static String PROP_LOCATION = "location"; /** * Gets this acoustic model ready to use, allocating all necessary resources. * * @throws IOException if the model could not be loaded */ public void allocate() throws IOException; /** Deallocates previously allocated resources */ public void deallocate(); /** * Returns the name of this AcousticModel, or null if it has no name. * * @return the name of this AcousticModel, or null if it has no name */ public String getName(); /** * Given a unit, returns the HMM that best matches the given unit. If exactMatch is false and an exact match is not * found, then different word positions are used. If any of the contexts are non-silence filler units. a silence * filler unit is tried instead. * * @param unit the unit of interest * @param position the position of the unit of interest * @param exactMatch if true, only an exact match is acceptable. * @return the HMM that best matches, or null if no match could be found. */ public HMM lookupNearestHMM(Unit unit, HMMPosition position, boolean exactMatch); /** * Returns an iterator that can be used to iterate through all the HMMs of the acoustic model * * @return an iterator that can be used to iterate through all HMMs in the model. The iterator returns objects of * type <code>HMM</code>. */ public Iterator<HMM> getHMMIterator(); /** * Returns an iterator that can be used to iterate through all the CI units in the acoustic model * * @return an iterator that can be used to iterate through all CI units. The iterator returns objects of type * <code>Unit</code> */ public Iterator<Unit> getContextIndependentUnitIterator(); /** * Returns the size of the left context for context dependent units * * @return the left context size */ public int getLeftContextSize(); /** * Returns the size of the right context for context dependent units * * @return the left context size */ public int getRightContextSize(); /** * Returns the properties of this acoustic model. * * @return the properties of this acoustic model */ public Properties getProperties(); }