void Initialise(int argc, char *argv[]) { if (InitHTK(argc,argv,ssds_version)<SUCCESS){ HRError(9999,"SSDS: cannot initialise HTK\n"); throw HTK_Error(9999); } printf("\nSSDS: ATK Simple Spoken Dialog System\n"); printf("=====================================\n\n"); }
int main(int argc, char *argv[]) { APacket p; try { // if (NCInitHTK("TRec.cfg",version)<SUCCESS){ if (InitHTK(argc,argv,version)<SUCCESS){ ReportErrors("Main",0); exit(-1); } printf("TRec: Basic Recogniser Test\n"); ConfParam *cParm[MAXGLOBS]; /* config parameters */ int numParm,i; char ngramFN[100],buf[100]; ngramFN[0] = '\0'; // Read configuration parms for ANGRAM to see if NGram used numParm = GetConfig("ANGRAM", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfStr(cParm,numParm,"NGRAMFILE",buf)) strcpy(ngramFN,buf); } printf("TRec: HTK initialised: %s\n",ngramFN); // Create Buffers ABuffer auChan("auChan"); ABuffer feChan("feChan"); ABuffer ansChan("ansChan"); printf("TRec: Buffers initialised\n"); // create a resource manager ARMan rman; // Create Audio Source and Coder ASource ain("AIn",&auChan); ACode acode("ACode",&auChan,&feChan); ARec arec("ARec",&feChan,&ansChan,&rman,0); printf("TRec: Components initialised\n"); // create global resources AHmms hset("HmmSet"); // load info in config ADict dict("ADict"); AGram gram("AGram"); rman.StoreHMMs(&hset); rman.StoreDict(&dict); rman.StoreGram(&gram); ResourceGroup *main = rman.NewGroup("main"); main->AddHMMs(&hset); main->AddDict(&dict); main->AddGram(&gram); if (strlen(ngramFN)>0){ ANGram * ngram = new ANGram("ANGram"); rman.StoreNGram(ngram); main->AddNGram(ngram); } #ifdef WITHMON // Create Monitor and Start it AMonitor amon; amon.AddComponent(&ain); amon.AddComponent(&acode); amon.AddComponent(&arec); amon.Start(); #endif // Start components executing ain.Start(); acode.Start(); arec.Start(); arec.SendMessage("usegrp(main)"); arec.SendMessage("start()"); Boolean terminated = FALSE; while (!terminated) { APacket p = ansChan.GetPacket(); if (p.GetKind() == StringPacket){ AStringData * sd = (AStringData *)p.GetData(); if (sd->data.find("TERMINATED") != string::npos) { terminated = TRUE; } } p.Show(); } // Shutdown printf("Waiting for ain\n"); ain.Join(); printf("Waiting for acode\n"); acode.Join(); printf("Waiting for arec\n"); arec.Join(); #ifdef WITHMON printf("Waiting for monitor\n"); amon.Terminate(); HJoinMonitor(); #endif return 0; } catch (ATK_Error e){ ReportErrors("ATK",e.i); return 0;} catch (HTK_Error e){ ReportErrors("HTK",e.i); return 0;} }
int cTumkwsaSink::setupATK() { try { // ------- load HTK config...... int argc=3; const char* argv[3] = {"ASR","-C",NULL}; if (configfile != NULL) argv[2]=configfile; else argv[2]="asr.cfg"; if (InitHTK(argc,(char**)argv,version,TRUE)<SUCCESS){ COMP_ERR("failed to initialise ASR subsystem!"); } ConfParam *cParm[MAXGLOBS]; /* config parameters */ int numParm,i; char ngramFN[100],buf[100]; ngramFN[0] = '\0'; // Read configuration parms for ANGRAM to see if NGram used numParm = GetConfig((char *)"ANGRAM", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfStr(cParm,numParm,(char *)"NGRAMFILE",buf)) strcpy(ngramFN,buf); } // Create Buffers feChan = new ABuffer("feChan"); ansChan = new ABuffer("ansChan"); // create a resource manager rman = new ARMan(); arec = new ARec("ARec",feChan,ansChan,rman,0); // create global resources hset = new AHmms("HmmSet"); // load info in config dict = new ADict("ADict"); gram = new AGram("AGram"); rman->StoreHMMs(hset); rman->StoreDict(dict); rman->StoreGram(gram); ResourceGroup *main = rman->NewGroup("main"); main->AddHMMs(hset); main->AddDict(dict); main->AddGram(gram); if (strlen(ngramFN)>0){ ANGram * ngram = new ANGram("ANGram"); rman->StoreNGram(ngram); main->AddNGram(ngram); } arec->Start(); arec->SendMessage("usegrp(main)"); arec->SendMessage("start()"); terminated = FALSE; } catch (ATK_Error e){ ReportErrors((char*)"ATK",e.i); return 0;} catch (HTK_Error e){ ReportErrors((char*)"HTK",e.i); return 0;} HThread t = HCreateThread("resultThread", 0, HPRIO_NORM, ATKresultThreadRunner, this); ATKresThread = t->thread; //smileThreadCreate( ATKresThread, ATKresultThreadRunner, this ); atkIsSetup=1; return 1; }
int main(int argc, char *argv[]) { char *s,*fn; cst_voice *voice; // synthesis voice cst_utterance *utt; // current utterance cst_wave *cstwave; // synthesised wave Wave w; // HTK wave short *p; HTime sampPeriod = 625.0; int n; MemHeap mem; AudioOut a; try { if (InitHTK(argc,argv,version)<SUCCESS){ ReportErrors("Main",0); exit(-1); } if (NumArgs() !=2) { printf("SFliteTest synthstring file\n"); exit(0); } CreateHeap(&mem,"heap",MSTAK,1,0.0,10000,100000); s = GetStrArg(); fn = GetStrArg(); printf("Synth: %s -> %s\n",s,fn); // initialise Edinburgh cst lib cst_regex_init(); // setup the voice voice = register_cmu_us_kal16(NULL); // convert text to waveform utt = flite_synth_text(s,voice); if (utt==NULL) { HRError(12001,"SFliteTest: cant synthesise %s\n",s); throw ATK_Error(12001); } cstwave = utt_wave(utt); p = cstwave->samples; n = cstwave->num_samples; w = OpenWaveOutput(&mem,&sampPeriod,n); printf("%d samples created\n",n); PutWaveSample(w,n,p); if (CloseWaveOutput(w,WAV,fn)<SUCCESS){ ReportErrors("Main",0); exit(-1); } // explore structure const cst_item *it, *itlast = NULL; float x,y; int i; string lastword="0"; x = 0; for (i=1,it = relation_head(utt_relation(utt, "Segment")); it!=NULL; it = item_next(it),i++) { printf("Segment %d\n",i); y = item_feat_float(it,"end"); string ph = string(ffeature_string(it,"p.name")); string wd = string(ffeature_string(it,"R:SylStructure.parent.parent.name")); //printf("end = %f ph=%s wd=%s\n",y,ph.c_str(),wd.c_str()); if (wd != lastword){ printf("**** end of %s = %f\n",lastword.c_str(),x); lastword=wd; } x = y; } //if (itlast!=NULL) { // word = string(ffeature_string(itlast,"R:SylStructure.parent.parent.name")); // idx = text.find(word); //} return 0; } catch (ATK_Error e){ ReportErrors("ATK",e.i); } catch (HTK_Error e){ ReportErrors("HTK",e.i); } return 0; }