Speech

диаризация

Speaker diarization — разметка аудио по спикерам: кто говорил и когда.

Что такое диаризация

Speaker diarization (диаризация спикеров) — задача разметки аудиозаписи по спикерам: определить «кто говорил когда» без предварительного знания о том, кто именно участвовал. В отличие от ASR, диаризация не распознаёт слова, а только сегментирует по говорящим.

Типичный output: список временных отрезков с меткой спикера:

[0.0 - 5.3] SPEAKER_00: "Добро пожаловать..."
[5.5 - 12.1] SPEAKER_01: "Спасибо, рад здесь быть..."
[12.4 - 18.7] SPEAKER_00: "Расскажите о себе..."

Стандартный pipeline диаризации

  1. VAD (Voice Activity Detection): найти участки с речью, убрать тишину
  2. Segmentation: разбить на短короткие сегменты
  3. Embedding: вычислить speaker embedding для каждого сегмента
  4. Clustering: сгруппировать схожие embeddings (один кластер = один спикер)
  5. Refinement: уточнить границы сегментов

pyannote.audio

Лидирующий open-source инструмент для диаризации. Предобученные модели на Hugging Face Hub:

from pyannote.audio import Pipeline

pipeline = Pipeline.from_pretrained(
    "pyannote/speaker-diarization-3.1",
    use_auth_token="HF_TOKEN"
)

diarization = pipeline("conversation.wav")

for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"[{turn.start:.2f}s → {turn.end:.2f}s] {speaker}")

Диаризация + транскрипция

Мощная комбинация для meeting notes, анализа колл-центров:

# 1. Диаризация: кто говорил когда
diarization = diarize_pipeline("meeting.mp3")

# 2. Транскрипция: что говорили
segments, _ = whisper_model.transcribe("meeting.mp3", word_timestamps=True)

# 3. Объединение: назначить спикера каждому слову
# По перекрытию временных меток

Метрики качества

DER (Diarization Error Rate): аналог WER для диаризации. Учитывает missed speech, false alarm, confusion.

Сложности

  • Много спикеров одновременно (overlapping speech) — трудно разделить
  • Короткие реплики — мало данных для embedding
  • Незнакомые голоса vs speaker identification (с базой голосов)

Связанные термины

Готовы запустить GPU-задачу?

Запустить GPU-сервер