Speech

speaker embedding

Плотный вектор, кодирующий уникальные характеристики голоса конкретного человека.

Что такое speaker embedding

Speaker embedding — плотный числовой вектор фиксированной размерности (обычно 192–512), описывающий акустические характеристики голоса конкретного человека. Модель обучается так, чтобы embeddings одного спикера были близки, а разных — далеки в метрическом пространстве.

Применения

Speaker diarization: сравнение embeddings временных сегментов для кластеризации по спикерам. Сегменты с похожими embeddings → один спикер.

Speaker verification: «это тот же человек?» — сравнить embedding аудио с эталонным embedding. Используется в биометрической аутентификации.

Voice cloning (TTS): TTS-системы как XTTS используют speaker embedding эталонного голоса для генерации аудио с тем же тембром.

Модели speaker embeddings

d-vectors (Google): ранняя нейросетевая модель speaker embeddings.

x-vectors (Kaldi/JHU): обученные на задаче классификации спикеров. Долго были стандартом.

ECAPA-TDNN (SpeechBrain): современный SOTA для speaker verification. Используется в pyannote.

WavLM-based: embeddings из self-supervised speech моделей (WavLM, HuBERT). Лучшее качество на сложных условиях.

Вычисление speaker embedding

from speechbrain.inference import EncoderClassifier

classifier = EncoderClassifier.from_hparams(
    source="speechbrain/spkrec-ecapa-voxceleb",
    run_opts={"device": "cuda"}
)

# Вычислить embedding из аудио (3–10 секунд)
embeddings = classifier.encode_batch(
    classifier.load_audio("speaker.wav").unsqueeze(0)
)
# embeddings.shape: (1, 1, 192)

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

  • диаризация — основное применение speaker embeddings
  • pyannote — использует speaker embeddings для кластеризации
  • TTS — использует speaker embedding для voice cloning
  • VAD — предшествует извлечению speaker embeddings

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

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