PVAD: как научить ИИ слышать нужного человека в шумной комнате. Demucs.. Demucs. LibriSpeech.. Demucs. LibriSpeech. PyTorch.. Demucs. LibriSpeech. PyTorch. resnet.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow. VoxCeleb2.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow. VoxCeleb2. x-vector.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow. VoxCeleb2. x-vector. выделение голоса.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow. VoxCeleb2. x-vector. выделение голоса. Машинное обучение.. Demucs. LibriSpeech. PyTorch. resnet. tensorflow. VoxCeleb2. x-vector. выделение голоса. Машинное обучение. шумоподавление.
PVAD: как научить ИИ слышать нужного человека в шумной комнате - 1

Представьте переговорную, где одновременно говорят несколько человек, а системе нужно понять, когда говорит целевой спикер, и выделить именно его голос. Задача нетривиальная, но именно её нам и нужно было решить.

Над этим мы с коллегами работали в проекте 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: как научить ИИ слышать нужного человека в шумной комнате - 2

PVAD — наглядный пример применения прикладного ML

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

Автор: roman7sky

Источник