Code covered by the BSD License  

Highlights from
Manual Audio Annotation

image thumbnail
from Manual Audio Annotation by Theodoros Giannakopoulos
AudioAnnotation Demo v.1.0 is an open source demo implemented in Matlab(R) for manual segmentation a

writeToWavFile(fileName, Flags, win, classNames, DO_NOT_WRITE);
function [numOfSegments, limits, labels] = writeToWavFile(fileName, Flags, win, classNames, DO_NOT_WRITE);

[aa,fs] = wavread(fileName,'size');

preFlag = 1;
curFlag = 1;
numOfSegments = 0;

curVal = Flags(curFlag);

W = waitbar(0,'Writing segments to files.');

while (curFlag<length(Flags))
    stop = 0;
    preFlag = curFlag;
    preVal = curVal;
    while (stop==0)
        curFlag = curFlag + 1;
        tempVal = Flags(curFlag);
        if ((tempVal~=curVal) | (curFlag==length(Flags))) % stop
            numOfSegments = numOfSegments + 1;
            stop = 1;
            curSegment = curVal;
            curVal = Flags(curFlag);
        end            
    end
    
    if (DO_NOT_WRITE==0)
        xtemp = wavread(fileName, [round((preFlag-1)*win*fs+1)  round((curFlag-1)*win*fs+1)]);    
    end
    limits(1, numOfSegments) = round((preFlag-1)*win*fs+1);
    limits(2, numOfSegments) = round((curFlag-1)*win*fs+1);
    labels(numOfSegments) = preVal;
            
    
    if (preVal~=0)
        waitbar(curFlag / length(Flags), W, sprintf('%5.1f%%: %s',100*curFlag / length(Flags), classNames{preVal}));
        tempName = sprintf('%s_%.3d_%s.wav',fileName,numOfSegments,classNames{preVal});        
    else
        waitbar(curFlag / length(Flags), W, sprintf('%5.1f%%: unclassified',100*curFlag / length(Flags)));
        tempName = sprintf('%s_%.3d_unclassified.wav',fileName,numOfSegments);        
    end
    
    
    % fprintf('Writing file: %s  : %6.2f-%6.2f\n',tempName,(preFlag-1)*win,(curFlag-1)*win);
    
    if (curSegment==0)
        %fprintf('   :  SPEECH\n');
    else
        %fprintf('   :  MUSIC\n');
    end
    if (DO_NOT_WRITE==0)
        wavwrite(xtemp, fs, 16, tempName);   
    end
end
close(W);

Contact us at files@mathworks.com