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 диаризации
- VAD (Voice Activity Detection): найти участки с речью, убрать тишину
- Segmentation: разбить на短короткие сегменты
- Embedding: вычислить speaker embedding для каждого сегмента
- Clustering: сгруппировать схожие embeddings (один кластер = один спикер)
- 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 (с базой голосов)
Связанные термины
- pyannote — библиотека для диаризации
- speaker embedding — вектор голоса спикера
- VAD — первый шаг диаризации
- транскрипция — дополняет диаризацию текстом
Готовы запустить GPU-задачу?
Запустить GPU-сервер