/* AppendParm: append the src file to current Buffer pb. Return appended len */ HTime AppendParm(char *src) { int i; char bf1[MAXSTRLEN]; char bf2[MAXSTRLEN]; short swidth[SMAX]; Boolean eSep; ParmBuf b, cb; Observation o; BufferInfo info; if((b = OpenBuffer(&iStack,src,0,srcFF,TRI_UNDEF,TRI_UNDEF))==NULL) HError(1050,"AppendParm: Config parameters invalid"); GetBufferInfo(b,&info); if(trace & T_KINDS ){ printf("Appending file %s format: %s [%s]->[%s]\n",src, Format2Str(info.srcFF), ParmKind2Str(info.srcPK,bf1), ParmKind2Str(info.tgtPK,bf2)); } if (tgtSampRate != info.tgtSampRate) HError(1032,"AppendParm: Input file %s has inconsistent sample rate",src); if ( BaseParmKind(tgtPK) != BaseParmKind(info.tgtPK)) HError(1032,"AppendParm: Input file %s has inconsistent tgt format",src); cb = (chopF)?ChopParm(b,st,en,info.tgtSampRate) : b; ZeroStreamWidths(swidth0,swidth); SetStreamWidths(info.tgtPK,info.tgtVecSize,swidth,&eSep); o = MakeObservation(&iStack, swidth, info.tgtPK, saveAsVQ, eSep); for (i=0; i < ObsInBuffer(cb); i++){ ReadAsTable(cb, i, &o); AddToBuffer(pb, o); } CloseBuffer(cb); return(i*info.tgtSampRate); }
/* EXPORT->LSave: Save transcription in fname */ ReturnStatus LSave(char *fname, Transcription *t, FileFormat fmt) { FILE *f; char buf[MAXSTRLEN]; if (fmt == UNDEFF){ if (GetConfStr(cParm,numParm,"TARGETLABEL",buf)) fmt = Str2Format(buf); else fmt = HTK; } if (outMLF != NULL) { if (fmt != HTK){ HRError(6572,"LSave: cant save to MLF in %s format",Format2Str(fmt)); return(FAIL); } f = outMLF; /* save to MLF file */ fprintf(f,"\"%s\"\n",fname); } else /* else open new one */ if ((f=fopen(fname,"wb")) == NULL){ HRError(6511,"LSave: Unable to create label file %s",fname); return(FAIL); } if (trace&T_SAV) printf("HLabel: Saving transcription to %s in format %s\n", fname,Format2Str(fmt)); switch (fmt) { case HTK: SaveHTKLabels( f, t); break; case ESPS: SaveESPSLabels(f, t); break; default: HRError(6572,"LSave: Illegal label file format."); fclose(f); return(FAIL); break; } if (outMLF != NULL && fmt==HTK){ fprintf(f,".\n"); fflush(f); }else fclose(f); return(SUCCESS); }
/* OpenSpeechFile: open waveform or parm file */ void OpenSpeechFile(char *s) { HTime len; char buf[MAXSTRLEN]; if (labF) tr = LoadTransLabs(s); if(IsWave(s)) len = OpenWaveFile(s); else len = OpenParmFile(s); if(labF) AppendLabs(tr,len); if (trace & T_TOP) AppendTrace(s); if (tgtPK == ANON) tgtPK = srcPK; if(trace & T_KINDS){ printf("Source file format: %s [%s]\n", Format2Str(srcFF), ParmKind2Str(srcPK,buf)); printf("Target file format: %s [%s]\n", Format2Str(tgtFF), ParmKind2Str(tgtPK,buf)); printf("Source rate: %.0f Target rate: %.0f \n", srcSampRate,tgtSampRate); } }
/* AppendWave: append the src file to global wave wv */ HTime AppendWave(char *src) { Wave w, cw; HTime period=0.0; long nSamps; short *data; if((w = OpenWaveInput(&iStack,src, srcFF, 0, 0, &period))==NULL) HError(1013,"AppendWave: OpenWaveInput failed"); if(trace & T_KINDS ) printf("Appending file %s format: %s [WAVEFORM]\n",src, Format2Str(WaveFormat(w))); if(period != srcSampRate) HError(1032,"AppendWave: Input file %s has inconsistent sampling rate",src); cw = (chopF)? ChopWave(w,st,en,srcSampRate) : w; data = GetWaveDirect(cw,&nSamps); PutWaveSample(wv,nSamps,data); CloseWaveInput(cw); return(nSamps*period); }
int main(int argc, char *argv[]) { char *s,buf[MAXSTRLEN]; void ListSpeech(char *src); if(InitShell(argc,argv,hlist_version,hlist_vc_id)<SUCCESS) HError(1100,"HList: InitShell failed"); InitMem(); InitMath(); InitSigP(); InitWave(); InitAudio(); InitVQ(); InitLabel();