
Представьте переговорную, где одновременно говорят несколько человек, а системе нужно понять, когда говорит целевой спикер, и выделить именно его голос. Задача нетривиальная, но именно её нам и нужно было решить.
Над этим мы с коллегами работали в проекте PVAD (Personal Voice Activity Detection) — технологии для определения того, когда в общем аудиопотоке говорит конкретный человек. Короткий простой обзор на один из кейсов нашей команды.
В чём было дело
Проект мы разрабатывали в составе команды Singularis. Перед нами стояла прикладная и одновременно исследовательская цель: на основе короткого образца голоса целевого спикера научиться:
-
определять фрагменты, где говорит именно он;
-
подавлять фоновый шум;
-
подавлять посторонние голоса;
-
а также попробовать воспроизвести SOTA-подход к шумоочистке без выделения целевого спикера.
По сути, нужно было решить классическую задачу: в общем аудиопотоке определить и выделить голос одного конкретного человека среди других голосов и шума.
Как решали?
Работа шла как полноценный R&D-проект. Мы проводили эксперименты с несколькими направлениями:
-
сквозная модель шумоподавления со встроенным распознаванием целевого спикера;
-
персонализированное определение голосовой активности — модель, которая на коротких фрагментах аудио определяет, где присутствует речь нужного человека;
-
подход для шумоочистки без выделения целевого спикера, чтобы сравнить результат с опубликованными SOTA-показателями.
В качестве основы использовали Demucs, дополнив модель эмбеддингами голоса целевого спикера. Для формирования представления голоса спикера использовались архитектура ResNet и технология x-vector. В работе также использовались Kaldi, PyTorch и TensorFlow.
Ну как там с деталями?
Для обучения и проверки использовались два типа данных:
-
крупные публичные датасеты, включая LibriSpeech и VoxCeleb2;
-
небольшие наборы данных от заказчика — именно для тестирования на его сценариях.
Общий объём публичных данных превышал 1 ТБ. В ряде экспериментов мы дополнительно делали предобработку, конвертацию и аугментацию данных, а обучение могло идти по нескольку дней на нескольких машинах одновременно.
За время проекта было проведено более 100 экспериментов с разными параметрами моделей и обучения. Это был не один «счастливый запуск», а длинная серия проверок гипотез: от архитектуры до настроек обучения и подготовки данных.
А в итоге?
Для PVAD нам удалось добиться целевых показателей как при близком расположении говорящего к микрофону, так и при записи с расстояния, а также улучшить качество работы модели на тестовых данных конечного заказчика.
Отдельно тестировался denoiser-контур, но здесь задача оказалась значительно сложнее: воспроизвести за ограниченный срок результаты уровня SOTA — то есть лучших опубликованных на тот момент решений — не удалось.
И это тоже важный результат. В R&D-проектах полезен не только успешный финал, но и честная граница применимости подхода — выяснить, что уже работает, что требует большего объёма данных, а что пока остаётся зоной дальнейших исследований.

PVAD — наглядный пример применения прикладного ML
Для человека это выглядит просто: «позвонить, чтобы система слышала именно его». Но внутри такого сценария — сложная комбинация аудиообработки, выделения признаков, обучения моделей и проверки на шумных данных.
Автор: roman7sky


