void SoundBuffer::Init( const char * a_file_name ) { ASSERT(a_file_name); // buffer id alGenBuffers( 1, &m_id ); ASSERT( m_id != 0 ); ASSERT( alIsBuffer(m_id) ); SoundManager::Ref().CheckError(); // load file based on extension const char * ext = GetFileExt( a_file_name ); if ( strcmp( ext, "wav" ) == 0 ) InitWave(a_file_name); else if ( strcmp( ext, "ogg" ) == 0 ) InitOgg(a_file_name); else ERROR_MSG("Cannot load sound '%s': unrecognized file extension '%s'", a_file_name, ext ); // TEMPFIX: basically, if we turn off vorbis, GetProperties will crash.. #if defined(USE_VORBIS) GetBufferProperties(); #endif SoundManager::Ref().CheckError(); }
int inithtk(int argc, char *argv[],const char * app_version, bool noGraphics) { InitThreads(HT_MSGMON); // enable msg driven monitoring if(InitShell(argc,argv,app_version)<SUCCESS) return FAIL; // CommonInit() expanded with incompatible things commented out: InitMem(); InitLabel(); InitMath(); InitSigP(); InitUtil(); InitWave(); /*InitAudio();*/ InitModel(); if(InitParm()<SUCCESS) return FAIL; InitGraf((Boolean)noGraphics); InitDict(); InitNet(); InitLM(); InitRec(); InitLat(); /*InitAdapt();*/ EnableBTrees(); /* allows unseen triphones to be synthesised */ /* Register(abuffer_version); Register(acode_version); Register(acomponent_version); Register(adict_version); Register(agram_version); Register(angram_version); Register(ahmms_version); Register(ahtk_version); Register(amonitor_version); Register(apacket_version); Register(arec_version); Register(aresource_version); Register(arman_version); Register(asource_version); */ InfoPrinted(); return SUCCESS; }
int addWave(float x1, float y1, float x2, float y2, float waveX, float waveY) { int waveres = InitWave(x1, y1, x2, y2, waveX, waveY); if (waveres) { pushGrid( MAX_COL_INDEX , MAX_ROW_INDEX ); return 1; } return 0; }
#include "LWMap.h" #include "LGBase.h" /* -------------------------- Trace Flags ------------------------ */ static int trace = 0; #define T_TOP 0001 /* Top Level tracing */ /* ---------------------- Global Variables ----------------------- */ static WordMap wmap; /* and the word map */ /* ---------------- Configuration Parameters --------------------- */ static ConfParam *cParm[MAXGLOBS]; static int nParm = 0; /* total num params */ /* ---------------- Process Command Line ------------------------- */ /* SetConfParms: set conf parms relevant to this tool */ void SetConfParms(void) { int i; nParm = GetConfig("LGLIST", TRUE, cParm, MAXGLOBS); if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i;
int main(int argc, char *argv[]) { char *s; void Initialise(void); InitShell(argc,argv,lfof_version,lfof_vc_id); InitMem(); InitMath(); InitWave(); InitLabel(); InitWMap(); InitGBase(); InitPCalc(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); SetConfParms(); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(16719,"Bad switch %s; must be single letter",s); switch(s[0]){ case 'f': fofSize = GetChkedInt(1, 1000, s); break; case 'n': nSize = GetChkedInt(1, MAXNG, s); break; case 'T': trace = GetChkedInt(0,077,s); break; default: HError(16719,"LFoF: Unknown switch %s",s); } } if (NextArg() != STRINGARG) HError(16719,"LFoF: map file name expected"); mapFN = GetStrArg(); if (NextArg() != STRINGARG) HError(16719,"LFoF: FoF file name expected"); fofFN = GetStrArg(); Initialise(); if (trace&T_TOP) { printf("Calculating FoF table\n"); fflush(stdout); } fofTab = CreateFoFTab(&gstack,fofSize,nSize); ComputeFoFTab(fofTab,nSize,&inSet); WriteFoFTab(fofFN,fofTab,NULL); Exit(EXIT_SUCCESS); return EXIT_SUCCESS; /* never reached -- make compiler happy */ }
void Initialise(int argc, char *argv[]) { InitThreads(HT_MSGMON); if(InitShell(argc,argv,hnettest_version)<SUCCESS) HError(999,"Initialise: couldnt init HShell"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); if(InitParm()<SUCCESS) HError(999,"Initialise: couldnt init HParm"); InitGraf(FALSE); InitModel(); InitDict(); InitNet(); EnableBTrees(); /* allows unseen triphones to be synthesised */ if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); }
int main(int argc, char *argv[]) { int n,a1,a2,a3,a4; InitThreads(sMon); if(InitShell(argc,argv,hthreadtest_version)<SUCCESS) HError(1100,"HThreadTest: InitShell failed"); if (NumArgs() < 1) ReportUsage(); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); if(InitParm()<SUCCESS) HError(3200,"HThreadTest: InitParm failed"); InitGraf(FALSE); if (sMon==HT_MSGMON) HCreateMonitor(tmon4,(void *)0); if (NextArg() == INTARG){ n = GetIntArg(); switch(n){ case 1: a1 = GetIntArg(); a2 = GetIntArg(); ParallelForkAndJoin(a1,a2); break; case 2: a1 = GetIntArg(); a2 = GetIntArg(); SimpleMutex(a1,a2); break; case 3: SimpleSignal(); break; case 4: a1 = GetIntArg(); a2 = GetIntArg(); a3 = GetIntArg(); a4 = GetIntArg(); BufferTest(a1,a2,a3,a4,GetStrArg()); break; default: printf("Bad test number %d\n",n); ReportUsage(); } } if (sMon>0){ AccessStatus(); PrintThreadStatus("Final"); ReleaseStatusAccess(); if (sMon==HT_MSGMON)HJoinMonitor(); } }
void __cdecl main(int argc, char **argv) { HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); int running = 1; #ifdef WIN32 if (IsDebuggerPresent()) { // turn on floating-point exceptions unsigned int prev; _clearfp(); _controlfp_s(&prev, 0, _EM_ZERODIVIDE|_EM_INVALID); } #endif // check the correct BASS was loaded if (HIWORD(BASS_GetVersion()) != BASSVERSION) { fprintf(stderr, "An incorrect version of BASS.DLL was loaded"); return; } // set the window title SetConsoleTitle(TEXT(title_text)); // set the console buffer size static const COORD bufferSize = { 80, 50 }; SetConsoleScreenBufferSize(hOut, bufferSize); // set the console window size static const SMALL_RECT windowSize = { 0, 0, 79, 49 }; SetConsoleWindowInfo(hOut, TRUE, &windowSize); // clear the window Clear(hOut); // hide the cursor static const CONSOLE_CURSOR_INFO cursorInfo = { 100, FALSE }; SetConsoleCursorInfo(hOut, &cursorInfo); // set input mode SetConsoleMode(hIn, 0); // 10ms update period const DWORD STREAM_UPDATE_PERIOD = 10; BASS_SetConfig(BASS_CONFIG_UPDATEPERIOD, STREAM_UPDATE_PERIOD); // initialize BASS sound library const DWORD STREAM_FREQUENCY = 48000; if (!BASS_Init(-1, STREAM_FREQUENCY, BASS_DEVICE_LATENCY, 0, NULL)) Error("Can't initialize device"); // get device info BASS_GetInfo(&info); // if the device's output rate is unknown default to stream frequency if (!info.freq) info.freq = STREAM_FREQUENCY; // debug print info DebugPrint("frequency: %d (min %d, max %d)\n", info.freq, info.minrate, info.maxrate); DebugPrint("device latency: %dms\n", info.latency); DebugPrint("device minbuf: %dms\n", info.minbuf); DebugPrint("ds version: %d (effects %s)\n", info.dsver, info.dsver < 8 ? "disabled" : "enabled"); // default buffer size = update period + 'minbuf' + 1ms extra margin BASS_SetConfig(BASS_CONFIG_BUFFER, STREAM_UPDATE_PERIOD + info.minbuf + 1); DebugPrint("using a %dms buffer\r", BASS_GetConfig(BASS_CONFIG_BUFFER)); // create a stream, stereo so that effects sound nice stream = BASS_StreamCreate(info.freq, 2, BASS_SAMPLE_FLOAT, (STREAMPROC*)WriteStream, 0); // set channel to apply effects fx_channel = stream; #ifdef BANDLIMITED_SAWTOOTH // initialize bandlimited sawtooth tables InitSawtooth(); #endif // initialize waves InitWave(); // enable the first oscillator osc_config[0].enable = true; // reset all controllers Control::ResetAll(); // start playing the audio stream BASS_ChannelPlay(stream, FALSE); // get the number of midi devices UINT midiInDevs = Midi::Input::GetNumDevices(); DebugPrint("MIDI input devices: %d\n", midiInDevs); // print device names for (UINT i = 0; i < midiInDevs; ++i) { MIDIINCAPS midiInCaps; if (Midi::Input::GetDeviceCaps(i, midiInCaps) == 0) { DebugPrint("%d: %s\n", i, midiInCaps.szPname); } } // if there are any devices available... if (midiInDevs > 0) { // open and start midi input // TO DO: select device number via a configuration setting Midi::Input::Open(0); Midi::Input::Start(); } // initialize to middle c note_most_recent = 60; voice_note[voice_most_recent] = unsigned char(note_most_recent); DisplaySpectrumAnalyzer displaySpectrumAnalyzer; DisplayKeyVolumeEnvelope displayKeyVolumeEnvelope; DisplayOscillatorWaveform displayOscillatorWaveform; DisplayOscillatorFrequency displayOscillatorFrequency; DisplayLowFrequencyOscillator displayLowFrequencyOscillator; DisplayFilterFrequency displayFilterFrequency; // initialize spectrum analyzer displaySpectrumAnalyzer.Init(stream, info); // initialize key display displayKeyVolumeEnvelope.Init(hOut); // show output scale and key octave PrintOutputScale(hOut); PrintKeyOctave(hOut); PrintGoToEffects(hOut); PrintAntialias(hOut); // show main page Menu::SetActivePage(hOut, Menu::PAGE_MAIN); while (running) { // if there are any pending input events... DWORD numEvents = 0; while (GetNumberOfConsoleInputEvents(hIn, &numEvents) && numEvents > 0) { // get the next input event INPUT_RECORD keyin; ReadConsoleInput(hIn, &keyin, 1, &numEvents); if (keyin.EventType == KEY_EVENT) { // handle interface keys if (keyin.Event.KeyEvent.bKeyDown) { WORD code = keyin.Event.KeyEvent.wVirtualKeyCode; DWORD modifiers = keyin.Event.KeyEvent.dwControlKeyState; if (code == VK_ESCAPE) { running = 0; break; } else if (code == VK_OEM_MINUS || code == VK_SUBTRACT) { Menu::UpdatePercentageProperty(output_scale, -1, modifiers, 0, 4); PrintOutputScale(hOut); } else if (code == VK_OEM_PLUS || code == VK_ADD) { Menu::UpdatePercentageProperty(output_scale, +1, modifiers, 0, 4); PrintOutputScale(hOut); } else if (code == VK_OEM_4) // '[' { if (keyboard_octave > 1) { for (int k = 0; k < KEYS; ++k) { if (key_down[k]) NoteOff(k + keyboard_octave * 12); } --keyboard_octave; for (int k = 0; k < KEYS; ++k) { if (key_down[k]) NoteOn(k + keyboard_octave * 12); } PrintKeyOctave(hOut); } } else if (code == VK_OEM_6) // ']' { if (keyboard_octave < 9) { for (int k = 0; k < KEYS; ++k) { if (key_down[k]) NoteOff(k + keyboard_octave * 12); } ++keyboard_octave; for (int k = 0; k < KEYS; ++k) { if (key_down[k]) NoteOn(k + keyboard_octave * 12); } PrintKeyOctave(hOut); } } else if (code == VK_F12) { use_antialias = !use_antialias; PrintAntialias(hOut); } else if (code >= VK_F1 && code < VK_F10) { Menu::SetActiveMenu(hOut, code - VK_F1); } else if (code == VK_F10) { PrintGoToEffects(hOut); Menu::SetActivePage(hOut, Menu::PAGE_MAIN); } else if (code == VK_F11) { PrintGoToMain(hOut); Menu::SetActivePage(hOut, Menu::PAGE_FX); } else if (code == VK_TAB) { if (modifiers & SHIFT_PRESSED) Menu::PrevMenu(hOut); else Menu::NextMenu(hOut); } else if (code == VK_UP || code == VK_DOWN || code == VK_RIGHT || code == VK_LEFT) { Menu::Handler(hOut, code, modifiers); } } // handle note keys for (int k = 0; k < KEYS; k++) { if (keyin.Event.KeyEvent.wVirtualKeyCode == keys[k]) { // key down bool down = (keyin.Event.KeyEvent.bKeyDown != 0); // if key down state changed... if (key_down[k] != down) { // update state key_down[k] = down; // if pressing the key if (down) { // note on NoteOn(k + keyboard_octave * 12); } else { // note off NoteOff(k + keyboard_octave * 12); } } break; } } } } // center frequency of the zeroth semitone band // (one octave down from the lowest key) float const freq_min = powf(2, float(keyboard_octave - 6)) * middle_c_frequency; // update the spectrum analyzer display displaySpectrumAnalyzer.Update(hOut, stream, info, freq_min); // update note key volume envelope display displayKeyVolumeEnvelope.Update(hOut); if (Menu::active_page == Menu::PAGE_MAIN) { // update the oscillator waveform display displayOscillatorWaveform.Update(hOut, info, voice_most_recent); // update the oscillator frequency displays for (int o = 0; o < NUM_OSCILLATORS; ++o) { if (osc_config[o].enable) displayOscillatorFrequency.Update(hOut, voice_most_recent, o); } // update the low-frequency oscillator display displayLowFrequencyOscillator.Update(hOut); // update the filter frequency display if (flt_config.enable) displayFilterFrequency.Update(hOut, voice_most_recent); } // show CPU usage PrintConsole(hOut, { 73, 49 }, "%6.2f%%", BASS_GetCPU()); // sleep for 1/60th of second Sleep(16); } if (midiInDevs) { // stop and close midi input Midi::Input::Stop(); Midi::Input::Close(); } // clean up spectrum analyzer displaySpectrumAnalyzer.Cleanup(stream); // clear the window Clear(hOut); BASS_Free(); }
int main(int argc, char *argv[]) { Source src; int tmpInt; float tmpFlt; char *accfn, *s; void Initialise(char *hmmListFn); void Interpolate(void); void UpdateModels(void); void MakeWtAccLists(void); void AttachWtAccLists(void); void StatReport(void); if(InitShell(argc,argv,hsmooth_version,hsmooth_vc_id)<SUCCESS) HError(2400,"HSmooth: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(2400,"HSmooth: InitParm failed"); InitTrain(); InitUtil(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); CreateHeap(&hmmStack,"HmmStore", MSTAK, 1, 1.0, 50000, 500000); CreateHMMSet(&hset,&hmmStack,TRUE); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(2419,"HSmooth: Bad switch %s; must be single letter",s); switch(s[0]){ case 'b': epsilon = GetChkedFlt(0.0,1.0,s); break; case 'c': maxStep = GetChkedInt(1,1000,s); break; case 'd': if (NextArg()!=STRINGARG) HError(2419,"HSmooth: HMM definition directory expected"); hmmDir = GetStrArg(); break; case 'e': if (NextArg()!=STRINGARG) HError(2419,"HSmooth: HMM definition directory expected"); newDir = GetStrArg(); break; case 'm': minEgs = GetChkedInt(1,1000,s); break; case 'o': if (NextArg()!=STRINGARG) HError(2419,"HSmooth: HMM file extension expected"); newExt = GetStrArg(); break; case 's': stats = TRUE; if (NextArg()!=STRINGARG) HError(2419,"HSmooth: Stats file name expected"); statFN = GetStrArg(); break; case 'u': SetuFlags(); break; case 'v': minVar = GetChkedFlt(0.0,10.0,s); break; case 'w': mixWeightFloor = MINMIX * GetChkedFlt(0.0,10000.0,s); break; case 'x': if (NextArg()!=STRINGARG) HError(2419,"HSmooth: HMM file extension expected"); hmmExt = GetStrArg(); break; case 'B': saveBinary=TRUE; break; case 'H': if (NextArg() != STRINGARG) HError(2419,"HSmooth: HMM macro file name expected"); AddMMF(&hset,GetStrArg()); break; case 'M': if (NextArg()!=STRINGARG) HError(2419,"HSmooth: Output macro file directory expected"); newDir = GetStrArg(); break; case 'T': trace = GetChkedInt(0,0100000,s); break; default: HError(2419,"HSmooth: Unknown switch %s",s); } } if (NextArg() != STRINGARG) HError(2419,"HSmooth: file name of HMM list expected"); Initialise(GetStrArg()); do { if (NextArg()!=STRINGARG) HError(2419,"HSmooth: accumulator file name expected"); accfn = GetStrArg(); src=LoadAccs(&hset,accfn,uFlags); ReadFloat(&src,&tmpFlt,1,ldBinary); totalPr += (LogDouble)tmpFlt; ReadInt(&src,&tmpInt,1,ldBinary); totalT += tmpInt; CloseSource(&src); nBlk++; MakeWtAccLists(); } while (NumArgs()>0); AttachWtAccLists(); Interpolate(); if (stats) StatReport(); UpdateModels(); Exit(0); return (0); /* never reached -- make compiler happy */ }
int main(int argc, char *argv[]) { char *datafn, *s; int nSeg; void Initialise(void); void LoadFile(char *fn); void EstimateModel(void); void SaveModel(char *outfn); if(InitShell(argc,argv,hinit_version,hinit_vc_id)<SUCCESS) HError(2100,"HInit: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(2100,"HInit: InitParm failed"); InitTrain(); InitUtil(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); CreateHMMSet(&hset,&gstack,FALSE); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(2119,"HInit: Bad switch %s; must be single letter",s); switch(s[0]){ case 'e': epsilon = GetChkedFlt(0.0,1.0,s); break; case 'i': maxIter = GetChkedInt(0,100,s); break; case 'l': if (NextArg() != STRINGARG) HError(2119,"HInit: Segment label expected"); segLab = GetStrArg(); break; case 'm': minSeg = GetChkedInt(1,1000,s); break; case 'n': newModel = FALSE; break; case 'o': outfn = GetStrArg(); break; case 'u': SetuFlags(); break; case 'v': minVar = GetChkedFlt(0.0,10.0,s); break; case 'w': mixWeightFloor = MINMIX * GetChkedFlt(0.0,10000.0,s); break; case 'B': saveBinary = TRUE; break; case 'F': if (NextArg() != STRINGARG) HError(2119,"HInit: Data File format expected"); if((dff = Str2Format(GetStrArg())) == ALIEN) HError(-2189,"HInit: Warning ALIEN Data file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(2119,"HInit: Label File format expected"); if((lff = Str2Format(GetStrArg())) == ALIEN) HError(-2189,"HInit: Warning ALIEN Label file format set"); break; case 'H': if (NextArg() != STRINGARG) HError(2119,"HInit: HMM macro file name expected"); AddMMF(&hset,GetStrArg()); break; case 'I': if (NextArg() != STRINGARG) HError(2119,"HInit: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'L': if (NextArg()!=STRINGARG) HError(2119,"HInit: Label file directory expected"); labDir = GetStrArg(); break; case 'M': if (NextArg()!=STRINGARG) HError(2119,"HInit: Output macro file directory expected"); outDir = GetStrArg(); break; case 'T': if (NextArg() != INTARG) HError(2119,"HInit: Trace value expected"); trace = GetChkedInt(0,01777,s); break; case 'X': if (NextArg()!=STRINGARG) HError(2119,"HInit: Label file extension expected"); labExt = GetStrArg(); break; default: HError(2119,"HInit: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) HError(2119,"HInit: source HMM file name expected"); hmmfn = GetStrArg(); Initialise(); do { if (NextArg()!=STRINGARG) HError(2119,"HInit: training data file name expected"); datafn = GetStrArg(); LoadFile(datafn); } while (NumArgs()>0); nSeg = NumSegs(segStore); if (nSeg < minSeg) HError(2121,"HInit: Too Few Observation Sequences [%d]",nSeg); if (trace&T_TOP) { printf("%d Observation Sequences Loaded\n",nSeg); fflush(stdout); } EstimateModel(); SaveModel(outfn); if (trace&T_TOP) printf("Output written to directory %s\n", outDir==NULL?"current":outDir); Exit(0); return (0); /* never reached -- make compiler happy */ }
static Boolean tgtHdr = FALSE; /* print target header info */ static Boolean obsFmt = FALSE; /* print observation format */ static Boolean prData = TRUE; /* print data */ static Boolean rawOut = FALSE; /* raw output i.e no numbering */ static Boolean replay = FALSE; /* replay audio */ static Boolean frcDisc = FALSE; /* List VQ symbols from cont file */ static FileFormat ff = UNDEFF; /* Source File format */ static long gst = -1; /* start sample to list */ static long gen = -1; /* end sample to list */ static int numS = 1; /* number of streams */ static int nItems = 10; /* num items per line */ static int barwidth; /* width of printed bars */ static char barc = '-'; /* bar character */ /* ---------------- Configuration Parameters --------------------- */ static ConfParam *cParm[MAXGLOBS]; static int nParm = 0; /* total num params */ static HTime sampPeriod; /* raw audio input only */ static int audSignal; /* ---------------- Process Command Line ------------------------- */ /* SetConfParms: set conf parms relevant to this tool */ void SetConfParms(void) { int i; double d; sampPeriod = 0.0; audSignal = NULLSIG; nParm = GetConfig("HLIST", TRUE, cParm, MAXGLOBS); if (nParm>0){ if (GetConfInt(cParm,nParm,"AUDIOSIG",&i)) audSignal = i; if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfFlt(cParm,nParm,"SOURCERATE",&d)) sampPeriod = d; } }
int main(int argc, char *argv[]) { int i; char *s,*c; char fmt[256]; InitShell(argc,argv,lnorm_version,lnorm_vc_id); InitMem(); InitMath(); InitWave(); InitLabel(); InitWMap(); InitLUtil(); InitLModel(); InitPCalc(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); SetConfParms(); CreateHeap(&langHeap,"langHeap",MSTAK,1,0.5,5000,40000); for (i=1; i<=LM_NSIZE; i++) cutOff[i] = 0, wdThresh[i] = 0.0; while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(16519,"Bad switch %s; must be single letter",s); switch(s[0]){ case 'c': i = GetChkedInt(2,LM_NSIZE,s); cutOff[i] = GetChkedInt(1,1000,s); break; case 'd': i = GetChkedInt(2,LM_NSIZE,s); wdThresh[i] = GetChkedFlt(0.0,1E10,s); break; case 'f': strcpy(fmt,GetStrArg()); for (c=fmt; *c!=0; *c=toupper(*c),c++); if (strcmp(fmt, LM_TXT_TEXT)==0) saveFmt = LMF_TEXT; else if (strcmp(fmt, LM_TXT_BINARY)==0) saveFmt = LMF_BINARY; else if (strcmp(fmt, LM_TXT_ULTRA)==0) saveFmt = LMF_ULTRA; else HError(16519,"Unrecognised LM format, should be one of [%s, %s, %s]", LM_TXT_TEXT, LM_TXT_BINARY, LM_TXT_ULTRA); break; case 'n': nSize = GetChkedInt(1,LM_NSIZE,s); break; case 'w': if (NextArg() != STRINGARG) HError(16519,"LPlex: Word list file name expected"); wlistFN = GetStrArg(); break; case 'T': trace = GetChkedInt(0,077, s); break; default: HError(16519,"LMPlex: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) /* load the language model */ HError(16519, "Input language model filename expected"); srcFN = GetStrArg(); if (NextArg()!=STRINGARG) /* load the language model */ HError(16519, "Output language model filename expected"); tgtFN= GetStrArg(); if (wlistFN!=NULL) { CreateWordList(wlistFN,&wlist,10); lm = LoadLangModel(srcFN,&wlist,1.0,LMP_FLOAT|LMP_COUNT,&langHeap); } else { lm = LoadLangModel(srcFN,NULL,1.0,LMP_FLOAT|LMP_COUNT,&langHeap); } if (lm->probType==LMP_COUNT) { RebuildLM(lm,cutOff,wdThresh,LMP_FLOAT); } else { NormaliseLM(lm); } if (nSize>0 && nSize<lm->nSize) lm->nSize = nSize; for (i=1;i<=lm->nSize;i++) lm->gInfo[i].fmt = (i==1) ? LMF_TEXT : saveFmt; SaveLangModel(tgtFN,lm); Exit(EXIT_SUCCESS); return EXIT_SUCCESS; /* never reached -- make compiler happy */ }
/* main: */ int main(int argc, char *argv[]) { char *s; char fname[MAXSTRLEN]; InitShell(argc, argv, hmgetool_version, hmgetool_vc_id); InitMem(); InitMath(); InitSigP(); InitWave(); InitLabel(); InitModel(); InitTrain(); InitParm(); InitUtil(); InitFB(); InitGen(); InitAdapt(&xfInfo, NULL); InitMTrain(); /* process argument */ if (NumArgs() == 0) ReportUsage(); CreateHeap(&hmmStack, "Model Stack", MSTAK, 1, 1.0, 80000, 4000000); CreateHeap(&orighmmStack, "Model Stack", MSTAK, 1, 1.0, 80000, 4000000); CreateHeap(&accStack, "Acc Stack", MSTAK, 1, 1.0, 80000, 400000); CreateHeap(&genStack, "Gen Stack", MSTAK, 1, 1.0, 80000, 400000); CreateHeap(&mgeStack, "MGE Train Stack", MSTAK, 1, 1.0, 80000, 400000); SetConfParms(); CreateHMMSet(&hset, &hmmStack, TRUE); CreateHMMSet(&orighset, &orighmmStack, TRUE); statInfo = (MTStatInfo *) New(&gstack, sizeof(MTStatInfo)); memset(statInfo, 0, sizeof(MTStatInfo)); genInfo = (GenInfo *) New(&genStack, sizeof(GenInfo)); memset(genInfo, 0, sizeof(GenInfo)); genInfo->hset = &hset; genInfo->genMem = &genStack; mtInfo = (MgeTrnInfo *) New(&mgeStack, sizeof(MgeTrnInfo)); memset(mtInfo, 0, sizeof(MgeTrnInfo)); mtInfo->genInfo = genInfo; mtInfo->statInfo = statInfo; mtInfo->hset = &hset; mtInfo->orighset = &orighset; mtInfo->mgeMem = &mgeStack; while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s) != 1) HError(6601, "HMgeTool: Bad switch %s; must be single letter", s); switch (s[0]) { case 'a': nMaxBAIter = GetChkedInt(1, 1000, s); nMaxBALen = GetChkedInt(1, 1000, s); break; case 'b': mtInfo->bBoundAdj = TRUE; nBAEndIter = GetChkedInt(0, 1000, s); nBoundAdjWin = GetChkedInt(1, 1000, s); break; case 'c': outProcData = TRUE; break; case 'd': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM definition directory expected"); hmmDir = GetStrArg(); break; case 'e': mtInfo->bStepLimit = TRUE; break; case 'f': frameRate = (HTime) GetChkedFlt(0.0, 10000000.0, s); break; case 'g': mtInfo->bMVar = TRUE; break; case 'i': startIter = GetChkedInt(0, 1000, s); endIter = GetChkedInt(startIter, 1000, s); break; case 'j': funcType = GetChkedInt(0, 2, s); mtInfo->funcType = funcType; break; case 'l': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: Label file output directory expected"); outLabDir = GetStrArg(); break; case 'o': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM file extension expected"); outExt = GetStrArg(); break; case 'p': A_STEP = GetChkedFlt(0.0, 10000000.0, s); B_STEP = GetChkedFlt(0.0, 10000000.0, s); break; case 'r': mtInfo->bOrigHmmRef = TRUE; if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM macro file name expected"); s = GetStrArg(); AddMMF(&orighset, s); break; case 's': /* updating scale file */ scalefn = GetStrArg(); break; case 'u': SetuFlags(); break; case 'v': MSDthresh = GetChkedFlt(0.0, 1.0, s); break; case 'w': fGVDistWght = GetChkedFlt(0.0, 1000.0, s); break; case 'x': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM file extension expected"); hmmExt = GetStrArg(); break; case 'B': inBinary = TRUE; break; case 'G': mtInfo->nGainStreamIndex = GetChkedInt(1, SMAX, s); mtInfo->nGainDimIndex = GetChkedInt(1, 1000, s); if (NextArg() == FLOATARG || NextArg() == INTARG) mtInfo->fGainWghtComp = GetChkedFlt(-10000.0, 1000000.0, s); break; case 'H': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM macro file name expected"); mmfFn = GetStrArg(); AddMMF(&hset, mmfFn); break; case 'I': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'J': /* regression class and tree */ if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM regression class/tree file name expected"); s = GetStrArg(); AddMMF(&hset, s); AddMMF(&orighset, s); break; case 'K': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: HMM transform file name expected"); xformfn = GetStrArg(); break; case 'L': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: Label file directory expected"); labDir = GetStrArg(); break; case 'M': if (NextArg() != STRINGARG) HError(6601, "HMgeTool: Output macro file directory expected"); outDir = GetStrArg(); break; case 'T': trace = GetChkedInt(0, 0100000, s); break; case 'X': if (NextArg() != STRINGARG) HError(2319, "HMGenS: Label file extension expected"); labExt = GetStrArg(); break; default: HError(6601, "HMgeTool: Unknown switch %s", s); } } if (NextArg() != STRINGARG) HError(6601, "HMgeTool: file name of model list expected"); hmmListFn = GetStrArg(); Initialise(); if (funcType == MGE_EVAL) { PerformMgeEval(); } else if (funcType == MGE_TRAIN) { PerformMgeTrain(); if (endIter > 0 && bMgeUpdate) { /* output HMM files */ ConvDiagC(&hset, TRUE); SaveHMMSet(&hset, outDir, outExt, NULL, inBinary); } } else if (funcType == MGE_ADAPT) { PerformMgeAdapt(); if (endIter > 0 && bMgeUpdate) { MakeFN(xformfn, outDir, NULL, fname); SaveOneXForm(&hset, hset.curXForm, fname, FALSE); } } ResetHeap(&hmmStack); ResetHeap(&orighmmStack); ResetHeap(&accStack); ResetHeap(&genStack); ResetHeap(&mgeStack); return 0; }
int main(int argc, char *argv[]) { int i; char *s,*c; char fmt[256]; dictList *dEntry,*d; InitShell(argc,argv,prog_version,prog_vc_id); InitMem(); InitMath(); InitWave(); InitLabel(); InitDict(); InitWMap(); InitLUtil(); InitLModel(); InitPCalc(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); SetConfParms(); CreateHeap(&langHeap,"langHeap",MSTAK,1,0.5,5000,40000); for (i=1; i<=LM_NSIZE; i++) cutOff[i] = 0; while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(16919,"Bad switch %s; must be single letter",s); switch(s[0]){ case 'c': i = GetChkedInt(2,LM_NSIZE,s); cutOff[i] = GetChkedInt(1,1000,s); break; case 'd': if (NextArg()!=STRINGARG) HError(16919,"LMCopy: Input dictionary file name expected"); dEntry=New(&gcheap,sizeof(dictList)); dEntry->fname=GetStrArg(); dEntry->next=NULL; if (dList==NULL) dList=dEntry; else { for (d=dList;d->next!=NULL;d=d->next); d->next=dEntry; } break; case 'f': strcpy(fmt,GetStrArg()); for (c=fmt; *c!=0; *c=toupper(*c), c++); if (strcmp(fmt, LM_TXT_TEXT)==0) saveFmt = LMF_TEXT; else if (strcmp(fmt, LM_TXT_BINARY)==0) saveFmt = LMF_BINARY; else if (strcmp(fmt, LM_TXT_ULTRA)==0) saveFmt = LMF_ULTRA; else HError(16919,"Unrecognised LM format, should be one of [%s, %s, %s]", LM_TXT_TEXT, LM_TXT_BINARY, LM_TXT_ULTRA); break; case 'm': remDup=FALSE; break; case 'n': nSize = GetChkedInt(1,LM_NSIZE,s); break; case 'o': firstOnly=TRUE; break; case 'u': if (NextArg()!=STRINGARG) HError(16919,"LMCopy: Unigram file name expected"); uniFn = GetStrArg(); break; case 'v': if (NextArg()!=STRINGARG) HError(16919,"LMCopy: Dictionary output file name expected"); outDictFn = GetStrArg(); break; case 'w': if (NextArg() != STRINGARG) HError(16919,"LPlex: Word list file name expected"); wlistFN = GetStrArg(); break; case 'T': trace = GetChkedInt(0,077, s); break; default: HError(16919,"LMPlex: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) /* load the language model */ HError(16919, "Input language model filename expected"); srcFN = GetStrArg(); if (NextArg()!=STRINGARG) /* load the language model */ HError(16919, "Output language model filename expected"); tgtFN= GetStrArg(); if (wlistFN!=NULL) { InitVocab(&vocab); if(ReadDict(wlistFN,&vocab) < SUCCESS) HError(16913,"Could not read dict in %s", wlistFN); if (trace&T_TOP) { printf("Loaded %d words from %s\n",vocab.nwords,wlistFN); fflush(stdout); } voc = &vocab; CreateWordList(wlistFN,&wlist,10); lm = LoadLangModel(srcFN,&wlist,1.0,LMP_FLOAT|LMP_COUNT,&langHeap); } else { voc = NULL; lm = LoadLangModel(srcFN,NULL,1.0,LMP_FLOAT|LMP_COUNT,&langHeap); } if (trace&T_TOP) { printf("Loaded model from %s\n",srcFN); fflush(stdout); } if (lm->probType==LMP_COUNT) { RebuildLM(lm, cutOff, NULL, LMP_FLOAT); /* GLM there was no threshold before! */ } if (uniFn!=NULL) ReplaceUnigrams(uniFn,lm); if (nSize>0 && nSize<lm->nSize) lm->nSize = nSize; #ifdef HTK_CRYPT if (lm->encrypt && saveFmt==LMF_TEXT) saveFmt = LMF_BINARY; #endif for (i=1;i<=lm->nSize;i++) lm->gInfo[i].fmt = (i==1) ? LMF_TEXT : saveFmt; SaveLangModel(tgtFN,lm); if (trace&T_TOP) { printf("Wrote model to %s\n",tgtFN); fflush(stdout); } if (outDictFn) { MakeDictionary(outDictFn,dList,voc); } Exit(EXIT_SUCCESS); return EXIT_SUCCESS; /* never reached -- make compiler happy */ }
/* main func */ int mainHCompV(int argc, char *argv[]) { static int ft=1; char *datafn, *s; void SetCovs(void); void PutVFloor(void); SpkrAcc *sa = NULL; zwangModify(); if(InitShell(argc,argv,hcompv_version,hcompv_vc_id)<SUCCESS) HError(2000,"HCompV: InitShell failed"); if(ft) { if(isMemInit==0) { InitMem(); isMemInit=1; } InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(2000,"HCompV: InitParm failed"); ft=0; CreateHeap(&iStack,"InBuf", MSTAK, 1, 0.5, 100000, LONG_MAX); } zwangHMemGetConf(); zwangHWaveGetConf(); zwangHLabelGetConf(); zwangHMathGetConf(); zwangHSigPGetConf(); zwangHAudioGetConf(); zwangHVQGetConf(); zwangHModelGetConf(); zwangHParmGetConf(); SetConfParms(); CreateHMMSet(&hset,&gstack,FALSE); pathPattern[0]='\0'; while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(2019,"HCompV: Bad switch %s; must be single letter",s); switch(s[0]){ case 'f': if (NextArg() != FLOATARG) HError(2019,"HCompV: Variance floor scale expected"); vFloorScale = GetChkedFlt(0.0,100.0,s); break; case 'l': if (NextArg() != STRINGARG) HError(2019,"HCompV: Segment label expected"); segLab = GetStrArg(); break; case 'm': meanUpdate = TRUE; break; case 'o': outfn = GetStrArg(); break; case 'v': if (NextArg() != FLOATARG) HError(2019,"HCompV: Minimum variance level expected"); minVar = GetChkedFlt(0.0,100.0,s); break; case 'k': if (NextArg() != STRINGARG) HError(2019,"HCompV: speaker pattern expected"); strcpy(spPattern,GetStrArg()); if (strchr(spPattern,'%')==NULL) HError(2019,"HCompV: Speaker mask invalid"); break; case 'c': if (NextArg() != STRINGARG) HError(2019,"HCompV: CMV output dir expected"); strcpy(cmDir,GetStrArg()); DoCMV = TRUE; break; case 'p': if (NextArg() != STRINGARG) HError(2019,"HCompV: path pattern expected"); strcpy(pathPattern,GetStrArg()); if (strchr(pathPattern,'%')==NULL) HError(2019,"HCompV: Path mask invalid"); break; case 'q': if (NextArg() != STRINGARG) HError(2019,"HCompV: output flags (nmv)"); strcpy(oflags,GetStrArg()); break; case 'B': saveBinary = TRUE; break; case 'F': if (NextArg() != STRINGARG) HError(2019,"HCompV: Data File format expected"); if((dff = Str2Format(GetStrArg())) == ALIEN) HError(-2089,"HCompV: Warning ALIEN Data file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(2019,"HCompV: Label File format expected"); if((lff = Str2Format(GetStrArg())) == ALIEN) HError(-2089,"HCompV: Warning ALIEN Label file format set"); break; case 'H': if (NextArg() != STRINGARG) HError(2019,"HCompV: HMM macro file name expected"); AddMMF(&hset,GetStrArg()); break; case 'I': if (NextArg() != STRINGARG) HError(2019,"HCompV: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'L': if (NextArg()!=STRINGARG) HError(2019,"HCompV: Label file directory expected"); labDir = GetStrArg(); break; case 'M': if (NextArg()!=STRINGARG) HError(2019,"HCompV: Output macro file directory expected"); outDir = GetStrArg(); break; case 'T': if (NextArg() != INTARG) HError(2019,"HCompV: Trace value expected"); trace = GetChkedInt(0,077,s); break; case 'X': if (NextArg()!=STRINGARG) HError(2019,"HCompV: Label file extension expected"); labExt = GetStrArg(); break; default: HError(2019,"HCompV: Unknown switch %s",s); } } /* if not doing CMV, do standard HCompV */ if (DoCMV == FALSE){ if (NextArg()!=STRINGARG) HError(2019,"HCompV: Source HMM file name expected"); hmmfn = GetStrArg(); Initialise(); do { if (NextArg()!=STRINGARG) HError(2019,"HCompV: Training data file name expected"); datafn = GetStrArg(); LoadFile(datafn); } while (NumArgs()>0); SetCovs(); FixGConsts(hmmLink); SaveModel(outfn); if (trace&T_TOP) printf("Output written to directory %s\n",(outDir==NULL)?"./":outDir); if (vFloorScale>0.0) PutVFloor(); } else { /* report export data type */ ReportOutput(); /* init input buffer mem heap */ CreateHeap(&iStack,"BufferIn",MSTAK,1,0.5,100000,5000000); do { if (NextArg()!=STRINGARG){ HError(2019,"HCompV: Training data file name expected"); } datafn = GetStrArg(); /* accumulate stats for current utterance file and update speaker list */ sa = AccGenUtt(spPattern,datafn,sa); salist = UpdateSpkrAccList(salist,sa); /* reset for next utterance */ ClrSpkrAcc(sa); } while (NumArgs()>0); /* compute the means and variances for each speaker */ UpdateMeanVar(salist); /* export NMV for each speaker */ ExportNMV(salist,cmDir,TargetPKStr); } Dispose(hset.hmem,hset.mtab); ResetHeap(&gstack); ResetHeap(&iStack); zwangInitParmClear(); zwangInitShellClear(); //Exit(0); return (0); /* never reached -- make compiler happy */ }
int main(int argc, char *argv[]) { char *s,*lfn,*dfn; void GenSentences(char *latfn, char *dicfn); if(InitShell(argc,argv,hsgen_version,hsgen_vc_id)<SUCCESS) HError(3400,"HSGen: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(3200,"HSGen: InitParm failed"); InitDict(); InitNet(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(3419, "Bad switch %s; must be single letter", s); switch(s[0]){ case 's': stats = TRUE; break; case 'l': lnum = TRUE; break; case 'n': ngen = GetChkedInt(1,1000000,s); break; case 'q': quiet = TRUE; break; case 'T': trace = GetChkedInt(0,07,s); break; default: HError(3419, "Unknown switch %s", s); } } if (NextArg()!=STRINGARG) HError(3419, "lattice file name expected"); lfn = GetStrArg(); if (NextArg()!=STRINGARG) HError(3419, "dictionary file name expected"); dfn = GetStrArg(); GenSentences(lfn,dfn); if(InitShell(argc,argv,hsgen_version,hsgen_vc_id)<SUCCESS) HError(3400,"HSGen: InitShell failed"); ResetNet(); ResetDict(); ResetParm(); ResetModel(); ResetVQ(); ResetAudio(); ResetWave(); ResetSigP(); ResetMath(); ResetLabel(); ResetMem(); ResetShell(); Exit(0); return (0); /* never reached -- make compiler happy */ }
int mainHInit(int argc, char *argv[]) { static int ft=1; char *datafn, *s; int nSeg; zwangModify(); if(InitShell(argc,argv,hinit_version,hinit_vc_id)<SUCCESS) HError(2100,"HInit: InitShell failed"); if(ft) { if(isMemInit==0) { InitMem(); isMemInit=1; } InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(2100,"HInit: InitParm failed"); InitTrain(); InitUtil(); ft=0; /* Stacks for global structures requiring memory allocation */ CreateHeap(&segmentStack,"SegStore", MSTAK, 1, 0.0, 100000, LONG_MAX); CreateHeap(&sequenceStack,"SeqStore", MSTAK, 1, 0.0, 1000, 1000); CreateHeap(&clustSetStack,"ClustSetStore", MSTAK, 1, 0.0, 1000, 1000); CreateHeap(&transStack,"TransStore", MSTAK, 1, 0.0, 1000, 1000); CreateHeap(&traceBackStack,"TraceBackStore", MSTAK, 1, 0.0, 1000, 1000); CreateHeap(&bufferStack,"BufferStore", MSTAK, 1, 0.0, 1000, 1000); } zwangHMemGetConf(); zwangHWaveGetConf(); zwangHLabelGetConf(); zwangHMathGetConf(); zwangHSigPGetConf(); zwangHAudioGetConf(); zwangHVQGetConf(); zwangHModelGetConf(); zwangHParmGetConf(); zwangHTrainGetConf(); zwangHUtilGetConf(); SetConfParms(); CreateHMMSet(&hset,&gstack,FALSE); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(2119,"HInit: Bad switch %s; must be single letter",s); switch(s[0]){ case 'e': epsilon = GetChkedFlt(0.0,1.0,s); break; case 'i': maxIter = GetChkedInt(0,100,s); break; case 'l': if (NextArg() != STRINGARG) HError(2119,"HInit: Segment label expected"); segLab = GetStrArg(); break; case 'm': minSeg = GetChkedInt(1,1000,s); break; case 'n': newModel = FALSE; break; case 'o': outfn = GetStrArg(); break; case 'u': SetuFlags(); break; case 'v': minVar = GetChkedFlt(0.0,10.0,s); break; case 'w': mixWeightFloor = MINMIX * GetChkedFlt(0.0,10000.0,s); break; case 'B': saveBinary = TRUE; break; case 'F': if (NextArg() != STRINGARG) HError(2119,"HInit: Data File format expected"); if((dff = Str2Format(GetStrArg())) == ALIEN) HError(-2189,"HInit: Warning ALIEN Data file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(2119,"HInit: Label File format expected"); if((lff = Str2Format(GetStrArg())) == ALIEN) HError(-2189,"HInit: Warning ALIEN Label file format set"); break; case 'H': if (NextArg() != STRINGARG) HError(2119,"HInit: HMM macro file name expected"); AddMMF(&hset,GetStrArg()); break; case 'I': if (NextArg() != STRINGARG) HError(2119,"HInit: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'L': if (NextArg()!=STRINGARG) HError(2119,"HInit: Label file directory expected"); labDir = GetStrArg(); break; case 'M': if (NextArg()!=STRINGARG) HError(2119,"HInit: Output macro file directory expected"); outDir = GetStrArg(); break; case 'T': if (NextArg() != INTARG) HError(2119,"HInit: Trace value expected"); trace = GetChkedInt(0,01777,s); break; case 'X': if (NextArg()!=STRINGARG) HError(2119,"HInit: Label file extension expected"); labExt = GetStrArg(); break; default: HError(2119,"HInit: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) HError(2119,"HInit: source HMM file name expected"); hmmfn = GetStrArg(); Initialise(); do { if (NextArg()!=STRINGARG) HError(2119,"HInit: training data file name expected"); datafn = GetStrArg(); LoadFile(datafn); } while (NumArgs()>0); nSeg = NumSegs(segStore); if (nSeg < minSeg) HError(2121,"HInit: Too Few Observation Sequences [%d]",nSeg); EstimateModel(); SaveModel(outfn); Dispose(hset.hmem,hset.mtab); ResetHeap(&gstack); ResetHeap(&segmentStack); ResetHeap(&sequenceStack); ResetHeap(&clustSetStack); ResetHeap(&transStack); ResetHeap(&traceBackStack); ResetHeap(&bufferStack); zwangInitParmClear(); zwangInitShellClear(); return (0); /* never reached -- make compiler happy */ }
int main(int argc, char **argv) { cst_voice *v; const char *filename; const char *outtype; int i; float durs; int flite_verbose, flite_loop, flite_bench; int explicit_filename, explicit_text, explicit_phones; #define ITER_MAX 3 int bench_iter = 0; cst_features *extra_feats; InitThreads(HT_NOMONITOR); // enable msg driven monitoring if(InitShell(argc,argv,version)<SUCCESS) return FAIL; InitMem(); InitLabel(); InitMath(); InitSigP(); InitUtil(); InitWave(); InitAudio(); filename = 0; outtype = "play"; /* default is to play */ flite_verbose = FALSE; flite_loop = FALSE; flite_bench = FALSE; explicit_text = explicit_filename = explicit_phones = FALSE; extra_feats = new_features(); flite_init(); for (i=1; i<argc; i++) { if (cst_streq(argv[i],"--version")) { flite_version(); return 1; } else if (cst_streq(argv[i],"-h") || cst_streq(argv[i],"--help") || cst_streq(argv[i],"-?")) flite_usage(); else if (cst_streq(argv[i],"-v")) flite_verbose = TRUE; else if (cst_streq(argv[i],"-l")) flite_loop = TRUE; else if (cst_streq(argv[i],"-b")) { flite_bench = TRUE; break; /* ignore other arguments */ } else if ((cst_streq(argv[i],"-o")) && (i+1 < argc)) { outtype = argv[i+1]; i++; } else if (cst_streq(argv[i],"-f") && (i+1 < argc)) { filename = argv[i+1]; explicit_filename = TRUE; i++; } else if ((cst_streq(argv[i],"-set") || cst_streq(argv[i],"-s")) && (i+1 < argc)) { ef_set(extra_feats,argv[i+1],0); i++; } else if (cst_streq(argv[i],"--seti") && (i+1 < argc)) { ef_set(extra_feats,argv[i+1],"int"); i++; } else if (cst_streq(argv[i],"--setf") && (i+1 < argc)) { ef_set(extra_feats,argv[i+1],"float"); i++; } else if (cst_streq(argv[i],"--sets") && (i+1 < argc)) { ef_set(extra_feats,argv[i+1],"string"); i++; } else if (cst_streq(argv[i],"-p") && (i+1 < argc)) { filename = argv[i+1]; explicit_phones = TRUE; i++; } else if (cst_streq(argv[i],"-t") && (i+1 < argc)) { filename = argv[i+1]; explicit_text = TRUE; i++; } else if (filename) outtype = argv[i]; else filename = argv[i]; } if (filename == NULL) filename = "-"; /* stdin */ v = register_cmu_us_kal16(NULL); feat_copy_into(extra_feats,v->features); durs = 0.0; if (flite_bench) { outtype = "none"; filename = "A whole joy was reaping, but they've gone south, you should fetch azure mike."; explicit_text = TRUE; } loop: if (explicit_phones) durs = flite_phones_to_speech(filename,v,outtype); else if ((strchr(filename,' ') && !explicit_filename) || explicit_text) durs = flite_text_to_speech(filename,v,outtype); else durs = flite_file_to_speech(filename,v,outtype); if (flite_loop || (flite_bench && bench_iter++ < ITER_MAX)) goto loop; delete_features(extra_feats); unregister_cmu_us_kal16(v); return 0; }
int main(int argc, char *argv[]) { char *datafn, *s; int stream = 0; void Initialise(char *datafn); void LoadFile(char *fn); void CalcMeanCov(Sequence seq[], int s); void ClusterVecs(Sequence seq[], int s); void WriteVQTable(ClusterSet *cs[], char *fn); if(InitShell(argc,argv,hquant_version,hquant_vc_id)<SUCCESS) HError(2500,"HQuant: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(2500,"HQuant: InitParm failed"); InitTrain(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); InitStreamVars(); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(2519,"HQuant: Bad switch %s; must be single letter",s); switch(s[0]){ case 'd': if ( ck != NULLC) HError(2519,"HQuant: Specify one of -d or -f, not both"); ck = INVDIAGC; break; case 'f': if ( ck != NULLC) HError(2519,"HQuant: Specify one of -d or -f, not both"); ck = FULLC; break; case 'g': globClustVar = TRUE; break; case 'l': if (NextArg() != STRINGARG) HError(2519,"HQuant: Segment label expected"); segLab = GetStrArg(); break; case 'n': if (NextArg() != INTARG) HError(2519,"HQuant: Stream number expected"); stream = GetChkedInt(1,SMAX,s); if (NextArg() != INTARG) HError(2519,"HQuant: Codebook size expected"); cbSizes[stream]= GetChkedInt(1,32768,s); break; case 's': if (NextArg() != INTARG) HError(2519,"HQuant: Number of streams expected"); swidth[0] = GetChkedInt(1,SMAX,s); break; case 't': tType = binTree; break; case 'w': if (NextArg() != INTARG) HError(2519,"HQuant: Stream number expected"); stream = GetChkedInt(1,SMAX,s); if(swidth[0] < stream) swidth[0] = stream; widthSet = TRUE; if (NextArg() != INTARG) HError(2519,"HQuant: Stream width expected"); swidth[stream]= GetChkedInt(1,256,s); break; case 'F': if (NextArg() != STRINGARG) HError(2519,"HQuant: Data File format expected"); if((dff = Str2Format(GetStrArg())) == ALIEN) HError(-2589,"HQuant: Warning ALIEN Data file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(2519,"HQuant: Label File format expected"); if((lff = Str2Format(GetStrArg())) == ALIEN) HError(-2589,"HQuant: Warning ALIEN Label file format set"); break; case 'I': if (NextArg() != STRINGARG) HError(2519,"HQuant: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'L': if (NextArg()!=STRINGARG) HError(2519,"HQuant: Label file directory expected"); labDir = GetStrArg(); break; case 'T': if (NextArg() != INTARG) HError(2519,"HQuant: Trace value expected"); trace = GetChkedInt(0,077,s); break; case 'X': if (NextArg()!=STRINGARG) HError(2519,"HQuant: Label file extension expected"); labExt = GetStrArg(); break; default: HError(2519,"HQuant: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) HError(2519,"HQuant: Output VQ table file name expected"); vqfn = GetStrArg(); if (NextArg()!=STRINGARG) HError(2519,"HQuant: Training data file name expected"); datafn = GetStrArg(); Initialise(datafn); LoadFile(datafn); while (NumArgs()>0) { if (NextArg()!=STRINGARG) HError(2519,"HQuant: Training data file name expected"); datafn = GetStrArg(); LoadFile(datafn); } for (stream=1;stream<=swidth[0];stream++){ if (trace&T_TOP) printf("%s-clustering data for stream %d (width %d)\n", (tType==linTree)?"Flat":"Tree",stream,swidth[stream]); CalcMeanCov(dSeq,stream); ClusterVecs(dSeq,stream); } WriteVQTable(cs,vqfn); ResetTrain(); ResetParm(); ResetModel(); ResetVQ(); ResetAudio(); ResetWave(); ResetSigP(); ResetMath(); ResetLabel(); ResetMem(); ResetShell(); Exit(0); return (0); /* never reached -- make compiler happy */ }
/* SetConfParms: set conf parms relevant to HCompV */ void SetConfParms(void) { int i; Boolean b; double f; char buf[MAXSTRLEN]; nParm = GetConfig("HEREST", TRUE, cParm, MAXGLOBS); if (nParm>0) { if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfFlt(cParm,nParm,"VARFLOORPERCENTILE",&f)) varFloorPercent = f; if (GetConfBool(cParm,nParm,"SAVEBINARY",&b)) saveBinary = b; if (GetConfBool(cParm,nParm,"BINARYACCFORMAT",&b)) ldBinary = b; /* 2-model reestimation alignment model set */ if (GetConfStr(cParm,nParm,"ALIGNMODELMMF",buf)) { strcpy(al_hmmMMF,buf); al_hmmUsed = TRUE; } if (GetConfStr(cParm,nParm,"ALIGNHMMLIST",buf)) { strcpy(al_hmmLst,buf); al_hmmUsed = TRUE; } /* allow multiple individual model files */ if (GetConfStr(cParm,nParm,"ALIGNMODELDIR",buf)) { strcpy(al_hmmDir,buf); al_hmmUsed = TRUE; } if (GetConfStr(cParm,nParm,"ALIGNMODELEXT",buf)) { strcpy(al_hmmExt,buf); al_hmmUsed = TRUE; } if (GetConfStr(cParm,nParm,"ALIGNXFORMEXT",buf)) { xfInfo.alXFormExt = CopyString(&hmmStack,buf); } if (GetConfStr(cParm,nParm,"ALIGNXFORMDIR",buf)) { xfInfo.alXFormDir = CopyString(&hmmStack,buf); } if (GetConfStr(cParm,nParm,"INXFORMMASK",buf)) { xfInfo.inSpkrPat = CopyString(&hmmStack,buf); } if (GetConfStr(cParm,nParm,"PAXFORMMASK",buf)) { xfInfo.paSpkrPat = CopyString(&hmmStack,buf); } if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { labFileMask = (char*)malloc(strlen(buf)+1); strcpy(labFileMask, buf); } if (GetConfStr(cParm,nParm,"UPDATEMODE",buf)) { if (!strcmp (buf, "DUMP")) updateMode = UPMODE_DUMP; else if (!strcmp (buf, "UPDATE")) updateMode = UPMODE_UPDATE; else if (!strcmp (buf, "BOTH")) updateMode = UPMODE_BOTH; else HError(2319, "Unknown UPDATEMODE specified (must be DUMP, UPDATE or BOTH)"); } } } void ReportUsage(void) { printf("\nUSAGE: HERest [options] hmmList dataFiles...\n\n"); printf(" Option Default\n\n"); printf(" -a Use an input linear transform off\n"); printf(" -c f Mixture pruning threshold 10.0\n"); printf(" -d s dir to find hmm definitions current\n"); printf(" -h s set output speaker name pattern *.%%%%%%\n"); printf(" to s, optionally set input and parent patterns\n"); printf(" -l N set max files per speaker off\n"); printf(" -m N set min examples needed per model 3\n"); printf(" -o s extension for new hmm files as src\n"); printf(" -p N set parallel mode to N off\n"); printf(" -r Enable Single Pass Training... \n"); printf(" ...using two parameterisations off\n"); printf(" -s s print statistics to file s off\n"); printf(" -t f [i l] set pruning to f [inc limit] inf\n"); printf(" -u tmvwap update t)rans m)eans v)ars w)ghts tmvw\n"); printf(" a)daptation xform p)rior used \n"); printf(" s)semi-tied xform \n"); printf(" -v f set minimum variance to f 0.0\n"); printf(" -w f set mix weight floor to f*MINMIX 0.0\n"); printf(" -x s extension for hmm files none\n"); printf(" -z s Save all xforms to TMF file s TMF\n"); PrintStdOpts("BEFGHIJKLMSTX"); printf("\n\n"); } void SetuFlags(void) { char *s; s=GetStrArg(); uFlags=(UPDSet) 0; while (*s != '\0') switch (*s++) { case 't': uFlags = (UPDSet) (uFlags+UPTRANS); break; case 'm': uFlags = (UPDSet) (uFlags+UPMEANS); break; case 'v': uFlags = (UPDSet) (uFlags+UPVARS); break; case 'w': uFlags = (UPDSet) (uFlags+UPMIXES); break; case 's': uFlags = (UPDSet) (uFlags+UPSEMIT); break; case 'a': uFlags = (UPDSet) (uFlags+UPXFORM); break; case 'p': uFlags = (UPDSet) (uFlags+UPMAP); break; default: HError(2320,"SetuFlags: Unknown update flag %c",*s); break; } } /* ScriptWord: return next word from script */ char *ScriptWord(FILE *script, char *scriptBuf) { int ch,qch,i; i=0; ch=' '; while (isspace(ch)) ch = fgetc(script); if (ch==EOF) { scriptBuf=NULL; return NULL; } if (ch=='\'' || ch=='"'){ qch = ch; ch = fgetc(script); while (ch != qch && ch != EOF) { scriptBuf[i++] = ch; ch = fgetc(script); } if (ch==EOF) HError(5051,"ScriptWord: Closing quote missing in script file"); } else { do { scriptBuf[i++] = ch; ch = fgetc(script); }while (!isspace(ch) && ch != EOF); } scriptBuf[i] = '\0'; return scriptBuf; } void CheckUpdateSetUp() { AdaptXForm *xf;
int main(int argc, char *argv[]) { int i; char *s,*c,*e; InitShell(argc,argv,lplex_version,lplex_vc_id); InitMem(); InitMath(); InitWave(); InitLabel(); InitWMap(); InitCMap(); InitLUtil(); InitLModel(); InitPCalc(); InitPMerge(); SetConfParms(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); nLModel = 1; for (i=1; i<=LM_NSIZE; i++) cutOff[i] = 0, wdThresh[i] = 0.0; CreateHeap(&permHeap, "permHeap", MSTAK, 1, 1.0, 4000, 20000); CreateHeap(&tempHeap, "tempHeap", MSTAK, 1, 1.0, 8000, 40000); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(16619,"Bad switch %s; must be single letter",s); switch(s[0]){ case 'c': i = GetChkedInt(2,LM_NSIZE,s); cutOff[i] = GetChkedInt(1,1000,s); break; case 'd': i = GetChkedInt(2,LM_NSIZE,s); wdThresh[i] = GetChkedFlt(0.0,1E10,s); break; case 'e': if (NextArg() != STRINGARG) HError(16619,"LPlex: Eq Class Name Expected"); c = GetStrArg(); if (NextArg() != STRINGARG) HError(16619,"LPlex: Eq Label Name Expected"); e = GetStrArg(); AddEquiv(c,e); break; case 'i': if (NextArg()!=FLOATARG) HError(16619,"LPlex: Interpolation weight expected"); lmInfo[nLModel].weight = GetChkedFlt(0.0,1.0,s); if (NextArg()!=STRINGARG) HError(16619,"LPlex: Interpolation LM filename expected"); lmInfo[nLModel].fn = GetStrArg(); nLModel++; break; case 'n': testInfo[numTests++] = GetChkedInt(1, 10, s); break; case 'o': printOOV = TRUE; break; case 's': if (NextArg() != STRINGARG) HError(16619,"LPlex: Prob Stream file name expected"); outStreamFN = GetStrArg(); break; case 't': streamMode = TRUE; break; case 'u': skipOOV = FALSE; break; case 'w': if (NextArg() != STRINGARG) HError(16619,"LPlex: Word list file name expected"); wlistFN = GetStrArg(); break; case 'z': if (NextArg() != STRINGARG) HError(16619,"LPlex: New null class name expected"); nulName = GetStrArg(); break; case 'G': if (NextArg() != STRINGARG) HError(16619,"Label File format expected"); if((lff = Str2Format(GetStrArg())) == ALIEN) HError(16619,"Warning ALIEN Label file format set"); break; case 'I': if (NextArg() != STRINGARG) HError(16619,"MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'T': trace = GetChkedInt(0,077, s); break; default: HError(16619,"LPlex: Unknown switch %s",s); } } #ifdef HTK_TRANSCRIBER if (trace&T_PROB) trace=trace^T_PROB; #endif if (NextArg()!=STRINGARG) /* load the language model */ HError(16619, "Language model filename expected"); lmInfo[0].fn = GetStrArg(); Initialise(); ProcessFiles(); Exit(EXIT_SUCCESS); return EXIT_SUCCESS; /* never reached -- make compiler happy */ }
int main(int argc, char *argv[]) { int i; char *c,*s,*fn; char sBuf[256],fmt[256]; void Initialise(void); void ProcessText(char *fn,bool lastFile); bool Exists(char *fn); BackOffLM *CombineModels(MemHeap *heap,LMInfo *lmi,int nLModel,int nSize,WordMap *wl) ; InitShell(argc,argv,ladapt_version,ladapt_vc_id); InitMem(); InitMath(); InitWave(); InitLabel(); InitLUtil(); InitWMap(); InitGBase(); InitLModel(); InitPCalc(); InitPMerge(); SetConfParms(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(EXIT_SUCCESS); InitBuildInfo(&binfo); binfo.dctype = DC_ABSOLUTE; nLModel = 1; while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(16419,"Bad switch %s; must be single letter",s); switch(s[0]){ case 'a': newWords = GetChkedInt(10,10000000,s); break; case 'b': ngbSize = GetChkedInt(10,10000000,s); break; case 'c': i = GetChkedInt(2,LM_NSIZE,s); binfo.cutOff[i] = GetChkedInt(0,1000,s); break; case 'd': if (NextArg()!=STRINGARG) HError(16419,"Gram base root file name expected"); rootFN = GetStrArg(); break; case 'f': strcpy(fmt, GetStrArg()); for (c=fmt; *c; *c=toupper(*c), c++); /* To uppercase */ if (strcmp(fmt, LM_TXT_TEXT)==0) binfo.saveFmt = LMF_TEXT; else if (strcmp(fmt, LM_TXT_BINARY)==0) binfo.saveFmt = LMF_BINARY; else if (strcmp(fmt, LM_TXT_ULTRA)==0) binfo.saveFmt = LMF_ULTRA; else HError(16419,"Unrecognised LM format, should be one of [%s, %s, %s]", LM_TXT_TEXT, LM_TXT_BINARY, LM_TXT_ULTRA); break; case 'g': processText = FALSE; break; case 'i': if (NextArg()!=FLOATARG) HError(16419,"Interpolation weight expected"); lmInfo[nLModel].weight = GetChkedFlt(0.0,1.0,s); if (NextArg()!=STRINGARG) HError(16419,"Interpolation LM filename expected"); lmInfo[nLModel].fn = GetStrArg(); nLModel++; break; case 'j': i = GetChkedInt(2,LM_NSIZE,s); binfo.wdThresh[i] = GetChkedFlt(0.0,1E10,s); break; case 'n': nSize = GetChkedInt(1, MAXNG, s); break; #ifdef HTK_TRANSCRIBER case 's': if (NextArg()!=STRINGARG) HError(16419,"Gram file text source descriptor expected"); txtSrc = GetStrArg(); break; case 't': binfo.dctype = DC_KATZ; break; #endif case 'w': if (NextArg()!=STRINGARG) HError(16419,"Word list file name expected"); wlistFN = GetStrArg(); break; #ifndef HTK_TRANSCRIBER case 'x': binfo.ptype = LMP_COUNT; break; #endif case 'T': trace = GetChkedInt(0,077,s); break; default: HError(16419,"LAdapt: Unknown switch %s",s); } } #ifdef HTK_TRANSCRIBER if (nLModel==1) { /* must interpolate with at least one model */ HError(16419,"LAdapt: at least one model must be specified with -i option"); } if (binfo.saveFmt==LMF_TEXT) { /* save fomat cannot be TEXT */ binfo.saveFmt=LMF_BINARY; } #endif if (NextArg() != STRINGARG) HError(16419,"LAdapt: language model file name expected"); outFN = CopyString(&gstack,GetStrArg()); Initialise(); if (processText) { if (NextArg() != STRINGARG) ProcessText(NULL,TRUE); /* input from stdin */ else while (NextArg() == STRINGARG) { /* !! copy string argument since it gets overwritten by NextArg() when reading from script file */ fn = CopyString(&gstack,GetStrArg()); ProcessText(fn,NextArg() != STRINGARG); } if (NumArgs() != 0) HError(-16419,"LAdapt: unused args left on cmd line"); for (i=0; i<stdBuf.ngb->fndx; i++) { sprintf(sBuf,"%s.%d",stdBuf.ngb->fn,i); AddInputGFile(&inSet,sBuf,1.0); } ResetHeap(&langHeap); } else { for (i=0; i<MAX_NGRAM_FILES; i++) { sprintf(sBuf,"%s.%d",rootFN,i); if (!Exists(sBuf)) break; AddInputGFile(&inSet,sBuf,1.0); } if (i==MAX_NGRAM_FILES) { HError(-16419, "LAdapt: Only %d n-gram files read (recompile with different setting\nof MAX_NGRAM_FILES"); } } if (nLModel==1) { adpLM = GenerateModel(&langHeap,&binfo); } else { if (binfo.ptype==LMP_COUNT) binfo.ptype = LMP_FLOAT; newLM = GenerateModel(&langHeap,&binfo); lmInfo[0].lm = newLM; lmInfo[0].fn = "unknown"; /* combine all models into one */ adpLM = CombineModels(&langHeap,lmInfo,nLModel,nSize,tgtVoc); } #ifdef HTK_TRANSCRIBER #ifdef HTK_CRYPT adpLM->encrypt = TRUE; /* force to write encrypted model */ #endif #endif SaveLangModel(outFN,adpLM); Exit(EXIT_SUCCESS); return EXIT_SUCCESS; /* never reached -- make compiler happy */ }
int main(int argc, char *argv[]) { char *s; char *labfn; int numUtt; void Initialise(void); void DoGeneration(char *labfn); if (InitShell(argc, argv, hmgens_version, hmgens_vc_id) < SUCCESS) HError(2300, "HMGenS: InitShell failed"); InitMem(); InitMath(); InitSigP(); InitWave(); InitLabel(); InitModel(); if (InitParm() < SUCCESS) HError(2300, "HMGenS: InitParm failed"); InitUtil(); InitFB(); InitAdapt(&xfInfo_hmm, &xfInfo_dur); InitMap(); InitGen(); if (NumArgs() == 0) ReportUsage(); CreateHeap(&genStack, "genStore", MSTAK, 1, 1.0, 80000, 400000); CreateHeap(&uttStack, "uttStore", MSTAK, 1, 0.5, 100, 1000); CreateHeap(&fbInfoStack, "FBInfoStore", MSTAK, 1, 0.5, 100, 1000); CreateHeap(&hmmStack, "HmmStore", MSTAK, 1, 1.0, 50000, 500000); CreateHeap(&dmStack, "dmStore", MSTAK, 1, 1.0, 50000, 500000); SetConfParms(); CreateHMMSet(&hmset, &hmmStack, TRUE); CreateHMMSet(&dmset, &dmStack, TRUE); utt = (UttInfo *) New(&uttStack, sizeof(UttInfo)); genInfo = (GenInfo *) New(&genStack, sizeof(GenInfo)); fbInfo = (FBInfo *) New(&fbInfoStack, sizeof(FBInfo)); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s) != 1) HError(9919, "HMGenS: Bad switch %s; must be single letter", s); switch (s[0]) { case 'a': xfInfo_hmm.useInXForm = TRUE; break; case 'b': xfInfo_dur.useInXForm = TRUE; break; case 'c': if (NextArg() != INTARG) HError(2119, "HMGenS: Parameter generation algorithm type value expected"); type = (ParmGenType) GetChkedInt(CHOLESKY, FB, s); break; case 'd': if (NextArg() != STRINGARG) HError(2319, "HMGenS: HMM definition directory expected"); hmmDir = GetStrArg(); break; case 'e': useAlign = TRUE; break; case 'f': frameRate = (HTime) GetChkedFlt(0.0, 10000000.0, s); break; case 'g': minFrwdP = GetChkedFlt(0.0, 1000.0, s); break; case 'h': if (NextArg() != STRINGARG) HError(1, "Speaker name pattern expected"); xfInfo_hmm.inSpkrPat = xfInfo_dur.inSpkrPat = GetStrArg(); if (NextArg() == STRINGARG) xfInfo_hmm.paSpkrPat = xfInfo_dur.paSpkrPat = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319, "HMGenS: cannot have -h as the last option"); break; case 'm': modelAlign = TRUE; break; case 'n': if (NextArg() != STRINGARG) HError(2319, "HMGenS: duration model definition directory expected"); dmDir = GetStrArg(); break; case 'p': outPdf = TRUE; break; case 'r': if (NextArg() != FLOATARG) HError(2119, "HMGenS: Speaking rate value (float) expected"); speakRate = GetChkedFlt(0.0, 3.0, s); break; case 's': stateAlign = TRUE; break; case 't': pruneInit = GetChkedFlt(0.0, 1.0E20, s); if (NextArg() == FLOATARG || NextArg() == INTARG) { pruneInc = GetChkedFlt(0.0, 1.0E20, s); pruneLim = GetChkedFlt(0.0, 1.0E20, s); } else { pruneInc = 0.0; pruneLim = pruneInit; } break; case 'v': MSDthresh = GetChkedFlt(0.0, 1.0, s); break; case 'x': if (NextArg() != STRINGARG) HError(2319, "HMGenS: HMM file extension expected"); hmmExt = GetStrArg(); break; case 'y': if (NextArg() != STRINGARG) HError(2319, "HMGenS: duration model file extension expected"); dmExt = GetStrArg(); break; case 'B': inBinary = TRUE; break; case 'E': if (NextArg() != STRINGARG) HError(2319, "HMGenS: parent transform directory expected"); xfInfo_hmm.usePaXForm = TRUE; xfInfo_hmm.paXFormDir = GetStrArg(); if (NextArg() == STRINGARG) xfInfo_hmm.paXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319, "HMGenS: cannot have -E as the last option"); break; case 'G': if (NextArg() != STRINGARG) HError(2119, "HMGenS: Label File format expected"); if ((lff = Str2Format(GetStrArg())) == ALIEN) HError(-2189, "HMGenS: Warning ALIEN Label file format set"); break; case 'H': if (NextArg() != STRINGARG) HError(3219, "HMGenS: HMM MMF File name expected"); AddMMF(&hmset, GetStrArg()); break; case 'I': if (NextArg() != STRINGARG) HError(2319, "HMGenS: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'J': if (NextArg() != STRINGARG) HError(2319, "HMGenS: input transform directory expected"); AddInXFormDir(&hmset, GetStrArg()); if (NextArg() == STRINGARG) xfInfo_hmm.inXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319, "HMGenS: cannot have -J as the last option"); break; case 'L': if (NextArg() != STRINGARG) HError(2319, "HMGenS: Label file directory expected"); labDir = GetStrArg(); break; case 'M': if (NextArg() != STRINGARG) HError(2319, "HMGenS: Output macro file directory expected"); genDir = GetStrArg(); break; case 'N': if (NextArg() != STRINGARG) HError(3219, "HMGenS: Duration MMF File name expected"); AddMMF(&dmset, GetStrArg()); break; case 'T': if (NextArg() != INTARG) HError(2119, "HMGenS: Trace value expected"); trace = GetChkedInt(0, 0002, s); break; case 'W': if (NextArg() != STRINGARG) HError(2319, "HMGenS: parent duration transform directory expected"); xfInfo_dur.usePaXForm = TRUE; xfInfo_dur.paXFormDir = GetStrArg(); if (NextArg() == STRINGARG) xfInfo_dur.paXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319, "HMGenS: cannot have -W as the last option"); break; case 'X': if (NextArg() != STRINGARG) HError(2319, "HMGenS: Label file extension expected"); labExt = GetStrArg(); break; case 'Y': if (NextArg() != STRINGARG) HError(2319, "HMGenS: input duration transform directory expected"); AddInXFormDir(&dmset, GetStrArg()); if (NextArg() == STRINGARG) { if (xfInfo_dur.inXFormExt == NULL) xfInfo_dur.inXFormExt = GetStrArg(); else HError(2319, "MGenS: only one input duration transform extension may be specified"); } if (NextArg() != SWITCHARG) HError(2319, "HMGenS: cannot have -Y as the last option"); break; default: HError(9919, "HMGenS: Unknown switch %s", s); } } if (NextArg() != STRINGARG) HError(2319, "HMGenS: file name of vocabulary list expected"); Initialise(); InitUttInfo(utt, FALSE); numUtt = 1; if (trace & T_TOP) SetTraceGen(); /* generate parameter sequences */ do { if (NextArg() != STRINGARG) HError(2319, "HMGenS: data file name expected"); labfn = GetStrArg(); /* track speakers */ if (UpdateSpkrStats(&hmset, &xfInfo_hmm, labfn)) { if (!xfInfo_hmm.useInXForm) xfInfo_hmm.inXForm = NULL; } if (UpdateSpkrStats(&dmset, &xfInfo_dur, labfn)) { if (!xfInfo_dur.useInXForm) xfInfo_dur.inXForm = NULL; else ResetDMMPreComps(&dmset); } fbInfo->xfinfo_hmm = &xfInfo_hmm; fbInfo->xfinfo_dur = &xfInfo_dur; fbInfo->inXForm_hmm = xfInfo_hmm.inXForm; fbInfo->inXForm_dur = xfInfo_dur.inXForm; fbInfo->al_inXForm_hmm = xfInfo_hmm.al_inXForm; fbInfo->al_inXForm_dur = xfInfo_dur.al_inXForm; fbInfo->paXForm_hmm = xfInfo_hmm.paXForm; fbInfo->paXForm_dur = xfInfo_dur.paXForm; /* generate parameters */ DoGeneration(labfn); numUtt++; } while (NumArgs() > 0); if (trace & T_TOP) { printf("Generation complete - average log prob per frame = %e (%d frames)\n", totalPr / totalT, totalT); } /* Reset stacks */ Dispose(&fbInfoStack, fbInfo); Dispose(&genStack, genInfo); Dispose(&uttStack, utt); ResetHeap(&fbInfoStack); ResetHeap(&uttStack); ResetHeap(&genStack); ResetHeap(&dmStack); ResetHeap(&hmmStack); /* Reset modules */ ResetGen(); ResetAdapt(&xfInfo_hmm, &xfInfo_dur); ResetFB(); ResetUtil(); ResetParm(); ResetModel(); ResetLabel(); ResetWave(); ResetSigP(); ResetMath(); ResetMem(); ResetShell(); Exit(0); return (0); /* never reached -- make compiler happy */ }
int main_HCopy(int argc, char *argv[]) { char *s; /* next file to process */ void OpenSpeechFile(char *s); void AppendSpeechFile(char *s); void PutTargetFile(char *s); if(InitShell(argc,argv,hcopy_version,hcopy_vc_id)<SUCCESS) HError(1000,"HCopy: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(1000,"HCopy: InitParm failed"); if (!InfoPrinted() && NumArgs() == 0) ReportUsageHCopy(); if (NumArgs() == 0) return(0); SetConfParmsHCopy(); /* initial trace string is null */ trList.str = NULL; CreateHeap(&iStack, "InBuf", MSTAK, 1, 0.0, STACKSIZE, LONG_MAX); CreateHeap(&oStack, "OutBuf", MSTAK, 1, 0.0, STACKSIZE, LONG_MAX); CreateHeap(&cStack, "ChopBuf", MSTAK, 1, 0.0, STACKSIZE, LONG_MAX); CreateHeap(&lStack, "LabBuf", MSTAK, 1, 0.0, 10000, LONG_MAX); CreateHeap(&tStack, "Trace", MSTAK, 1, 0.0, 100, 200); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(1019,"HCopy: Bad switch %s; must be single letter",s); switch(s[0]){ case 'a': if (NextArg() != INTARG) HError(1019,"HCopy: Auxiliary label index expected"); auxLab = GetChkedInt(1,100000,s) - 1; break; case 'e': /* end time in seconds, max 10e5 secs */ en = GetChkedFlt(-MAXTIME,MAXTIME,s); stenSet = TRUE; chopF = TRUE; break; case 'i': if (NextArg() != STRINGARG) HError(1019,"HCopy: Output MLF name expected"); if(SaveToMasterfile(GetStrArg())<SUCCESS) HError(1014,"HCopy: Cannot write to MLF"); useMLF = TRUE; labF = TRUE; break; case 'l': if (NextArg() != STRINGARG) HError(1019,"HCopy: Target label file directory expected"); outLabDir = GetStrArg(); labF = TRUE; break; case 'm': xMargin = GetChkedFlt(-MAXTIME,MAXTIME,s); chopF = TRUE; break; case 'n': if (NextArg() != INTARG) HError(1019,"HCopy: Label index expected"); labstidx= GetChkedInt(-100000,100000,s); if (NextArg() == INTARG) labenidx = GetChkedInt(-100000,100000,s); chopF = TRUE; break; case 's': /* start time in seconds */ st = GetChkedFlt(0,MAXTIME,s); stenSet = TRUE; chopF = TRUE; break; case 't': if (NextArg() != INTARG) HError(1019,"HCopy: Trace line width expected"); traceWidth= GetChkedInt(10,100000,s); break; case 'x': if (NextArg() != STRINGARG) HError(1019,"HCopy: Label name expected"); labName = GetLabId(GetStrArg(),TRUE); if (NextArg() == INTARG) labRep = GetChkedInt(1,100000,s); chopF = TRUE; labF = TRUE; break; case 'F': if (NextArg() != STRINGARG) HError(1019,"HCopy: Source file format expected"); if((srcFF = Str2Format(GetStrArg())) == ALIEN) HError(-1089,"HCopy: Warning ALIEN src file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(1019,"HCopy: Source label File format expected"); if((srcLabFF = Str2Format(GetStrArg())) == ALIEN) HError(-1089,"HCopy: Warning ALIEN Label output file format set"); labF= TRUE; break; case 'I': if (NextArg() != STRINGARG) HError(1019,"HCopy: MLF file name expected"); LoadMasterFile(GetStrArg()); labF = TRUE; break; case 'L': if (NextArg()!=STRINGARG) HError(1019,"HCopy: Label file directory expected"); labDir = GetStrArg(); labF = TRUE; break; case 'P': if (NextArg() != STRINGARG) HError(1019,"HCopy: Label File format expected"); if((tgtLabFF = Str2Format(GetStrArg())) == ALIEN) HError(-1089,"HCopy: Warning ALIEN Label file format set"); labF = TRUE; break; case 'O': if (NextArg() != STRINGARG) HError(1019,"HCopy: Target file format expected"); if((tgtFF = Str2Format(GetStrArg())) == ALIEN) HError(-1089,"HCopy: Warning ALIEN target file format set"); break; case 'T': trace = GetChkedInt(0,16,s); break; case 'X': if (NextArg()!=STRINGARG) HError(1019,"HCopy: Label file extension expected"); labExt = GetStrArg(); labF = TRUE; break; default: HError(1019,"HCopy: Unknown switch %s",s); } } if (NumArgs() == 1) HError(1019,"HCopy: Target file or + operator expected"); FixOptions(); while (NumArgs()>1) { /* process group S1 + S2 + ... TGT */ off = 0.0; if (NextArg()!=STRINGARG) HError(1019,"HCopy: Source file name expected"); s = GetStrArg(); OpenSpeechFile(s); /* Load initial file S1 */ if (NextArg()!=STRINGARG) HError(1019,"HCopy: Target file or + operator expected"); s = GetStrArg(); while (strcmp(s,"+") == 0) { /* Append + S2 + S3 ... */ if (NextArg()!=STRINGARG) HError(1019,"HCopy: Append file name expected"); s = GetStrArg(); AppendSpeechFile(s); if (NextArg()!=STRINGARG) HError(1019,"HCopy: Target file or + operator expected"); s = GetStrArg(); } PutTargetFile(s); if(trace & T_MEM) PrintAllHeapStats(); if(trans != NULL){ trans = NULL; ResetHeap(&lStack); } ResetHeap(&iStack); ResetHeap(&oStack); if(chopF) ResetHeap(&cStack); } if(useMLF) CloseMLFSaveFile(); if (NumArgs() != 0) HError(-1019,"HCopy: Unused args ignored"); return (0); /* never reached -- make compiler happy */ }
static int nSize = 0; /* output ngram size */ static WordMap wList; /* the word list */ static int nLModel; /* number of loaded LMs */ static LMInfo lmInfo[MAX_LMODEL]; /* array of loaded LMs */ static BackOffLM *tgtLM; /* target lm */ static char *tgtFN; /* output model name */ static MemHeap langHeap; /* Stores global stats */ static LMFileFmt saveFmt = DEF_SAVEFMT; /* LM file format */ /* ---------------- Configuration Parameters --------------------- */ static ConfParam *cParm[MAXGLOBS]; static int nParm = 0; /* total num params */ /* ---------------- Function prototypes -------------------------- */ void Initialise(void); /* ---------------- Process Command Line ------------------------- */ /* SetConfParms: set conf parms relevant to this tool */ void SetConfParms(void) { int i; nParm = GetConfig("LMERGE", TRUE, cParm, MAXGLOBS); if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; } } char *ReturnLMName(int fmt) { switch(fmt) { case LMF_TEXT: return LM_TXT_TEXT; case LMF_BINARY: return LM_TXT_BINARY; case LMF_ULTRA: return LM_TXT_ULTRA; default: return LM_TXT_OTHER;
int main(int argc, char *argv[]) { char * labFn, *listfn, *s; int i,fidx; MLFEntry *me = NULL; Transcription *t; void InitStats(char *listfn); void GatherStats(Transcription *t); void OutputStats(void); if(InitShell(argc,argv,hlstats_version,hlstats_vc_id)<SUCCESS) HError(1300,"HLStats: InitShell failed"); InitMem(); InitMath(); InitWave(); InitLabel(); InitLM(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); enterId=GetLabId("!ENTER",TRUE); /* All sentences should or are coerced */ exitId=GetLabId("!EXIT",TRUE); /* to start enterId and end exitId */ nullId=GetLabId("!NULL",TRUE); /* Name for words not in list */ while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(1319,"HLStats: Bad switch %s; must be single letter",s); switch(s[0]){ case 'b': doBigram = TRUE; if (NextArg() != STRINGARG) HError(1319,"HLStats: Ngram output file name expected"); bigFile = GetStrArg(); break; case 'c': doLCount = TRUE; lCountLimit = GetChkedInt(0,100000,s); break; case 'd': doDurs = TRUE; break; case 'f': bigFloor = GetChkedFlt(0.0,1000.0,s); break; case 'h': hSize = GetChkedInt(1,2,s); break; case 'l': doList = TRUE; if (NextArg() != STRINGARG) HError(1319,"HLStats: Output label list file name expected"); listFile = GetStrArg(); break; case 'o': doBOff = TRUE; break; case 'p': doPCount = TRUE; pCountLimit = GetChkedInt(0,100000,s); break; case 's': if (NextArg() != STRINGARG) HError(1319,"HLStats: ENTER label name expected"); enterId=GetLabId(GetStrArg(),TRUE); if (NextArg() != STRINGARG) HError(1319,"HLStats: EXIT label name expected"); exitId=GetLabId(GetStrArg(),TRUE); break; case 't': bigThresh = GetChkedInt(0,100,s); break; case 'u': uniFloor = GetChkedFlt(0.0,1000.0,s); break; case 'G': if (NextArg() != STRINGARG) HError(1319,"HLStats: Input label File format expected"); if((ff = Str2Format(GetStrArg())) == ALIEN) HError(-1389,"HLStats: Warning ALIEN Label file format set"); break; case 'I': if (NextArg() != STRINGARG) HError(1319,"HLStats: Input MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'T': if (NextArg() != INTARG) HError(1319,"HLStats: Trace value expected"); trace = GetChkedInt(0,017,s); break; default: HError(1319,"HLStats: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) HError(1319,"HLStats: Label list file name expected"); listfn = GetStrArg(); if (!(doDurs || doBigram || doList || doLCount || doPCount)) HError(1330,"HLStats: Nothing to do!"); InitStats(listfn); i=0; while (NumArgs()>0) { if (NextArg()!=STRINGARG) HError(1319,"HLStats: Input label file name expected"); labFn = GetStrArg(); if (IsMLFFile(labFn)) { fidx = NumMLFFiles(); if ((me=GetMLFTable()) != NULL) { while(me->next != NULL) me=me->next; LoadMasterFile(labFn); me=me->next; } else { LoadMasterFile(labFn); me=GetMLFTable(); } while (me != NULL) { if (me->type == MLF_IMMEDIATE && me->def.immed.fidx == fidx) { if (trace&T_FIL) { printf(" Processing file %s\n",me->pattern); fflush(stdout); } t = LOpen(&tmpHeap,me->pattern,ff); if (t->numLists<1) HError(-1330,"HLStats: Empty file %s",me->pattern); else GatherStats(t),i++; Dispose(&tmpHeap,t); } me = me->next; if ((trace&T_BAS) && !(trace&T_FIL) && NumMLFEntries()>5000 && i%1000==0) printf(". "),fflush(stdout); } if ((trace&T_BAS) && !(trace&T_FIL) && NumMLFEntries()>5000) printf("\n"); } else { if (trace&T_FIL) { printf(" Processing file %s\n",labFn); fflush(stdout); } t = LOpen(&tmpHeap,labFn,ff); if (t->numLists<1) HError(-1330,"HLStats: Empty file %s",me->pattern); else GatherStats(t),i++; Dispose(&tmpHeap,t); } } if (trace&T_MEM) PrintAllHeapStats(); OutputStats(); if (trace&T_MEM) PrintAllHeapStats(); Exit(0); return (0); /* never reached -- make compiler happy */ }
int main(int argc, char *argv[]) { char *s; void Initialise(void); void DoRecognition(void); void DoAlignment(void); if(InitShell(argc,argv,hvite_version,hvite_vc_id)<SUCCESS) HError(3200,"HVite: InitShell failed"); InitMem(); InitLabel(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitModel(); if(InitParm()<SUCCESS) HError(3200,"HVite: InitParm failed"); InitDict(); InitNet(); InitRec(); InitUtil(); InitAdapt(&xfInfo); InitMap(); if (!InfoPrinted() && NumArgs() == 0) ReportUsage(); if (NumArgs() == 0) Exit(0); SetConfParms(); CreateHeap(&modelHeap, "Model heap", MSTAK, 1, 0.0, 100000, 800000 ); CreateHMMSet(&hset,&modelHeap,TRUE); while (NextArg() == SWITCHARG) { s = GetSwtArg(); if (strlen(s)!=1) HError(3219,"HVite: Bad switch %s; must be single letter",s); switch(s[0]){ case 'a': loadLabels=TRUE; break; case 'b': if (NextArg()!=STRINGARG) HError(3219,"HVite: Utterance boundary word expected"); bndId = GetLabId(GetStrArg(),TRUE); break; case 'c': tmBeam = GetChkedFlt(0.0,1000.0,s); break; case 'd': if (NextArg()!=STRINGARG) HError(3219,"HVite: HMM definition directory expected"); hmmDir = GetStrArg(); break; case 'e': saveAudioOut=TRUE; break; case 'f': states=TRUE; break; case 'g': replay=TRUE; break; case 'i': if (NextArg()!=STRINGARG) HError(3219,"HVite: Output MLF file name expected"); /* if(SaveToMasterfile(GetStrArg())<SUCCESS) HError(3214,"HCopy: Cannot write to MLF"); */ SaveToMasterfile(GetStrArg()); break; case 'k': xfInfo.useInXForm = TRUE; break; case 'j': if (NextArg()!=INTARG) HError(3219,"HVite: No. of files per online adaptation step expected"); update = GetChkedInt(1,256,s); break; case 'l': if (NextArg()!=STRINGARG) HError(3219,"HVite: Label file directory expected"); labDir = GetStrArg(); break; case 'm': models=TRUE; break; case 'n': nToks = GetChkedInt(2,MAX_TOKS,s); if (NextArg()==FLOATARG || NextArg()==INTARG) nTrans = GetChkedInt(1,10000,s); else nTrans = 1; break; case 'o': if (NextArg()!=STRINGARG) HError(3219,"HVite: Output label format expected"); labForm = GetStrArg(); break; case 'p': wordPen = GetChkedFlt(-1000.0,1000.0,s); break; case 'q': if (NextArg()!=STRINGARG) HError(3219,"HVite: Output lattice format expected"); latForm = GetStrArg(); break; case 'r': prScale = GetChkedFlt(0.0,1000.0,s); break; case 's': lmScale = GetChkedFlt(0.0,1000.0,s); break; case 't': genBeam = GetChkedFlt(0,1.0E20,s); if (genBeam == 0.0) genBeam = -LZERO; if (NextArg()==FLOATARG || NextArg()==INTARG) { genBeamInc = GetChkedFlt(0.0,1.0E20,s); genBeamLim = GetChkedFlt(0.0,1.0E20,s); if (genBeamLim < (genBeam + genBeamInc)) { genBeamLim = genBeam; genBeamInc = 0.0; } } else { genBeamInc = 0.0; genBeamLim = genBeam; } break; case 'w': if (NextArg()!=STRINGARG) loadNetworks=TRUE; else { wdNetFn = GetStrArg(); if (strlen(wdNetFn)==0) { wdNetFn=NULL; loadNetworks=TRUE; } } break; case 'u': maxActive = GetChkedInt(0,100000,s); break; case 'v': wordBeam = GetChkedFlt(0,1.0E20,s); if (wordBeam == 0.0) wordBeam = -LZERO; break; case 'x': if (NextArg()!=STRINGARG) HError(3219,"HVite: HMM file extension expected"); hmmExt = GetStrArg(); break; case 'y': if (NextArg()!=STRINGARG) HError(3219,"HVite: Output label file extension expected"); labExt = GetStrArg(); break; case 'z': if (NextArg()!=STRINGARG) HError(3219,"HVite: Lattice output file extension expected"); latExt = GetStrArg(); break; case 'F': if (NextArg() != STRINGARG) HError(3219,"HVite: Data File format expected"); if((dfmt = Str2Format(GetStrArg())) == ALIEN) HError(-3289,"HVite: Warning ALIEN Input file format set"); break; case 'G': if (NextArg() != STRINGARG) HError(3219,"HVite: Source Label File format expected"); if((ifmt = Str2Format(GetStrArg())) == ALIEN) HError(-3289,"HVite: Warning ALIEN Input file format set"); break; case 'H': if (NextArg() != STRINGARG) HError(3219,"HVite: MMF File name expected"); AddMMF(&hset,GetStrArg()); break; case 'I': if (NextArg() != STRINGARG) HError(3219,"HVite: MLF file name expected"); LoadMasterFile(GetStrArg()); break; case 'L': if (NextArg()!=STRINGARG) HError(3219,"HVite: Label/network file directory expected"); labInDir = GetStrArg(); break; case 'P': if (NextArg() != STRINGARG) HError(3219,"HVite: Target Label File format expected"); if((ofmt = Str2Format(GetStrArg())) == ALIEN) HError(-3289,"HVite: Warning ALIEN Label output file format set"); break; case 'B': saveBinary = TRUE; break; case 'T': trace = GetChkedInt(0,511,s); break; case 'X': if (NextArg()!=STRINGARG) HError(3219,"HVite: Input label/network file extension expected"); labInExt = GetStrArg(); break; case 'h': if (NextArg()!=STRINGARG) HError(1,"Speaker name pattern expected"); xfInfo.outSpkrPat = GetStrArg(); if (NextArg()==STRINGARG) { xfInfo.inSpkrPat = GetStrArg(); if (NextArg()==STRINGARG) xfInfo.paSpkrPat = GetStrArg(); } if (NextArg() != SWITCHARG) HError(2319,"HERest: cannot have -h as the last option"); break; case 'E': if (NextArg()!=STRINGARG) HError(2319,"HERest: parent transform directory expected"); xfInfo.usePaXForm = TRUE; xfInfo.paXFormDir = GetStrArg(); if (NextArg()==STRINGARG) xfInfo.paXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319,"HVite: cannot have -E as the last option"); break; case 'J': if (NextArg()!=STRINGARG) HError(2319,"HERest: input transform directory expected"); AddInXFormDir(&hset,GetStrArg()); if (NextArg()==STRINGARG) xfInfo.inXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319,"HVite: cannot have -J as the last option"); break; case 'K': if (NextArg()!=STRINGARG) HError(2319,"HVite: output transform directory expected"); xfInfo.outXFormDir = GetStrArg(); xfInfo.useOutXForm = TRUE; if (NextArg()==STRINGARG) xfInfo.outXFormExt = GetStrArg(); if (NextArg() != SWITCHARG) HError(2319,"HVite: cannot have -K as the last option"); break; default: HError(3219,"HVite: Unknown switch %s",s); } } if (NextArg()!=STRINGARG) HError(3219,"HVite: Dictionary file name expected"); dictFn = GetStrArg(); if (NextArg()!=STRINGARG) HError(3219,"HVite: HMM list file name expected"); hmmListFn = GetStrArg(); #ifndef PHNALG if ((states || models) && nToks>1) HError(3230,"HVite: Alignment using multiple tokens is not supported"); #endif if (NumArgs()==0 && wdNetFn==NULL) HError(3230,"HVite: Network must be specified for recognition from audio"); if (loadNetworks && loadLabels) HError(3230,"HVite: Must choose either alignment from network or labels"); if (nToks>1 && latExt==NULL && nTrans==1) HError(-3230,"HVite: Performing nbest recognition with no nbest output"); if (nToks > 1 && latExt != NULL && nTrans > 1) HError(-3230,"HVite: Performing nbest recognition with 1-best and latttices output"); if ((update>0) && (!xfInfo.useOutXForm)) HError(3230,"HVite: Must use -K option with incremental adaptation"); Initialise(); /* Process the data */ if (wdNetFn==NULL) DoAlignment(); else DoRecognition(); /* Free up and we are done */ if (trace & T_MEM) { printf("Memory State on Completion\n"); PrintAllHeapStats(); } DeleteVRecInfo(vri); ResetHeap(&netHeap); FreePSetInfo(psi); UpdateSpkrStats(&hset,&xfInfo, NULL); ResetHeap(®Heap); ResetHeap(&modelHeap); Exit(0); return (0); /* never reached -- make compiler happy */ }