您的位置:首页 > 其它

HMMTree API

2015-06-22 15:48 274 查看
<span style="font-size:24px;">class HMMTree
以一个lex树的形式来表示词汇表。在树中的节点表示字(字节点)或单元(hmm节点)。Hmm节点也许会被共享。
本类的属性:
private final HMMPool hmmPool;hmm和单元池
private InitialWordNode initialNode;树的初始节点
private Dictionary dictionary;包含发音的字典
private LanguageModel lm;添加到此树的字的来源的语言模型。
private final boolean addFillerWords;是否添加填充字。
private final boolean addSilenceWord = true;
private final Set<Unit> entryPoints = new HashSet<Unit>();加入指针存储的是所有字的发音的第一个单元即开始单元。
private Set<Unit> exitPoints = new HashSet<Unit>();退出指针。存储的是所有字的所有发音的最后单元即结束单元。
private Set<Word> allWords;字集
private EntryPointTable entryPointTable;
private boolean debug;
private final float languageWeight;语言权重。
private final Map<Object, HMMNode[]> endNodeMap;
private WordNode sentenceEndWordNode;
private Logger logger;
本类的构造方法:
HMMTree(HMMPool pool, Dictionary dictionary, LanguageModel lm,boolean addFillerWords, float languageWeight);给定参数创建对象。
本类方法:
private Set<Word> getAllWords();返回的是所有子的集合,包括填充字。根据是否添加填充字和静音字来添加填充和静音字。
InitialWordNode getInitialNode();获得的初始节点。Hmm树。
private float getWordUnigramProbability(Word word);获得给定字的单元语法概率。输入:word为给定的字,返回的是此字的单元语法概率。此概率是通过语言模型来获得的。此字是训练后的语言模型中此字的概率来乘以语言权重后的积。
private void collectEntryAndExitUnits() ;为词汇表收集所有的进入指针和退出指针。把所有字的每个发音对应的开始单元和结束单元即最后那个单元加入到(开始单元)进入指针和退出指针中。
private void freeze();此方法lex树被创建后调用,释放所有短时性的结构。此方法被调用后,就不能在把字添加入lex树中。本方法会对进入指针表中的进入指针进行freeze处理。
void dumpTree();打印此hmm树。
private void dumpTree(int level, Node node, Map<Node, Node> dupNode);输入参数:level为打印的层次。Node要打印的树的开始节点,即从此节点开始打印。dupNode用于已经打印的所有节点。打印树。
private float getWordUnigramProbability(Word word);获得给定字的单元语法概率。返回的是给定字的概率。是通过语言模型获得的。此输入的字必须非填充字才行,否则返回的填充字的概率为1即LogMath.getLogOne().
private void addPronunciation(Pronunciation pronunciation,float probability);添加给定的发音到lex树中。输入pronunciation为字的一个发音。Probability为发音所表示的字的单元语法的概率即字的发生概率。本方法构成的网络为:当前节点即第一字的节点,到hmm节点,hmm节点,直到最后一个单元的是end节点,即endnode,最后为字节点。即一个发音的连接网络为:发音的第一个单元开始单元节点,中间的都是hmm节点,发音的最后节点为end节点,在最后要添加的是一个字的发音节点。如果是此发音是单独发音字,则在进入节点中的单独发音字中添加此发音,不建立连续的网络。与flathmm中的节点网络是相反的。
private void addWord(Word word);添加一个单独的字到lex树。本方法会对字的每个发音进行扩展从网络。发音之间是并列的关系。发音类别是串联的关系网络。
private void addWords();把所有的字都添加到lex 树中。对所有的字对扩展从hmm连接网络。即对所有的字都进行扩展。会扩展到声学的hmm模型。
public WordNode getSentenceEndWordNode();返回的是与此句结束字相关的字节点。
public HMMNode[] getHMMNodes(EndNode endNode);获得与给定输入的end节点相关的hmm节点集。返回的是hmm节点集的数组。

public Node[] getEntryPoint(Unit lc, Unit base);给定一个基本单元和一个左场景,返回的是lex 树的进入节点集。

private void compile();把词汇表编辑入hmm树中。此方法会建立一个hmm树。</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sphinx 语音识别