//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // // Copyright (c) 2001 Microsoft Corporation. All rights reserved. // // Module: // volcano/dll/latticefl.c // // Description: // Functions to load various databases for the recognizer from // files. // // Author: // hrowley // //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ #include "common.h" #include "volcanop.h" #include "brknet.h" BBOX_PROB_TABLE *g_pProbTable; UNIGRAM_INFO g_unigramInfo; BIGRAM_INFO g_bigramInfo; CLASS_BIGRAM_INFO g_classBigramInfo; TTUNE_INFO g_ttuneInfo; LOAD_INFO g_bboxProbInfo; wchar_t g_pLocale[16]; wchar_t g_pLocaleDir[1024]; wchar_t g_pRecogDir[1024]; HINSTANCE g_hDLL; VOLCANO_PARAMS_INFO g_vtuneInfo; VOLCANO_CONFIG g_volcanoConfig; CENTIPEDE_INFO g_centipedeInfo; LOAD_INFO g_BrkNetInfo; LOAD_INFO g_SegmNetInfo; LOAD_INFO g_CharDetLoadInfo; BOOL LoadSegmNetFromFile(wchar_t *pwszRecogDir, LOAD_INFO *pLoadInfo); BOOL LoadCharDetFromFile(wchar_t *wszPath, LOAD_INFO *pLoadInfo); // Loads the following databases: unigrams, bigrams, class bigrams, tuning, centipede, free input BOOL LatticeConfigFile(wchar_t *pRecogDir) { LatticeConfigInit(); if (!VTuneLoadFile(&g_vtuneInfo, pRecogDir)) { ASSERT(("Error in VTuneLoadFile", FALSE)); return FALSE; } if (!TTuneLoadFile(&g_ttuneInfo, pRecogDir)) { ASSERT(("Error in TTuneLoadFile", FALSE)); return FALSE; } if (!UnigramLoadFile(&g_locRunInfo, &g_unigramInfo, pRecogDir)) { ASSERT(("Error in UnigramLoadFile", FALSE)); return FALSE; } #if !defined(WINCE) && !defined(FAKE_WINCE) if (!BigramLoadFile(&g_locRunInfo, &g_bigramInfo, pRecogDir)) { ASSERT(("Error in BigramLoadFile", FALSE)); return FALSE; } #endif if (!ClassBigramLoadFile(&g_locRunInfo, &g_classBigramInfo, pRecogDir)) { ASSERT(("Error in ClassBigramLoadFile", FALSE)); return FALSE; } if (!CentipedeLoadFile(&g_centipedeInfo, pRecogDir, &g_locRunInfo)) { ASSERT(("Error in CentipedeLoadFile", FALSE)); return FALSE; } // Failure here is not an error, it just means we don't support free input g_pProbTable = LoadBBoxProbTableFile(pRecogDir, &g_bboxProbInfo); #ifdef USE_IFELANG3 LatticeConfigIFELang3(); #endif // Don't bother trying to load other databases for free input if the basic // one is not present. if (g_pProbTable != NULL) { // load the brk net, this is optional if (LoadBrkNetFromFile (pRecogDir, &g_BrkNetInfo)) { // load the segm nets, optional if (!LoadSegmNetFromFile (pRecogDir, &g_SegmNetInfo)) { // ASSERT(("Error in LoadSegmNetFromFile", FALSE)); // return FALSE; } // load the char detector, not optional if (!LoadCharDetFromFile(pRecogDir, &g_CharDetLoadInfo)) { ASSERT(("Error in LoadCharDetFromFile", FALSE)); return FALSE; } } } return TRUE; } BOOL LatticeUnconfigFile() { BOOL ok = TRUE; if (!UnigramUnloadFile(&g_unigramInfo)) ok = FALSE; #if !defined(WINCE) && !defined(FAKE_WINCE) if (!BigramUnloadFile(&g_bigramInfo)) ok = FALSE; #endif if (!ClassBigramUnloadFile(&g_classBigramInfo)) ok = FALSE; if (!TTuneUnloadFile(&g_ttuneInfo)) ok = FALSE; if (!CentipedeUnloadFile(&g_centipedeInfo)) ok = FALSE; if (g_pProbTable != NULL && !UnLoadBBoxProbTableFile(&g_bboxProbInfo)) ok = FALSE; if (!VTuneUnloadFile(&g_vtuneInfo)) { ok = FALSE; } BrkNetUnloadfile (&g_BrkNetInfo); return ok; }