本文整理汇总了C++中SegServer::createSeg方法的典型用法代码示例。如果您正苦于以下问题:C++ SegServer::createSeg方法的具体用法?C++ SegServer::createSeg怎么用?C++ SegServer::createSeg使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SegServer
的用法示例。
在下文中一共展示了SegServer::createSeg方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: selectFrames
// Build the segments with the energized frames
unsigned long selectFrames(FeatureServer &fs,SegServer & segServer,double threshold,SegCluster &selectedSeg,SegCluster &outputSeg,String labelOutput,String fileName)
{
unsigned long countFrames=0;
fs.reset(); // feature server reset
unsigned long ind=0;
unsigned long begin=0;
bool in=false;
Seg *seg; // current selectd segment
selectedSeg.rewind(); // reset the reader at the begin of the input stream
while((seg=selectedSeg.getSeg())!=NULL){ // For each input segments
for (unsigned long idx=seg->begin();idx<seg->begin()+seg->length();idx++){ // for each frame
Feature f;
fs.seekFeature(idx);
fs.readFeature(f);
if (f[0]>threshold){ // the frame is selected
countFrames++;
if (in==false){ // Begin of a new segment
in=true;
begin=ind;
}
}
else if (in){ // End of a segment
in=false;
Seg & segFake=segServer.createSeg(begin,ind-begin,0, // Create a segment - Take care : length=end-begin+1 but ind =end+1 !!
labelOutput,fileName);
outputSeg.add(segFake); // Add a segment
}
ind++; // Increment the frame index
} // end of one input segment
if (in){ // deal with the last energized segmeent inside the current input segment
in=false;
Seg & segFake=segServer.createSeg(begin,ind-begin+1,0, // Create a segment
labelOutput,fileName);
outputSeg.add(segFake); // Add a segment - Take care : length=end-begin+1 and ind=end in this case !!
}
} // end feature loop
return countFrames;
}
示例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: launchTurnDetectionProcess
void launchTurnDetectionProcess(Config & config){
String outputFilesPath=config.getParam("outputFilesPath");
String inputListFileName = config.getParam("listFileToSegment"); //file including the list of files to segment
XLine classToAnalyse; //Array of labels to analyze
classToAnalyse.reset();
if(verbose){
cout << "*********** Current Configuration ***************" << endl;
for(unsigned long i=0; i<config.getParamCount(); i++){
cout << config.getParamName(i) << " => " << config.getParamContent(i) << endl;
}
cout << "*************************************************" << endl;
}
try{
XList listLabel;
XList listFileName;
try{
listFileName.load(inputListFileName,config);
}
catch(FileNotFoundException& e){
cout<<"There is no files to segment !"<<endl;
exit(-1);
}
listFileName.rewind();
XLine *filep;
while ((filep=listFileName.getLine()) != NULL){ // For each stream of audio data (in several files in the same line)
const XLine & listFile=filep->getElements(); // One or several files, as several part of the same stream
MixtureServer ms(config);
StatServer ss(config, ms);
SegServer Resultat;
FeatureServer fs(config,listFile); // Reading the features (one or more files)
SegServer segmentsServer; // Create the segment server for managing the segments/clusters
LabelServer labelServer; // Create the lable server, for indexing the segments/clusters
initializeClusters(listFile,segmentsServer,labelServer,config); // Reading the segmentation files for each feature input file
verifyClusterFile(segmentsServer,fs,config); // Verify if the segments ending before the end of the feature files
String fileInit=listFile.getElement(0);
config.setParam("fileSize", String::valueOf(fs.getFeatureCountOfASource(fileInit)));
if(config.existsParam("fileRefPath")){
// assumption: all the segments in the segment server come from the same source file !!!
displayAllSegmentsFromRef(config, fileInit, fs.getFeatureCountOfASource(fileInit));
}
for(unsigned long icluster=0;icluster<segmentsServer.getClusterCount();icluster++){ // for each cluster
SegCluster& cluster=segmentsServer.getCluster(icluster);
SegServer segOutputServer;
TurnDetection(config,cluster,segOutputServer,ss,fs,ms,labelServer);
displayAllSegments(config,segOutputServer);
for(unsigned long i=0;i<segOutputServer.getSegCount();i++){
Seg& segment=segOutputServer.getSeg(i);
Resultat.createSeg(segment.begin(),segment.length(),segment.labelCode(),segment.string(),segment.sourceName());
}
}//for icluster
saveSegmentation(config,Resultat,fs,outputFilesPath,1);
}// while
} // end try
catch (Exception& e){
cout << e.toString().c_str() << endl;
}
}//launchTurnDetectionProcess
示例4: 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 ! */
//.........这里部分代码省略.........