\documentclass[a4paper, final]{article}
%\usepackage{literat} % Нормальные шрифты
\usepackage[14pt]{extsizes} % для того чтобы задать нестандартный 14-ый размер шрифта
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsmath}
\usepackage[left=25mm, top=20mm, right=20mm, bottom=20mm, footskip=10mm]{geometry}
\usepackage{ragged2e} %для растягивания по ширине
\usepackage{setspace} %для межстрочного интервала
\usepackage{moreverb} %для работы с листингами
\usepackage{indentfirst} % для абзацного отступа
\usepackage{moreverb} %для печати в листинге исходного кода программ
\usepackage{pdfpages} %для вставки других pdf файлов
\usepackage{tikz}
\usepackage{graphicx}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{float}

% Рекомендуется для biblatex (кавычки/локализация цитат и т.п.)
\usepackage{csquotes}

% ГОСТ-стили для biblatex
\usepackage[
  backend=biber,
  bibstyle=gost-numeric, % ссылки вида: [1]
  citestyle=gost-numeric,
  sorting=none % порядок в списке = по первому цитированию
]{biblatex}

% Все источники хранятся в отдельном файле
\addbibresource{refs.bib}

\renewcommand*{\bibfont}{\small}

% \usepackage[paper=A4,DIV=12]{typearea}
\usepackage{pdflscape}
% \usepackage{lscape}

\usepackage{array}
\usepackage{multirow}

\renewcommand\verbatimtabsize{4\relax}
\renewcommand\listingoffset{0.2em} %отступ от номеров строк в листинге
\renewcommand{\arraystretch}{1.4} % изменяю высоту строки в таблице
\usepackage[font=small, singlelinecheck=false, justification=centering, format=plain, labelsep=period]{caption} %для настройки заголовка таблицы
\usepackage{listings} %листинги
\usepackage{xcolor} % цвета
% \usepackage{hyperref}% для гиперссылок
\usepackage{enumitem} %для перечислений

