This page contains the Subband Autocorrelation Classification (SAcC) Pitch Tracker.
fmin = 60; nPitchPerOctave = 24; fmax = 400; tmax = round(nPitchPerOctave*log2(fmax/fmin))/nPitchPerOctave; t = 0:(1/nPitchPerOctave):tmax; pcf = fmin*2.^t;
SAcC requires audioread to support various input audio formats
addpath('audioread') in_fn = 'rl001.wav'; map_fn = 'mapping.mat'; wgt_fn ='trKr_sb48k10_h800w1QNLRP0.wgt'; norms_fn = 'trKr_sb48k10.norms'; [pitch,obs] = SAcC_main(in_fn,map_fn,wgt_fn,norms_fn); sr = 16000; [x] = audioread(in_fn,sr);
(1/1) Start: 1 End: 24000 Using Slaney-Patterson filterbank, frq=100..800, bpo=16 Elapsed time is 0.085292 seconds. Autocorrelogram Elapsed time is 3.751716 seconds. islice: 1 lac: 148
subplot(211), xx = (1:length(x))/sr; plot(xx,x) subplot(212), [y,f,t,p] = spectrogram(x,512,256,512,sr,'yaxis'); imagesc(10*log10(abs(y))) axis xy set(gca,'XTickLabel',[]) set(gca,'YTickLabel',[]) yax = ylim; ylim(yax/2) gthf = dlmread('rl001.gth'); [gthp] = freq2pitch(gthf,pcf,nPitchPerOctave);
subplot(211), imagesc(obs'), axis xy, colormap(1-gray) set(gca,'XTickLabel',[]) ylabel('Pitch Index'); title('Observation'); subplot(212), xx = 0.01*(1:length(pitch)); plot(xx,pitch,'g.') hold on; xx = 0.01*(1:length(gthp)); plot(xx,gthp,'r') ylim([0 70]) ylabel('Pitch Index'); xlabel('Time / s') title('Pitch Tracking'); legend('SAcC','Ground Truth')
Byung Suk Lee, Dan Ellis, "Noise Robust Pitch Tracking using Subband Autocorrelation Classification (SAcC)," InterSpeech, September 9-13, 2012.
audioread is able to read a wide range of sound file types, but relies on a number of other packages and/or support functions being installed.
v0.1 2012-05-15 Initial release.
% Last updated: $Date: 2012/05/15 13:50:12 $ % Byung Suk Lee <[email protected]>