天天看點

FlatLinguist API 語言專家

<span style="font-size:24px;">public class FlatLinguist implements Linguist, Configurable
搜尋空間一個網絡為發音,單元,聲學hmm網絡。此網絡在組合成一個大的搜尋空間。相同字的不同發音處理并列的狀态。發音到發音的第一個單元,單元後是hmm,hmm後在是單元,直到發音的最後那個單元的hmm,此hmm後連接配接的發音。
此主要用來産生搜尋圖。構造一個搜尋網絡。其搜尋空間不是動态産生,而是産生整個搜尋圖(空間)。此隻能用于詞彙量少的語言識别情況。不能用于大詞彙量的語言識别。
語言專家的簡單形式。FlatLinguist需要一個文法圖(由底層的,可配置的文法傳回),産生了一個搜尋圖為此文法。
它遵循以下簡單假設:
每一個文法節點零個或者一個字。不允許扇入,沒有組成元件,僅僅隻有單元,HMM狀态,發音狀态(在圖中的初始化和終止文法狀态,(沒有字,口供選擇對象或者文法狀态達到)僅僅隻有合法的轉換(比對場景)被允許,沒有單元的樹結構,分支文法狀态是被允許的。
注意所有的機率都是log域内的。
本類的屬性:
@S4Component(type = Grammar.class)
public final static String PROP_GRAMMAR = "grammar";屬性定義了在建立搜尋圖時所使用的文法類。(對象)
@S4Component(type = UnitManager.class)
public final static String PROP_UNIT_MANAGER = "unitManager";屬性定義了在建立搜尋圖時所使用的單元管理(器)。
@S4Component(type = AcousticModel.class)
public final static String PROP_ACOUSTIC_MODEL = "acousticModel";屬性定義了在建立搜尋圖時所使用的聲學模型(類或對象)。
@S4Component(type = LogMath.class)
public final static String PROP_LOG_MATH = "logMath";屬性定義了被搜尋管理器使用的logmath。
@S4Boolean(defaultValue = false)
public final static String PROP_DUMP_GSTATES = "dumpGstates";屬性用來決定是否列印Gstates圖狀态。
@S4Boolean(defaultValue = false)
public final static String PROP_ADD_OUT_OF_GRAMMAR_BRANCH = "addOutOfGrammarBranch";屬性确定是否為檢測到的out-of-grammar utterances(文法外的語句)添加一個分支。
@S4Double(defaultValue = 1.0)
public final static String PROP_OUT_OF_GRAMMAR_PROBABILITY = "outOfGrammarProbability";為進入out-of-grammar(文法外分支)分支的機率屬性。
@S4Component(type = AcousticModel.class)
public static final String PROP_PHONE_LOOP_ACOUSTIC_MODEL = "phoneLoopAcousticModel";聲學模型(是否)使用場景獨立音素循環的屬性。
@S4Double(defaultValue = 1.0)
public static final String PROP_PHONE_INSERTION_PROBABILITY = "phoneInsertionProbability"在out-of-grammar場景獨立音素循環中插入一個場景獨立音素的機率。
@S4Boolean(defaultValue = false)
public final static String PROP_SHOW_COMPILATION_PROGRESS = "showCompilationProgress";屬性用于控制編譯過程是否被顯示在标準的輸出中。如果此屬性值為true,則對于每一1000添加到搜尋空間的搜尋狀态一個“dot”被顯示。
@S4Boolean(defaultValue = false)
public final static String PROP_SPREAD_WORD_PROBABILITIES_ACROSS_PRONUNCIATIONS =
"spreadWordProbabilitiesAcrossPronunciations";屬性用于控制字的機率的機率是否傳遍所有的發音。
protected final static float logOne = LogMath.getLogOne();
注意一些屬性被保護允許在FlatLinguist.compileGrammar()中被重載。子元件通過property sheet被配置。
protected Grammar grammar;文法對象
private AcousticModel acousticModel;聲學模型
private UnitManager unitManager;單元管理
protected LogMath logMath;
屬性定義了OOV行為。即對不在字典中的字的處理行為的屬性
protected AcousticModel phoneLoopAcousticModel; 聲學模型(是否)使用場景獨立音素循環。
protected boolean addOutOfGrammarBranch; 是否添加一個OutOfGrammar分支
protected float logOutOfGrammarBranchProbability;
OutOfGrammar分支的機率
protected float logPhoneInsertionProbability;音素插入機率,在out-of-grammar場景獨立音素循環中插入一個場景獨立音素的機率。
通過property sheet被配置的資料。
private float logWordInsertionProbability;字插入機率。
private float logSilenceInsertionProbability;靜音插入機率。
private float logFillerInsertionProbability;填充插入機率
    private float logUnitInsertionProbability;單元插入機率
    private boolean showCompilationProgress = true;
    private boolean spreadWordProbabilitiesAcrossPronunciations;
    private boolean dumpGStates;是否列印圖狀态
    private float languageWeight;語言權重
用來監視性能的資料:
protected StatisticsVariable totalStates; 總狀态數
    protected StatisticsVariable totalArcs;狀态弧數
    protected StatisticsVariable actualArcs;實際弧數
    private transient int totalStateCounter;總狀态計數器。
private final static boolean tracing = false;是否跟蹤。
被用來建立和維護搜尋圖的資料:
private transient Collection<SentenceHMMState> stateSet;
    private String name;
    protected Map<GrammarNode, GState> nodeStateMap;
    protected Cache<SentenceHMMStateArc> arcPool;句hmm狀态弧緩存池
    protected GrammarNode initialGrammarState;初始文法(節點)狀态
    protected SearchGraph searchGraph;
本類的構造方法:
public FlatLinguist(AcousticModel acousticModel,
LogMath logMath,Grammar grammar,UnitManager unitManager,double wordInsertionProbability,double silenceInsertionProbability,
double fillerInsertionProbability,double unitInsertionProbability,
float languageWeight,boolean dumpGStates,boolean showCompilationProgress,Boolean spreadWordProbabilitiesAcrossPronunciations,boolean addOutOfGrammarBranch,double outOfGrammarBranchProbability,double phoneInsertionProbability,AcousticModel phoneLoopAcousticModel
);給定參數建立對象。
public FlatLinguist();空的構造方法。
本類的方法:
public void newProperties(PropertySheet ps);為屬性進行設定。
protected void setupAcousticModel(PropertySheet ps);設定聲學模型對象,從property sheet中獲得。
public String getName();獲得本類對象的名字。
public void allocate();配置設定資源。
protected void allocateAcousticModel();為聲學模型配置設定資源。
public void deallocate();釋放資源。
public void startRecognition();開始識别之前調用。
public void stopRecognition();識别完成後調用。
public LogMath getLogMath();獲得logmath。
  public float getLogSilenceInsertionProbability();獲得靜音插入在log域的機率。
protected Collection<SentenceHMMState> compileGrammar();編輯文法成一個句hmm。一個grammarjob被建立為初始化文法節點。并且被添加到grammarjob列隊中。然而在grammar job 列隊中存在着許多遺留的工作。一個grammer job從列隊中移除,其相應的文法節點被擴充,添加到尾部。Grammarjob的後續被添加入grammar job列隊中。從文法中獲得節點,并建立狀态,把非空的gstate加入到gstate清單中。
protected GState createGState(GrammarNode grammarNode);為給定的文法節點傳回一個新的gstate。
protected void addStartingPath();确儲存在一個開始路徑通過添加一個空的左場景到開始的gstate。目前flatlinguist要求通過文法傳回的初始文法節點包含一個”sil”字。
protected void addStartingPath(GrammarNode initialNode);在指定的節點開始搜尋。通過添加一個空的左場景到開始的gstate來確定一條到初始節點的開始路徑。
protected boolean grammarHasChanged();決定文法是否改變,因為我們上次已經編譯過的搜尋圖。如果文法已經改變,傳回為true。
protected SentenceHMMState findStartingState();找到開始狀态,傳回的是開始狀态。
protected SentenceHMMStateArc getArc(SentenceHMMState nextState,float logLanguageProbability,float logInsertionProbability);得到一個句hmm狀态弧。弧從存儲弧的池中獲得。輸入參數:nextState為下一個狀态。logLanguageProbability為語言機率,logInsertionProbability為插入機率。
protected GState getGState(GrammarNode node);給定一個文法節點來獲得相應的gstate。</span>









 

           

繼續閱讀