136 lines
3.2 KiB
C
136 lines
3.2 KiB
C
#include "volcanop.h"
|
|
#include "res.h"
|
|
#include "brknet.h"
|
|
|
|
// Segmentation stuff
|
|
|
|
BBOX_PROB_TABLE *g_pProbTable;
|
|
|
|
// Default language model code
|
|
|
|
UNIGRAM_INFO g_unigramInfo;
|
|
BIGRAM_INFO g_bigramInfo;
|
|
CLASS_BIGRAM_INFO g_classBigramInfo;
|
|
TTUNE_INFO g_ttuneInfo;
|
|
wchar_t g_pLocale[16];
|
|
wchar_t g_pLocaleDir[1024];
|
|
wchar_t g_pRecogDir[1024];
|
|
|
|
VOLCANO_PARAMS_INFO g_vtuneInfo;
|
|
VOLCANO_CONFIG g_volcanoConfig;
|
|
CENTIPEDE_INFO g_centipedeInfo;
|
|
|
|
BOOL LoadSegmNetFromResource (HINSTANCE hInst, int nResID, int nType);
|
|
BOOL LoadCharDetFromResource (HINSTANCE hInst, int nResID, int nType);
|
|
|
|
// Load up everything for the lattice search
|
|
// Loads the following databases: unigrams, bigrams, class bigrams, tuning, centipede, free input
|
|
BOOL LatticeConfig(HINSTANCE hInstanceDll)
|
|
{
|
|
BOOL fError = FALSE;
|
|
|
|
LatticeConfigInit();
|
|
|
|
// Tuning parameters (can probably be removed for the non-insurance version)
|
|
if (!fError && !TTuneLoadRes(
|
|
&g_ttuneInfo, hInstanceDll, RESID_TTUNE, VOLCANO_RES
|
|
)) {
|
|
fError = TRUE;
|
|
ASSERT(("Error in TTuneLoadRes", FALSE));
|
|
}
|
|
|
|
if (!fError && !VTuneLoadRes(&g_vtuneInfo, hInstanceDll, RESID_VTUNE, VOLCANO_RES))
|
|
{
|
|
fError = TRUE;
|
|
ASSERT(("Error in VTuneLoadRes", FALSE));
|
|
}
|
|
|
|
// Load unigrams
|
|
if (!fError && !UnigramLoadRes(
|
|
&g_locRunInfo, &g_unigramInfo,
|
|
hInstanceDll, RESID_UNIGRAM, VOLCANO_RES
|
|
)) {
|
|
fError = TRUE;
|
|
ASSERT(("Error in UnigramLoadRes", FALSE));
|
|
}
|
|
|
|
// Load bigrams only if we're in WinCE
|
|
# if !defined(WINCE) && !defined(FAKE_WINCE)
|
|
if (!fError && !BigramLoadRes(
|
|
&g_locRunInfo, &g_bigramInfo, hInstanceDll, RESID_BIGRAM,
|
|
VOLCANO_RES
|
|
)) {
|
|
fError = TRUE;
|
|
ASSERT(("Error in BigramLoadRes", FALSE));
|
|
}
|
|
# endif
|
|
|
|
// Load class bigrams
|
|
if (!fError && !ClassBigramLoadRes(
|
|
&g_locRunInfo, &g_classBigramInfo, hInstanceDll,
|
|
RESID_CLASS_BIGRAM, VOLCANO_RES
|
|
)) {
|
|
fError = TRUE;
|
|
ASSERT(("Error in ClassBigramLoadRes", FALSE));
|
|
}
|
|
|
|
// Load up centipede
|
|
if (!fError) {
|
|
if (!CentipedeLoadRes(&g_centipedeInfo, hInstanceDll, RESID_CENTIPEDE, VOLCANO_RES, &g_locRunInfo)) {
|
|
fError = TRUE;
|
|
ASSERT(("Error in CentipedeLoadRes", FALSE));
|
|
}
|
|
}
|
|
|
|
// Load the bbox prob table for pre-segmentation
|
|
if (!fError) {
|
|
g_pProbTable = LoadBBoxProbTableRes(
|
|
hInstanceDll, RESID_BBOX_PROBS, VOLCANO_RES
|
|
);
|
|
// Failure to load here is not an error, we just won't support free input.
|
|
}
|
|
|
|
// Try to load up IIMLanguage
|
|
#ifdef USE_IFELANG3
|
|
// LatticeConfigIFELang3();
|
|
#endif
|
|
|
|
// Don't bother trying to load other free input databases if the basic
|
|
// one is not available.
|
|
if (g_pProbTable != NULL)
|
|
{
|
|
// try to load the break net
|
|
if (LoadBrkNetFromResource (hInstanceDll, RESID_BRKNET, VOLCANO_RES))
|
|
{
|
|
// load the segmnet, optional
|
|
if (!LoadSegmNetFromResource (hInstanceDll, RESID_SEGMNET, VOLCANO_RES))
|
|
{
|
|
// fError = TRUE;
|
|
// ASSERT(("Error in LoadSegmNetFromResource", FALSE));
|
|
}
|
|
|
|
// load the char detector, not optional
|
|
if (!LoadCharDetFromResource (hInstanceDll, RESID_CHARDET, VOLCANO_RES))
|
|
{
|
|
fError = TRUE;
|
|
ASSERT(("Error in LoadCharDetFromResource", FALSE));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Did everything load correctly?
|
|
if (fError)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
// Unload those things that can be unloaded
|
|
BOOL LatticeUnconfig()
|
|
{
|
|
return TRUE;
|
|
}
|
|
|