(100 ms) along the whole speech signal. This process results in a graph of distances with respect to time. The graph is smoothed by a low-pass filtering operation, and then all the significant local maxima are searched because they represent potential speaker change points. A local maximum is regarded as significant when the differences between its value and those of the minima surrounding it are above a certain threshold, and when there is no higher local maximum in its vicinity. Thus, the local maximum has to fulfill the following condition to be significant:

\begin{equation}
|max - min_l| > \alpha\sigma
\quad \text{and} \quad
|max - min_r| > \alpha\sigma
\end{equation}

where $\alpha$ is a real number, $\sigma$ is the standard deviation of the distances along the plot, and $min_l$ and $min_r$ are the left and the right minima, respectively, around the peak $max$.

\subsection{Second step: BIC refinement}

A $\Delta$BIC value is computed for each potential speaker change point detected in the first step to validate or discard this point. The $\Delta$BIC value is given by \cite{3}

\begin{equation}
\Delta \text{BIC} = -R + \lambda P,
\end{equation}

where

\begin{equation}
R = \frac{N}{2} \log |\Sigma| - \frac{N_1}{2} \log |\Sigma_1| - \frac{N_2}{2} \log |\Sigma_2|,
\end{equation}

$\lambda$ is a penalty factor which has to be experimentally tuned in order to reduce the number of false alarms without increasing the number of missed detections,

\begin{equation}
P = \frac{1}{2} \left(d + \frac{1}{2} d(d+1)\right) \log N,
\end{equation}

$N_1$ and $\Sigma_1$ are the number and the covariance matrix of the feature vectors in the window $W_1$, respectively, $N_2$ and $\Sigma_2$ are the number and the covariance matrix of the feature vectors in the window $W_2$, respectively, $N = N_1 + N_2$, $\Sigma$ is the covariance matrix of the feature vectors of both windows together, and $d$ is the dimension of the feature vectors.

A potential speaker change point is regarded as a true speaker change if the $\Delta$BIC value for this point is negative.

\section{Modified DISTBIC algorithm}

The DISTBIC algorithm allows to obtain good speaker change detection results, nonetheless it has some weak points. We have focused on these points and suggest some improvements of the algorithm in order to obtain even better results. The improvements are specified in next subsections.

\subsection{Silence and breathing elimination}

Silence and breathing may cause a lot of false alarms in speaker change detection tasks. Therefore we used a simple but efficient silence detector before the speaker change detection process. The speech signal was divided into segments the length of which was 10 ms. Short-time energy and the number of zero crossings \cite{4} were computed for each segment. If both the short-time energy and the number of zero crossings were lower than experimentally derived thresholds, the segment was regarded as containing silence and was temporarily eliminated from the utterance.

Sometimes short sections with a high energy can occur in silent parts of the utterance. Such sections can be caused for example by the speaker breathing. The high energy impels the silence detector to regard these sections as speech. In order to overcome this problem, we implemented a clustering algorithm: if a part of a speech signal shorter than 645 ms was surrounded by silent segments, this part was also regarded as silence. On the contrary, if there was a silent segment shorter than 250 ms between two segments containing speech, this segment was regarded as containing speech.

\subsection{Speaker change candidate detection}

Equally as in Section 2.1, the potential speaker change points were detected on the smoothed graph of the symmetric Kullback-Leibler distance. However, the condition (2) necessary to detect the potential speaker change points was changed. The reason for the change was the fact, that the condition (2) did not allow to detect some local maxima of the graph as the potential speaker change points. The problems were caused mainly by the maxima that were rather near each other, so that the minimum between them was too high to satisfy the condition (2). An example of such a kind of peaks is shown in Figure~\ref{figure_1}. For that reason the conjunction in (2) was substituted with the disjunction, i.e. a local maximum was regarded as a potential speaker change point if it satisfied the condition

\begin{equation}
|max - min_l| > \alpha\sigma
\quad \text{or} \quad
|max - min_r| > \alpha\sigma,
\end{equation}

where $\alpha$, $\sigma$, $min_l$, $min_r$, and $max$ have the same meaning as before.

In order to avoid the situation that two different maxima belonging in fact to one true speaker change would be detected as two potential speaker change points, we required a minimal distance between two maxima: if two maxima were closer than 0.5 s, the lowest one was discarded. This condition protects the algorithm against false alarms.

\subsection{Speaker change position location}

Having detected the potential speaker change points, we used the $\Delta$BIC value (3) to discard or validate the points similarly

\begin{figure}
\centering
\includegraphics{figure_1.pdf}
\caption{True speaker change points causing troubles (marked with a circle) in the condition (2).}
\label{figure_1}
\end{figure}