function example_frame_level_sns( sns_filename, i_fig )

  if nargin < 2
    i_fig = 0;
  end
  
  % Load the speech/non-speech GMM models
  
  load( sns_filename, 'model_list', 'par' );
  disp( [ mfilename ' loaded ' sns_filename ] );

  % Load the multisource detection-localization result

  result_filename = par.in_filename;
  load( result_filename, 'result' );
  disp( [ mfilename ' loaded ' result_filename ] );
  
  t = result.list.framelength_sec / 2 + result.list.frameshift_sec * ( result.list.sphloc_mat( 1,: ) - 1 );
  az = result.list.sphloc_mat( 3,: );
  tag = result.list.sphloc_mat( 7,: );

  % Let's try to make the plots not too ugly
  % (azimuth space is circular).
  % - select an appropriate window.
  mean_az = angle( mean( exp( j * az ) ) );
  az = mean_az + pi + mod( az - mean_az - pi, 2 * pi );
  % - move to degrees.
  az = az / pi * 180;
  
  figure(i_fig + 1);clf
  %  plot_multi_cluster( t, az, tag );
  plot( t, az, 'r.', 'markersize', 12 );
  set( gca, 'fontsize', 12 );
  xlabel( 't (seconds)' ); ylabel( 'az' ); title( [result.list.name ' (FAST), before speech/non-speech classification'] );
  legend( 'result' );
    % Expand the view slightly
    axis tight;
    v = axis;
    mx = mean( v( 1:2 ) );
    my = mean( v( 3:4 ) );
    mv = [ mx mx my my ];
    v = mv + ( v - mv ) * 1.05;

    % Show from the start
    % this highlights that we manage silences properly
    v( 1 ) = 0;
    axis( v );

  % Among the GMMs with at least one full cov. mat. component,
  % select the one with maximum BIC score.

  BIC_list = [ model_list.BIC ];
  BIC_list( find( [ model_list.n_full ] < 1 ) ) = -Inf;

  [ tmp, gmm_max_ind ] = max( BIC_list );

  if tmp == -Inf
    disp( [ mfilename ' did not find a suitable GMM.' ] );
    gmm_max_ind = [];
  end
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Three examples of frame-level classification
  % ( ideally, it is better to do cluster-level classification )

  % ( 1 ) Using wideband activeness only

  ind = find( model_list( 1 ).wa_decision );
  figure(i_fig + 2);clf
  plot_multi_cluster( t( ind ), az( ind ), tag( ind ) );
  xlabel( 't (seconds)' ); ylabel( 'az' ); title( 'wideband activeness only' );
  
  % ( 2 ) Using sector-based MFCCs and speech GMM only

  if ~isempty( gmm_max_ind )

    ind = find( model_list( gmm_max_ind ).speech_decision );
    figure(i_fig + 3);clf
    plot_multi_cluster( t( ind ), az( ind ), tag( ind ) );
    xlabel( 't (seconds)' ); ylabel( 'az' ); title( 'sector-based MFCCs only' );

  end

  % ( 3 ) Combination wideband activeness + sector-based MFCCs

  if ~isempty( gmm_max_ind )

    ind = find( model_list( gmm_max_ind ).wa_speech_decision );
    figure(i_fig + 4);clf;
    plot_multi_cluster( t( ind ), az( ind ), tag( ind ) );
    xlabel( 't (seconds)' ); ylabel( 'az' ); title( 'wideband activeness + sector-based MFCCs' );

  end




