本文整理汇总了C++中SegServer::createCluster方法的典型用法代码示例。如果您正苦于以下问题:C++ SegServer::createCluster方法的具体用法?C++ SegServer::createCluster怎么用?C++ SegServer::createCluster使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SegServer
的用法示例。
在下文中一共展示了SegServer::createCluster方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: labelNGram
//-------------------------------------------------------------------------
int labelNGram(Config& config)
{
if (config.existsParam("debug"))debug=true; else debug=false;
if (config.existsParam("verbose"))verbose=true; else verbose=false;
String extOutputLabel=".sym.lbl"; // the extension of the output files
if (config.existsParam("saveLabelFileExtension")) extOutputLabel=config.getParam("saveLabelFileExtension");
String pathOutput="./"; // the path of the output files
if (config.existsParam("labelOutputPath")) pathOutput=config.getParam("labelOutputPath");
String extSymbol=".sym"; // the extension of the symbol files
if (config.existsParam("symbolFileExtension")) extSymbol=config.getParam("symbolFileExtension");
String pathSymbol="./";
if (config.existsParam("symbolPath")) pathSymbol=config.getParam("symbolPath");
String formatSymbol="ascii";
if (config.existsParam("symbolFormat")) pathSymbol=config.getParam("symbolFormat");
String NGramFilename=config.getParam("NGramFilename");
unsigned long NGramOrder=3;
if (config.existsParam("NGramOrder")) NGramOrder=config.getParam("NGramOrder").toLong();
unsigned long NGramSelected=16;
if (config.existsParam("NGramSelected")) NGramSelected=config.getParam("NGramSelected").toLong();
NGram NGramTable(NGramOrder,NGramSelected);
NGramTable.load(NGramFilename,config); // Load the NGRAM table, selecting the NGramSelected first
String inputFilename=config.getParam("inputFilename");
String labelSelectedFrames=config.getParam("labelSelectedFrames");
XLine inputFileList;
try{
if (inputFilename.endsWith(".lst")){ // input is file containing a list of filenames
XList tmp(inputFilename,config);
inputFileList=tmp.getAllElements();
}
else inputFileList.addElement(inputFilename); // a single filename
String *p;
while ((p=inputFileList.getElement())){
String& filename=*p;
if (verbose)
cout <<"labelNGram file["<<filename<<"] Table["<<NGramFilename<<"] Order["<<NGramOrder<<"] Selected["<<NGramSelected<<"]"<<endl;
SegServer segServer;
LabelServer labelServer;
loadClusterFile(filename,segServer,labelServer,config);
long codeSelectedFrame=labelServer.getLabelIndexByString(labelSelectedFrames); // Get the index of the selected cluster
if (codeSelectedFrame==-1){ // No data for this model !!!!!!!!!!!!!!
cout << " WARNING - NO DATA with the label["<<labelSelectedFrames<<"] in file ["<<filename<<"]"<<endl;
exit(0);
}
SegCluster& cluster=segServer.getCluster(codeSelectedFrame); // Gives the cluster of the selected/used segments
ULongVector tabS;
unsigned long nbSym=loadSymbol(pathSymbol+filename+extSymbol,formatSymbol,tabS,config); // Read the stream of symbols
SegServer segServerOutput;
SegCluster& clusterOut=segServerOutput.createCluster(0,labelSelectedFrames,cluster.sourceName());
//
computeLabelNGram(NGramTable,cluster,clusterOut,tabS,nbSym);
//
if (verbose){
cout <<"File["<<filename<<"]" <<endl;
cout << "Output the new label file in ["<<pathOutput+filename+extOutputLabel <<"]"<<endl;
}
outputLabelFile(clusterOut,pathOutput+filename+extOutputLabel,config);
} // end file loop
} // fin try
catch (Exception& e)
{
cout << e.toString().c_str() << endl;
}
return 0;
}
示例2: saveApost
int saveApost(Config &config)
{
bool writeAllFeature=true; // Output a vector for all input vectors (selected and not selected vectors) - DEFAULT=on
if (config.existsParam("writeAllFeatures")) writeAllFeature=config.getParam("writeAllFeatures").toBool(); // Define if all the feature (selected or not) should be written
String modelname = config.getParam("inputModelFilename");
String inputFeatureFileName =config.getParam("inputFeatureFilename"); // input feature - could be a simple feature file or a list of filenames
XLine inputFeatureFileNameList; // The (feature) input filename list
if (inputFeatureFileName.endsWith(".lst")){ // If the file parameter is the name of a XList file
XList inputFileNameXList(inputFeatureFileName,config); // Read the filename list file
inputFeatureFileNameList=inputFileNameXList.getAllElements(); // And put the filename in a list if the file is a list of feature filenames
}
else { // It was a simple feature file and not a filename list
inputFeatureFileNameList.addElement(inputFeatureFileName); // add the filename in the list
}
try{
// read UBM
MixtureServer _ms(config);
StatServer _ss(config);
_ms.loadMixtureGD(config.getParam("inputWorldFilename"));
MixtureGD & UBM=_ms.getMixtureGD((unsigned long) 0);
MixtureGDStat &acc=_ss.createAndStoreMixtureStat(UBM);
unsigned long _vsize=UBM.getVectSize();
unsigned long _mixsize=UBM.getDistribCount();
// Loop over the list of feature files
String *file;
String labelSelectedFrames;
unsigned long codeSelectedFrame;
while ((file=inputFeatureFileNameList.getElement())!= NULL){
String & featureFilename=(*file);
FeatureServer fs(config,featureFilename);
FeatureServer fs_out(config,featureFilename);
SegServer segmentsServer;
LabelServer labelServer;
initializeClusters(featureFilename,segmentsServer,labelServer,config);
verifyClusterFile(segmentsServer,fs,config);
labelSelectedFrames=config.getParam("labelSelectedFrames");
codeSelectedFrame=labelServer.getLabelIndexByString(labelSelectedFrames);
SegCluster& selectedSegments=segmentsServer.getCluster(codeSelectedFrame);
// Compute Occupations and Statistics
acc.resetOcc();
Seg *seg;
selectedSegments.rewind();
String currentSource="";
while((seg=selectedSegments.getSeg())!=NULL){
unsigned long begin=seg->begin()+fs.getFirstFeatureIndexOfASource(seg->sourceName()); // Idx of the first frame of the current file in the feature server
if (currentSource!=seg->sourceName()) {
currentSource=seg->sourceName();
if (verbose)cout << "Processing speaker["<<currentSource<<"]"<< endl;
}
fs.seekFeature(begin);
Feature f;
for (unsigned long idxFrame=0;idxFrame<seg->length();idxFrame++){
fs.readFeature(f);
acc.computeAndAccumulateOcc(f);
RealVector <double> aPost=acc.getOccVect();
Feature tmpF;
for(unsigned long k=0;k<_mixsize;k++) {
tmpF[k]=aPost[k];
}
fs_out.addFeature(f);
}
}
// Writing apost probabilities to file
cout << "Writing to: " << featureFilename << endl;
FeatureFileWriter w(featureFilename, config); // build a featurefile writer to output the features (real features)
SegServer fakeSegServer;
if (writeAllFeature) { // Output all the features- feature count id the same SegServer fakeSegServer; // Create a new fake segment server
fakeSegServer.createCluster(0); // Create a new cluster
SegCluster& fakeSeg=fakeSegServer.getCluster(0); // Get the cluster
fakeSeg.add(fakeSegServer.createSeg(0,fs_out.getFeatureCount(),codeSelectedFrame, labelSelectedFrames,featureFilename)); // Add a segment with all the features
outputFeatureFile(config,fs_out,fakeSeg,w); // output all the features - giving the same file length
}
else
outputFeatureFile(config,fs_out,selectedSegments, w); // Output only the selected features - giving a shorter output
}
}
catch (Exception& e){cout << e.toString().c_str() << endl;}
return 0;
}
示例3: TurnDetection
void TurnDetection(Config& config, SegCluster& cluster,SegServer& segOutputServer,
StatServer& ss,FeatureServer &fs,MixtureServer&
ms,LabelServer& labelServer){
SegServer segTemp;
segOutputServer.removeAllClusters();
segOutputServer.removeAllSegs();
SegServer actualSeg;
String et_temp="speech";
Label l(et_temp);
SegCluster& clusterSeg=actualSeg.createCluster(labelServer.addLabel(l),et_temp," "); //Create the cluster L
String crit="DGLR";
if(config.existsParam("clusteringCrit"))
crit=config.getParam("clusteringCrit");
double threshold=0.0;
if(config.existsParam("clusteringCritThresh"))
threshold=config.getParam("clusteringCritThresh").toDouble();
unsigned long winSize=50;
if(config.existsParam("winSize")) winSize=config.getParam("winSize").toLong();
unsigned long winStep=5;
if(config.existsParam("winStep")) winStep=config.getParam("winStep").toLong();
double alpha=0.7;
if(config.existsParam("alpha")) alpha=config.getParam("alpha").toDouble();
unsigned long start1=0, end1=0;
unsigned long start2=0, end2=0;
unsigned long accu=0;
for(unsigned long iseg=0; iseg<cluster.getCount(); iseg++){
Seg& segment=(Seg&)cluster.get(iseg);
if(verbose)
cout << "Segment" << iseg << ": " << segment.begin() << " " << endSeg(&segment) << endl;
if(segment.length() <= 2*winSize){
clusterSeg.add(actualSeg.createSeg(segment.begin(),endSeg(&segment)-segment.begin()+1,0,segment.string(),segment.sourceName()));
if(debug) cout << "add: " << segment.begin() << " " << endSeg(&segment) << endl;
}
else{
ObjectRefVector res;
start1=segment.begin();
end1=start1+winSize-1;
start2=end1+1;
end2=start2+winSize-1;
accu = start1;
while(end2 < endSeg(&segment)){
if(verbose){
cout << "Computation between: " << start1 << " " << end1;
cout << " and " << start2 << " " << end2 << endl;
}
SegCluster& c1=segTemp.createCluster();
c1.add(segTemp.createSeg(start1,winSize,0,"null",segment.sourceName()));
SegCluster& c2=segTemp.createCluster();
c2.add(segTemp.createSeg(start2,winSize,0,"null",segment.sourceName()));
CritInfo *resCrit=new CritInfo(clusteringCriterionWithoutWorldInitOneGaus(config, c1, c2, ss, fs,crit),false,end1);
res.addObject((Object&)*resCrit);
start1+=winStep;
end1+=winStep;
start2+=winStep;
end2+=winStep;
}
/* smoothing */
/* for(unsigned long i=1; i<res.size()-1; i++){
CritInfo &resCrit=(CritInfo&)(res.getObject(i));
CritInfo &resCritP=(CritInfo&)(res.getObject(i-1));
CritInfo &resCritN=(CritInfo&)(res.getObject(i+1));
resCrit.setValue(0.25*resCritP.getValue()+0.25*resCritN.getValue()+0.5*resCrit.getValue());
}
*/
DoubleVector score_buffer;
score_buffer.setSize(2);
score_buffer[0 % 2]=((CritInfo&)(res.getObject(0))).getValue();
for(unsigned long i=1; i<res.size()-1; i++)
{
CritInfo &resCrit=(CritInfo&)(res.getObject(i));
CritInfo &resCritN=(CritInfo&)(res.getObject(i+1));//right window
score_buffer[i % 2]=resCrit.getValue();
resCrit.setValue(0.25*score_buffer[(i-1) % 2]+0.25*resCritN.getValue()+0.5*resCrit.getValue());
}
/* to look for maxima in the criterion value curve */
/* if difference on left and right of a point with neighboor points is over alpha*standard deviation => maxima is found ! */
//.........这里部分代码省略.........