clear all; vsdOpt=vsdOptSet; if vsdOpt.useInputNormalize==1 error('This is not implemneted yet!\n'); end plotOpt=1; % ====== Load parameters load gmmData.mat load transProb.mat transLogProb=log(transProb); gmmcPrm=gmmData(index); pvData=recursiveFileList(vsdOpt.waveDir, 'pv'); for i=1:length(pvData) fprintf('%d/%d: ', i, length(pvData)); pvFile=pvData(i).path; waveFile=strrep(pvFile, '.pv', '.wav'); [y, fs, nbits]=wavReadInt(waveFile); %load bestInputIndex.mat [inData, outData, inputName, annotation]=wave2feature(waveFile, vsdOpt); %inData=inData(bestInputIndex, :); %inputName=inputName(bestInputIndex); vsdResult=waveDecode(waveFile, vsdOpt, gmmcPrm, transProb, plotOpt, inputName); % ====== HMM recog. rate computedClassIndex = vsdResult'; pvData(i).hmmRr=sum(outData==computedClassIndex)/length(outData); fprintf('hmmRr=%.2f%%, ', pvData(i).hmmRr*100); % ====== GMMC recog. rate computedClassIndex = gmmcEval(inData, gmmcPrm); pvData(i).gmmcRr=sum(outData==computedClassIndex)/length(outData); fprintf('gmmcRr=%.2f%%, ', pvData(i).gmmcRr*100); fprintf('waveFile=%s\n', pvData(i).path); end fprintf('Overall HMM RR = %.2f%%\n', mean([pvData.hmmRr])*100); fprintf('Overall GMMC RR = %.2f%%\n', mean([pvData.gmmcRr])*100); return allSingers={pvData.parentDir}; uniqueSingers=unique(allSingers); for i=1:length(uniqueSingers) singer=uniqueSingers{i}; singerData(i).singer=singer; index=find(strcmp(allSingers, singer)); singerData(i).hmmRr=mean([pvData(index).hmmRr]); singerData(i).gmmcRr=mean([pvData(index).gmmcRr]); end [junk, index]=sort([singerData.hmmRr]); singerData=singerData(index); structDispInHtml(singerData, 'singerData'); [junk, index]=sort([pvData.hmmRr]); pvData=pvData(index); structDispInHtml(pvData, 'pvData'); % ====== Examine the result based on HMM RR [junk, index]=sort([pvData.hmmRr]); pvData=pvData(index); for i=1:length(pvData) fprintf('%d/%d: ', i, length(pvData)); pvFile=pvData(i).path; waveFile=strrep(pvFile, '.pv', '.wav'); [y, fs, nbits]=wavReadInt(waveFile); %load bestInputIndex.mat [inData, outData, inputName, annotation]=wave2feature(waveFile, vsdOpt); %inData=inData(bestInputIndex, :); %inputName=inputName(bestInputIndex); vsdResult=waveDecode(waveFile, vsdOpt, gmmcPrm, transProb, plotOpt, inputName); % ====== HMM recog. rate computedClassIndex = vsdResult'; pvData(i).hmmRr=sum(outData==computedClassIndex)/length(outData); fprintf('hmmRr=%.2f%%, ', pvData(i).hmmRr*100); % ====== GMMC recog. rate computedClassIndex = gmmcEval(inData, gmmcPrm); pvData(i).gmmcRr=sum(outData==computedClassIndex)/length(outData); fprintf('gmmcRr=%.2f%%, ', pvData(i).gmmcRr*100); fprintf('waveFile=%s\n', pvData(i).path); fprintf('Press any key to continue...'); pause; fprintf('\n'); end