function Ws = main_reverb_razb_2chan(rirname,T,avtr,bnd)
% Реальное измерение разборчивости речи через ИХ
%
% ==== входные параметры: ===== 
% rirname: имя анализируемого массива ИХ, если live = 0 
% T - длит-сть записи (сек); 
% ПРИМЕР: T = 3; avtr - автор версии метода
% (Покровский: avtr=1;Сапожков:avtr=2;мы:avtr=3; sti: avtr=4) 
% bnd - кол-во октавных полос частот: 5 полос: bnd=5; 7 полос: bnd=7 
% W - словесная разборчивость (W=sti, если avtr=4)
%
% --- План вычислений: ---
% --- Часть 1: подготовка к вычислениям
% --- 1) задание внутренних параметров
% --- 2) считывание коэф-тов гребенки фильтров ---
% --- 3) подготовка к записи - создание аудиообъекта
% --- 4) запись или прочтение с диска
% --- Часть 2: формирование участков смеси, рев-ции и помехи ---
% --- 1) оценка дисперсии помехи и вычисление порога П = 5*sigma
% --- 2) вычисление момента начала ИХ
% --- 3) фильтрация записи
% --- 4) выкусывание информативной части ИХ
% --- 5) контроль правильности расстановки границ участков записи
% --- Часть 3: измерение Ek
% --- Часть 4: оценивание разборчивости речи формантным методом ---
% --- 1) вычисление словесной разборчивости по Покровскому ---
% --- 2) вычисление словесной разборчивости по Сапожкову ---
% --- 3) вычисление словесной разборч. по нашим коэфф.восприятия ---
%
% === Вычисления: ===
% --- Часть 1: подготовка к вычислениям
% --- 1) задание внутренних параметров
%live = 0; 
%T = 4;                  % T - длит-сть записи (сек);
%T1 = 0.2;
%avtr = 4; 
%bnd = 7;
Ws = zeros(1,2);

% --- 2) считывание коэф-тов гребенки фильтров ---
%load fltrbnk7_struct;
%a = fltrbnk7_struct.a;
%len_a = fltrbnk7_struct.len_a;

% --- 4) прочтение с диска
[x, Fs] = audioread(rirname);

for chan = 1:2
    h = x(:,chan)/max(abs(x(:,chan)));          % нормировка записи по максимуму

% --- Часть 2: выкусывание нужного из ИХ ---
hc = h(1:round(T*Fs));    % вырезаем T1 с, начиная с n0

% --- фильтрация записи
%xband7 = filter_band_7_func(hc,a,[1 1 1 1 1 1 1]); % филь-ция гребенкой
xband7 = filter_band_7_ideal_func(hc,[1 1 1 1 1 1 1]); % филь-ция идеаль.
%xband7 = xband7(len_a:end,:);          % откусываем неправильные выборки

% --- квадрат ИХ в каждой полосе частот
xband7 = xband7.^2;

% --- ПФ от квадрата ИХ в каждой полосе
Nfft = size(xband7,1);
ft7 = fft(xband7,Nfft);

% --- вычисление mk(f)=2*sum(xband7)
mkf = zeros(size(ft7,1),size(ft7,2));
%mkf = 2*abs(ft7(:,:))./abs(ft7(1,:));
for k = 1:7
    mkf(:,k) = abs(ft7(:,k))./abs(ft7(1,k));
end

% --- вычисление snrk(f)
snrkf = 10*log10(mkf./(1-mkf));

% --- Часть 3: измерение Ek
nf = round(14*T);   % 14 Hz
Ek = sum(snrkf(2:nf,:),1)/(nf-1); % для 7 октавных полос
if bnd == 5
    Ek = Ek(2:6);
end

% --- Часть 4: оценивание разборчивости речи формантным методом ---
% --- 1) вычисление словесной разборчивости по Покровскому ---
        if avtr == 1
            if bnd == 7
                W = razbor_pokr(Ek);   % 7 полос частот
            else
                W = razb1(Ek);         % 5 полос частот
            end
            %disp(['W = ' num2str(W) '; Покровский; ' num2str(bnd) ' октавн. полос'])
        end
% --- 2) вычисление словесной разборчивости по Сапожкову ---
        if avtr == 2
            if bnd == 7
                W = razb_sapoz_7(Ek);   % 7 полос частот
            else
                W = razb_sapoz_5(Ek);   % 5 полос частот
            end
            %disp(['W = ' num2str(W) '; Сапожков; ' num2str(bnd) ' октавн. полос'])
        end
% --- 3) вычисление словесной разборч. по нашим коэфф.восприятия ---
        if avtr == 3        
            if bnd == 7
                W = razb_we_short(Ek);
            else
                W = razb_we_5(Ek);
            end
            %disp(['W = ' num2str(W) '; Наша версия; ' num2str(bnd) ' октавн. полос'])
        end
        % --- 10) вычисление STI ---
        if avtr == 4        
            if bnd == 7
                W = razb_sti(Ek);
            else
                W = 0;
            end
            %disp(['sti = ' num2str(W) '; ' num2str(bnd) ' октавн. полос'])
        end        
Ws(1,chan) = W;
end