\newcommand{\specialcell}[2][l]{\begin{tabular}[#1]{@{}l@{}}#2\end{tabular}}


\setlist[enumerate,itemize]{leftmargin=1.2cm} %отступ в перечислениях

% \hypersetup{colorlinks,
    % allcolors=[RGB]{010 090 200}} %красивые гиперссылки (не красные)

% подгружаемые языки — подробнее в документации listings (это всё для листингов)
\lstloadlanguages{ SQL}
% включаем кириллицу и добавляем кое−какие опции
\lstset{tabsize=2,
    breaklines,
    basicstyle=\footnotesize,
    columns=fullflexible,
    flexiblecolumns,
    numbers=left,
    numberstyle={\footnotesize},
    keywordstyle=\color{blue},
    inputencoding=cp1251,
    extendedchars=true
}
\lstdefinelanguage{MyC}{
    language=SQL,
%    ndkeywordstyle=\color{darkgray}\bfseries,
%    identifierstyle=\color{black},
%    morecomment=[n]{/**}{*/},
%    commentstyle=\color{blue}\ttfamily,
%    stringstyle=\color{red}\ttfamily,
%    morestring=[b]",
%    showstringspaces=false,
%    morecomment=[l][\color{gray}]{//},
    keepspaces=true,
    escapechar=\%,
    texcl=true
}

\textheight=24cm % высота текста
\textwidth=16cm % ширина текста
\oddsidemargin=0pt % отступ от левого края
\topmargin=-1.5cm % отступ от верхнего края
\parindent=24pt % абзацный отступ
\parskip=5pt % интервал между абзацами
\tolerance=2000 % терпимость к "жидким" строкам
\flushbottom % выравнивание высоты страниц


% Настройка листингов
\lstset{
    language=python,
    extendedchars=\true,
    inputencoding=utf8,
    keepspaces=true,
    % captionpos=b, % подписи листингов снизу
}

% Настройка содержания
\usepackage{tocloft}
\usepackage[hidelinks]{hyperref}

% section в содержании НЕ жирным
\renewcommand{\cftsecfont}{\normalfont}
\renewcommand{\cftsecpagefont}{\normalfont}

% убрать отступ у subsection
\setlength{\cftsubsecindent}{0pt}

% subsubsection курсивом
\usepackage{titlesec}

\titleformat{\subsubsection}
  {\normalfont\large\itshape} % стиль: обычный + курсив
  {\thesubsubsection}   % номер (убери если не нужен)
  {1em}
  {}


\begin{document}
% ТИТУЛЬНЫЙ ЛИСТ
\begin{center}
    \hfill \break
    \hfill \break
    \normalsize{МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\\
        федеральное государственное автономное образовательное учреждение высшего образования «Санкт-Петербургский политехнический университет Петра Великого»\\[10pt]}
    \normalsize{Институт компьютерных наук и кибербезопасности}\\[10pt] 
    \normalsize{Высшая школа технологий искусственного интеллекта}\\[10pt] 
    \normalsize{Направление: 02.03.01 <<Математика и компьютерные науки>>}\\
    
    \hfill \break
    \hfill \break
    \hfill \break
    \large{Курсовой проект}\\
    \large{<<Подбор оптимальной конфигурации модульной системы автоматического протоколирования совещаний с помощью генетических алгоритмов>>}\\
    \large{по дисциплине <<Генетические алгоритмы>>}\\
    
    \hfill \break
    \hfill \break
\end{center}

\small{ 
    \begin{tabular}{lrrl}
        \!\!\!Студент, & \hspace{2cm} & & \\
        \!\!\!группы 5130201/20101 & \hspace{2cm} & \underline{\hspace{3cm}} & Тищенко А. А. \\\\
        \!\!\!Руководитель, & \hspace{2cm} & & \\
        \!\!\!профессор, д.т.н. & \hspace{2cm} & \underline{\hspace{3cm}} & Большаков А. А. \\\\
        &&\hspace{4cm}
    \end{tabular}
    \begin{flushright}
        <<\underline{\hspace{1cm}}>>\underline{\hspace{2.5cm}} 2026г.
    \end{flushright}
}

\hfill \break
\begin{center} \small{Санкт-Петербург, 2026} \end{center}
\thispagestyle{empty} % выключаем отображение номера для этой страницы


\newpage
\section*{Задание}

Задание по выполнению курсового проекта студенту Тищенко Артёму Андреевичу, гр. 5130201/20101:

\begin{enumerate}
    \item Тема работы: <<Подбор оптимальной конфигурации модульной системы автоматического протоколирования совещаний с помощью генетических алгоритмов>>.
    \begin{itemize}
        \item Скобцов, Ю. А. Эволюционные вычисления: Учебное пособие / Ю. А. Скобцов, Д. В. Сперанский. – М.: Национальный Открытый Университет «ИНТУИТ», 2012. – 331с., ил. – (Серия «Основы информационных технологий»).
        \item Building Real-World Meeting Summarization Systems using Large Language Models: A Practical Perspective / M. T. R. Laskar [и~др.]. — 2023. — arXiv: 2310.19233 [cs.CL]. — Режим доступа: https://arxiv.org/abs/2310.19233 (дата обр. 10.01.2026).
        \item The AMI meeting corpus / W. Kraaij [и~др.] // Proc. International Conference on Methods and Techniques in Behavioral Research. — 2005. — С. 1–4.
    \end{itemize}
    \item Содержание работы (перечень подлежащих разработке вопросов):
    \begin{enumerate}[label=\arabic{enumi}.\arabic*, ref=\arabic{enumi}.\arabic*]
        \item Описание задачи автоматического протоколирования совещаний и её этапов;
        \item Формулировка задачи оптимизации конфигурации модулей транскрибации и диаризации;
        \item Описание пространства конфигураций: модели, параметры и целевая функция;
        \item Разработка генетического алгоритма с модульным кэшированием и пакетным планированием вычислений;
        \item Экспериментальная проверка алгоритма и анализ результатов;
        \item Заключение по работе.
    \end{enumerate}
    \item Дата выдачи задания «13» февраля 2026 г.
\end{enumerate}

\noindent
\begin{tabular}{@{}p{4cm} >{\centering\arraybackslash}p{7cm} >{\raggedleft\arraybackslash}p{4cm}@{}}
Преподаватель 
& \rule{7cm}{0.4pt} 
& Большаков А.А. \\[-0.2cm]
& (подпись) 
& (инициалы, фамилия)
\end{tabular}

\vspace{0.1cm}

\noindent
Задание принял к исполнению «13» февраля 2026 г.

\noindent
\begin{tabular}{@{}p{4cm} >{\centering\arraybackslash}p{7cm} >{\raggedleft\arraybackslash}p{4cm}@{}}
Студент 
& \rule{7cm}{0.4pt} 
& Тищенко А.~А. \\[-0.2cm]
& (подпись) 
& (инициалы, фамилия)
\end{tabular}


% СОДЕРЖАНИЕ
\newpage

\tableofcontents

\newpage
\section*{Введение}
\addcontentsline{toc}{section}{Введение}

Совещания являются основным способом координации и передачи информации в организациях, однако значительная часть обсуждаемой информации неизбежно теряется. Протоколирование совещаний позволяет зафиксировать ключевые решения и договорённости и распространить их среди всех заинтересованных сторон. Актуальность автоматического протоколирования особенно возросла с распространением удалённой и гибридной работы, увеличившим количество совещаний~\cite{yandex-research-calendar}.

С технической точки зрения задачу автоматического протоколирования обычно рассматривают как последовательность трёх этапов: транскрибация (преобразование аудиозаписи в текст), диаризация (определение принадлежности фрагментов речи конкретным говорящим) и суммаризация (формирование краткого протокола на основе стенограммы)~\cite{building-real-world-meeting-summarization}. Развитие моделей распознавания речи~\cite{whisper}, алгоритмов диаризации~\cite{pyannote-audio} и больших языковых моделей привело к тому, что создание качественных систем автоматического протоколирования стало технически возможным~\cite{auto-meet, meetalk, end-to-end-speech-summarization}.

Для каждого из этапов протоколирования существует множество открытых моделей с разными характеристиками: качеством, скоростью работы и требованиями к вычислительным ресурсам. Каждая модель, в свою очередь, обладает набором настраиваемых параметров, влияющих на итоговый результат. Возникает задача подбора оптимальной конфигурации пайплайна, то есть выбора моделей и их параметров, обеспечивающих наилучшее качество при заданных ограничениях по ресурсам. Полный перебор всех возможных конфигураций требует значительных вычислительных затрат, поэтому целесообразно применить методы эволюционной оптимизации~\cite{skobtsov-evolution}.

В данной курсовой работе предлагается генетический алгоритм для подбора оптимальной конфигурации модулей транскрибации и диаризации в системе автоматического протоколирования совещаний на русском языке. Полная система протоколирования включает три этапа, однако в данной работе рассматриваются только первые два --- транскрибация и диаризация. Этап суммаризации исключён из рассмотрения, так как оценка качества суммаризации с использованием больших языковых моделей требует значительных вычислительных затрат (порядка 20--40 минут на каждую оценку), что делает применение генетического алгоритма для оптимизации этого этапа практически невозможным в рамках доступного вычислительного бюджета.


\newpage
\section{Постановка задачи}

Модульная система автоматического протоколирования совещаний представляет собой пайплайн, состоящий из нескольких последовательных этапов обработки аудиозаписи. На каждом этапе может быть использована одна из нескольких доступных моделей, каждая из которых обладает набором настраиваемых параметров. Различные сочетания моделей и параметров образуют пространство конфигураций пайплайна.

\textbf{Задача оптимизации} формулируется следующим образом: найти конфигурацию пайплайна $\mathbf{x}^*$, минимизирующую целевую функцию:

\begin{equation}
\mathbf{x}^* = \arg\min_{\mathbf{x} \in \mathcal{X}} f(\mathbf{x}),
\end{equation}

\begin{equation}
f(\mathbf{x}) = \alpha \cdot \text{WER}(\mathbf{x}) + \beta \cdot \text{DER}(\mathbf{x}) + \gamma \cdot T(\mathbf{x}),
\end{equation}

\noindent
где $\mathcal{X}$ --- пространство допустимых конфигураций, WER (Word Error Rate)~\cite{morris-asr-metrics} --- ошибка транскрибации, DER (Diarization Error Rate)~\cite{speaker-diarization-review} --- ошибка диаризации, $T$ --- нормализованное время выполнения пайплайна, а $\alpha = 0{,}4$, $\beta = 0{,}4$, $\gamma = 0{,}2$ --- весовые коэффициенты, определяющие баланс между качеством и скоростью.

\subsection{Ограничения и вычислительный бюджет}

Эксперименты проводятся на сервере с GPU Tesla T4 (16~ГБ видеопамяти) и 16~ГБ оперативной памяти. Используется русскоязычный датасет совещаний, разработанный в рамках дипломной работы, содержащий 8 записей совещаний с полной разметкой: текстом реплик, идентификаторами спикеров и временными метками. Датасет представлен в четырёх вариантах нарастающей сложности (raw, simple, medium, hard), различающихся условиями записи~\cite{ami}.

Для ограничения вычислительных затрат приняты следующие решения:

\begin{enumerate}
    \item Используется только один вариант датасета (raw --- чистая склейка реплик без шумов). Это оправдано тем, что целью является сравнение конфигураций моделей, а не оценка их устойчивости к шуму.
    \item Используется половина датасета (4 совещания из 8, около 45 минут аудио). Это позволяет сократить время одного прогона пайплайна с~10 до~5 минут.
    \item Этап суммаризации исключён. Инференс больших языковых моделей для суммаризации на Tesla~T4 занимает 5--10 минут на одно совещание. Для половины датасета (4 совещания) это даёт дополнительные 20--40 минут на каждую оценку конфигурации, что многократно увеличивает общее время работы алгоритма и делает задачу непрактичной.
\end{enumerate}

Суммарный вычислительный бюджет ограничен 10 часами на Tesla~T4. Пространство конфигураций содержит 9375 возможных вариантов (см. раздел~2). При полном переборе, с учётом ~5 минут на оценку одной конфигурации, потребовалось бы около 780 часов вычислений. Это делает полный перебор практически невозможным и обосновывает применение эвристических методов оптимизации, таких как генетические алгоритмы.


\newpage
\section{Пространство конфигураций}

В данном разделе описываются модели и параметры, образующие пространство конфигураций для оптимизации.

\subsection{Модели транскрибации}

Для транскрибации рассматриваются пять моделей, поддерживающих русский язык:

\begin{itemize}
    \item \textbf{Whisper large-v3}~\cite{whisper} --- мультиязычная модель распознавания речи от OpenAI, обученная на 680\,000 часов данных. Одна из самых известных открытых моделей.
    \item \textbf{Whisper medium}~\cite{whisper} --- уменьшенная версия Whisper, обеспечивающая более высокую скорость работы при некотором снижении качества.
    \item \textbf{Faster-Whisper large-v3}~\cite{faster-whisper} --- реализация Whisper large-v3 на оптимизированном бэкенде CTranslate2~\cite{ctranslate2}, обеспечивающая ускорение в 4 раза при том же качестве.
    \item \textbf{GigaAM-CTC}~\cite{giga-am} --- модель семейства GigaAM, специализированная на русском языке, использующая CTC-декодирование. Отличается высокой скоростью работы.
    \item \textbf{GigaAM-RNN-T}~\cite{giga-am} --- модель того же семейства с RNN-T декодированием, обеспечивающая более высокое качество при несколько меньшей скорости~\cite{giga-am-v3}.
\end{itemize}

\subsection{Модели диаризации}

Для диаризации рассматриваются три модели:

\begin{itemize}
    \item \textbf{pyannote 3.1}~\cite{pyannote-audio} --- модель из библиотеки pyannote.audio, широко используемая в исследованиях.
    \item \textbf{pyannote Community-1}~\cite{pyannote-community-1} --- улучшенная открытая модель из той же библиотеки, показывающая лучшие результаты на открытых датасетах.
    \item \textbf{Sortformer}~\cite{sortformer} --- модель от NVIDIA NeMo, использующая новый подход к разрешению пермутаций говорящих.
\end{itemize}

\subsection{Параметры}

Помимо выбора моделей, конфигурация включает следующие параметры:

\begin{itemize}
    \item \textbf{beam\_size} --- ширина лучевого поиска при декодировании. Влияет только на модели семейства Whisper; для GigaAM фиксирован равным~1. Бо\'{л}ьшие значения повышают качество, но увеличивают время.
    \item \textbf{vad\_threshold} --- порог детекции голосовой активности (Silero VAD~\cite{silero-vad}). Влияет как на транскрибацию, так и на диаризацию: слишком низкий порог приводит к ложным срабатываниям на шуме, слишком высокий --- к пропуску тихой речи.
    \item \textbf{min\_speech\_duration} --- минимальная длительность речевого сегмента в секундах. Сегменты короче данного порога отбрасываются. Слишком малое значение приводит к появлению ложных сегментов, слишком большое --- к потере коротких реплик.
    \item \textbf{clustering\_threshold} --- порог кластеризации при определении говорящих. Определяет чувствительность разделения голосов: низкие значения ведут к избыточному разделению, высокие --- к объединению разных говорящих в один кластер.
\end{itemize}

Все параметры дискретизированы для обеспечения эффективного кэширования результатов. Пространство конфигураций представлено в таблице~\ref{tab:config-space}.

\begin{table}[H]
\centering
\caption{Пространство конфигураций пайплайна}
\label{tab:config-space}
\begin{tabular}{l l l}
\toprule
\textbf{Ген (параметр)} & \textbf{Тип} & \textbf{Допустимые значения} \\
\midrule
Модель транскрибации & категориальный & 5 моделей \\
beam\_size & дискретный & \{1, 3, 5, 7, 10\} \\
vad\_threshold & дискретный & \{0.3, 0.4, 0.5, 0.6, 0.7\} \\
Модель диаризации & категориальный & 3 модели \\
min\_speech\_duration & дискретный & \{0.25, 0.5, 0.75, 1.0, 1.5\}~с \\
clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
\bottomrule
\end{tabular}
\end{table}

Общее число конфигураций: $5 \times 5 \times 5 \times 3 \times 5 \times 5 = 9375$.


\newpage
\section{Генетический алгоритм}

\subsection{Кодирование хромосомы}

Каждая хромосома представляет собой вектор из шести генов, соответствующих параметрам конфигурации пайплайна (таблица~\ref{tab:config-space}). Каждый ген кодируется целым числом --- индексом в массиве допустимых значений соответствующего параметра. Такое кодирование позволяет единообразно работать как с категориальными (модели), так и с дискретными числовыми параметрами.

\subsection{Генетические операторы}

\textbf{Селекция.} Используется турнирный отбор с размером турнира $k = 3$: из популяции случайно выбираются три особи, и лучшая из них становится родителем.

\textbf{Кроссовер.} Применяется равномерный кроссовер: каждый ген потомка независимо берётся от одного из двух родителей с равной вероятностью.

\textbf{Мутация.} Каждый ген мутирует с вероятностью $p_{\text{mut}} = 0{,}15$. При мутации с вероятностью 70\% выбирается соседнее значение по шкале допустимых значений (смещение на $\pm 1$ позицию), а с вероятностью 30\% --- случайное значение из всего диапазона. Такой подход обеспечивает плавное исследование окрестности текущего решения и возможность выхода из локальных оптимумов.

\textbf{Элитизм.} Две лучшие особи текущего поколения без изменений переносятся в следующее поколение, что гарантирует неубывание лучшего найденного решения.

Параметры алгоритма приведены в таблице~\ref{tab:ga-params}.

\begin{table}[H]
\centering
\caption{Параметры генетического алгоритма}
\label{tab:ga-params}
\begin{tabular}{l l}
\toprule
\textbf{Параметр} & \textbf{Значение} \\
\midrule
Размер популяции & 15 \\
Число поколений & 25 \\
Размер турнира & 3 \\
Вероятность мутации (на ген) & 0.15 \\
Число элитных особей & 2 \\
Веса целевой функции ($\alpha$, $\beta$, $\gamma$) & 0.4, 0.4, 0.2 \\
\bottomrule
\end{tabular}
\end{table}

\subsection{Модульное кэширование}

Ключевой особенностью задачи является независимость модулей транскрибации и диаризации: оба работают непосредственно с аудиозаписью и не зависят от результатов друг друга. Это позволяет кэшировать результаты на уровне отдельных модулей:

\begin{itemize}
    \item Результаты транскрибации кэшируются по ключу \texttt{(модель, beam\_size, vad\_threshold)} и содержат значение WER и время выполнения.
    \item Результаты диаризации кэшируются по ключу \texttt{(модель, min\_speech\_duration, clustering\_threshold, vad\_threshold)} и содержат значение DER и время выполнения.
\end{itemize}

Если две хромосомы различаются только параметрами диаризации, повторный запуск транскрибации не требуется, и наоборот. Это значительно сокращает число фактических вычислений, особенно на поздних поколениях, когда популяция сходится к небольшой области пространства конфигураций.

\subsection{Пакетное планирование по моделям}

Загрузка нейросетевой модели в память GPU занимает 30--60 секунд для крупных моделей. При наивной реализации, когда каждая конфигурация оценивается отдельно, модели загружаются и выгружаются многократно, что приводит к значительным накладным расходам.

Для решения этой проблемы реализован пакетный планировщик вычислений. После каждого поколения все не кэшированные конфигурации группируются по модели: сначала запускаются все конфигурации, использующие одну и ту же модель транскрибации, затем --- все конфигурации с одной моделью диаризации. Модель загружается в память один раз для всего пакета, что устраняет избыточные циклы загрузки и выгрузки.

\subsection{Общая схема алгоритма}

Алгоритм работает следующим образом:

\begin{enumerate}
    \item Инициализация случайной популяции из 15 особей.
    \item Оценка всех особей: разделение на модули транскрибации и диаризации, проверка кэша, группировка не кэшированных конфигураций по моделям, пакетный запуск, сохранение результатов в кэш, вычисление целевой функции.
    \item Сортировка популяции по значению целевой функции.
    \item Формирование нового поколения: перенос 2 элитных особей, заполнение оставшихся мест потомками, полученными турнирным отбором, равномерным кроссовером и мутацией.
    \item Переход к шагу 2. Повторение в течение 25 поколений.
\end{enumerate}


\newpage
\section{Результаты экспериментов}

\subsection{Сходимость алгоритма}

На рисунке~\ref{fig:convergence} представлена динамика целевой функции по поколениям. Значение целевой функции для лучшей особи быстро улучшается в первых 4 поколениях (от 13.0 до 11.3), после чего происходит более медленное уточнение. Начиная с 10-го поколения алгоритм выходит на плато. Среднее значение по популяции сходится к значению лучшей особи, что свидетельствует о концентрации популяции в области оптимума.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.85\textwidth]{img/convergence.png}
    \caption{Сходимость генетического алгоритма: значение целевой функции лучшей особи и среднее по популяции}
    \label{fig:convergence}
\end{figure}

\subsection{Лучшие найденные конфигурации}

В таблице~\ref{tab:top-configs} для каждой уникальной комбинации моделей транскрибации и диаризации представлена лучшая найденная конфигурация параметров.

\begin{table}[H]
\centering
\small
\caption{Лучшие конфигурации для каждой уникальной комбинации моделей}
\label{tab:top-configs}
\begin{tabular}{c l l c c c c}
\toprule
\textbf{\#} & \textbf{Транскрибация} & \textbf{Диаризация} & \textbf{WER,\,\%} & \textbf{DER,\,\%} & \textbf{T,\,мин} & $f(\mathbf{x})$ \\
\midrule
1 & GigaAM-RNN-T & Sortformer       & 5.32 & 19.07 & 7.45 & 11.25 \\
2 & GigaAM-CTC   & Sortformer       & 6.54 & 19.07 & 5.29 & 11.30 \\
3 & GigaAM-RNN-T & pyannote Comm.-1 & 5.32 & 20.50 & 6.36 & 11.60 \\
4 & GigaAM-CTC   & pyannote Comm.-1 & 6.54 & 20.50 & 4.20 & 11.66 \\
5 & F.-Whisper large-v3 & Sortformer & 7.59 & 19.01 & 6.01 & 11.84 \\
\bottomrule
\end{tabular}
\end{table}

Лучшей конфигурацией является сочетание GigaAM-RNN-T и Sortformer с параметрами: beam\_size~=~1, vad\_threshold~=~0.5, min\_speech\_duration~=~0.5~с, clustering\_threshold~=~0.6. Данная конфигурация обеспечивает WER~=~5.32\% и DER~=~19.07\%.

Модели семейства GigaAM стабильно превосходят модели Whisper по качеству транскрибации русской речи, что объясняется их специализацией на русскоязычных данных. Модель Sortformer обеспечивает наилучшее качество диаризации, хотя pyannote Community-1 показывает сопоставимые результаты. Оптимальные значения параметров (vad\_threshold~=~0.5, min\_speech\_duration~=~0.5~с, clustering\_threshold~=~0.6) представляют собой умеренные значения, что соответствует ожиданиям: крайние значения параметров, как правило, ухудшают результат.

\subsection{Распределение конфигураций}

На рисунке~\ref{fig:scatter} представлено распределение всех оценённых конфигураций в пространстве WER--DER. Цвет точек отражает значение целевой функции. Видно, что алгоритм сконцентрировал поиск в области малых значений WER и DER (нижний левый угол), при этом также исследовав значительную часть пространства.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.85\textwidth]{img/wer_der_scatter.png}
    \caption{WER и DER оценённых конфигураций. Цвет отражает значение целевой функции, звездой отмечена лучшая конфигурация}
    \label{fig:scatter}
\end{figure}

\subsection{Частота моделей в лучших конфигурациях}

На рисунке~\ref{fig:model-freq} показано, как часто различные модели встречаются в 20 лучших найденных конфигурациях. Модель GigaAM-RNN-T доминирует среди моделей транскрибации (14 из 20), что соответствует её лучшему качеству распознавания русской речи. Модель Sortformer присутствует во всех 20 лучших конфигурациях, что подтверждает её превосходство в задаче диаризации.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.95\textwidth]{img/model_frequency.png}
    \caption{Частота моделей в 20 лучших конфигурациях}
    \label{fig:model-freq}
\end{figure}

\subsection{Эффективность кэширования}

За 25 поколений алгоритм выполнил 93 уникальных модульных вычисления: 27 конфигураций транскрибации и 66 конфигураций диаризации. При этом было оценено 121 уникальное сочетание параметров (полная конфигурация пайплайна). Без модульного кэширования потребовалось бы 242 модульных вычисления (121~$\times$~2), то есть кэширование сократило объём вычислений в 2.6 раза.

\subsection{Сравнение с другими стратегиями поиска}

Для оценки эффективности генетического алгоритма проведено сравнение со случайным поиском. Результаты представлены в таблице~\ref{tab:comparison}.

\begin{table}[H]
\centering
\caption{Сравнение стратегий поиска}
\label{tab:comparison}
\begin{tabular}{l c c c c}
\toprule
\textbf{Стратегия} & \textbf{Конфигураций} & $f(\mathbf{x}^*)$ & \textbf{WER, \%} & \textbf{DER, \%} \\
\midrule
Полный перебор  & 9375 & --- & --- & --- \\
Случ. поиск (15 конф.)  & 15   & 13.03 & 6.99 & 23.35 \\
Случ. поиск (60 конф.)  & 60   & 12.20 & 6.54 & 21.50 \\
Случ. поиск (120 конф.) & 120  & 11.60 & 5.57 & 19.80 \\
ГА (25 поколений)       & 93 мод. выч. & 11.25 & 5.32 & 19.07 \\
\bottomrule
\end{tabular}
\end{table}

Генетический алгоритм с 93 модульными вычислениями нашёл конфигурацию лучше, чем случайный поиск со 120 оценками полного пайплайна ($f = 11{,}25$ против $f = 11{,}60$). При этом случайный поиск со 120 конфигурациями занимает $120 \times 5 = 600$ минут (10 часов) --- весь доступный вычислительный бюджет, тогда как ГА укладывается в~4 часа.

По сравнению с полным перебором, генетический алгоритм оценил лишь $93 / 9375 \approx 1\%$ от общего числа модульных конфигураций. При оценочном времени выполнения одного модульного вычисления около 2.5 минуты, общее время работы алгоритма составляет около 4 часов, что более чем в~100 раз быстрее полного перебора (780 часов).


\newpage
\section*{Заключение}
\addcontentsline{toc}{section}{Заключение}

В данной курсовой работе разработан генетический алгоритм для подбора оптимальной конфигурации модулей транскрибации и диаризации в модульной системе автоматического протоколирования совещаний на русском языке.

Реализованный алгоритм включает модульное кэширование результатов, позволяющее избежать повторных вычислений при изменении параметров одного из модулей, а также пакетное планирование вычислений, группирующее конфигурации по модели для минимизации затрат на загрузку и выгрузку нейросетевых моделей.

Экспериментальная апробация показала, что алгоритм сходится к близкому к оптимальному решению за 4--10 поколений, выполняя при этом лишь 93 модульных вычисления --- около 1\% от полного пространства поиска в 9375 конфигураций. Лучшая найденная конфигурация (GigaAM-RNN-T + Sortformer, WER~=~5.32\%, DER~=~19.07\%) превосходит результат случайного поиска, использующего весь 10-часовой вычислительный бюджет (120 конфигураций). Оценочное время работы алгоритма составляет около 4 часов на Tesla~T4, что более чем в 100 раз быстрее полного перебора.

В дальнейшем, в рамках дипломной работы, планируется расширение подхода на этап суммаризации при условии увеличения вычислительных ресурсов, а также апробация алгоритма на реальных данных с использованием полного датасета.


\newpage
\printbibliography[heading=bibintoc]


\newpage
\section*{Приложение 1. Исходный код файла ga.py}
\addcontentsline{toc}{section}{Приложение 1. Исходный код файла ga.py}
\label{app:ga}
\lstinputlisting[language=Python]{../ga/ga.py}

\newpage
\section*{Приложение 2. Исходный код файла run\_pipeline.py}
\addcontentsline{toc}{section}{Приложение 2. Исходный код файла run\_pipeline.py}
\label{app:run-pipeline}
\lstinputlisting[language=Python]{../ga/run_pipeline.py}

\newpage
\section*{Приложение 3. Исходный код файла generate\_plots.py}
\addcontentsline{toc}{section}{Приложение 3. Исходный код файла generate\_plots.py}
\label{app:generate-plots}
\lstinputlisting[language=Python]{../ga/generate_plots.py}


\end{document}
