Автор: Хуан Игнасио Альварес Трехос, исследовательская группа pyannoteAI
Автор: Хуан Игнасио Альварес Трехос, исследовательская группа pyannoteAI
Если вы готовите аудио для клонирования голоса, вам нужно, чтобы все наложения были отфильтрованы, а все моменты тишины — обрезаны. А если вы передаете данные в конвейер транскрипции, вам нужно сохранить каждое слово; даже тихие, даже сказанные одновременно.
Системы диаризации речи зависят от двух базовых компонентов, которые имеют центральное значение для этой задачи: определение активности речи (VAD), которое определяет наличие речи, и определение накладывающейся речи (OSD), которое выявляет одновременную речь нескольких спикеров.
В pyannoteAI та же модель диаризации Precision-3 предоставляет два параметра, которые позволяют пользователям изменять априорные представления модели об активности речи и перекрестных помехах прямо во время инференса без необходимости повторного обучения.
В этой статье мы проводим бенчмаркинг двух параметров времени инференса: vad_sensitivity и crosstalk_sensitivity для 11 акустических доменов DIHARD и делимся настройками, которые вы можете скопировать в собственный конвейер.
Основные выводы
- Качество VAD высокое по всем направлениям, но только Precision позволяет менять рабочую точку точности/полноты во время инференса.
Качество VAD высокое по всем направлениям, но только Precision позволяет менять рабочую точку точности/полноты во время инференса.
- vad_sensitivity имеет стабильную оптимальную зону между 0.0 и +0.8 для большинства доменов: небольшие изменения безопасны, большие — нет.
vad_sensitivity имеет стабильную оптимальную зону между 0.0 и +0.8 для большинства доменов: небольшие изменения безопасны, большие — нет.
- crosstalk_sensitivity имеет резкий спад: оставайтесь в диапазоне от −1 до 0 для общей диаризации. Увеличивайте значение только в том случае, если полнота наложений — ваша единственная цель (например, при очистке датасета синтеза речи).
crosstalk_sensitivity имеет резкий спад: оставайтесь в диапазоне от −1 до 0 для общей диаризации. Увеличивайте значение только в том случае, если полнота наложений — ваша единственная цель (например, при очистке датасета синтеза речи).
- Ни одна конфигурация не является лучшей сразу для всех 11 доменов. Оптимальный vad_sensitivity варьируется от −0.8 (Ресторан) до +2.0 (Аудиокниги).
Ни одна конфигурация не является лучшей сразу для всех 11 доменов. Оптимальный vad_sensitivity варьируется от −0.8 (Ресторан) до +2.0 (Аудиокниги).
- Тюнинг на этапе инференса теперь является реальной альтернативой повторному обучению при адаптации к новому акустическому домену.
Тюнинг на этапе инференса теперь является реальной альтернативой повторному обучению при адаптации к новому акустическому домену.
Два параметра за 60 секунд
Оба параметра находятся в модели Precision-3 и принимают число с плавающей точкой в диапазоне [−5.0, +5.0] со значением по умолчанию 0.0.
vad_sensitivity : Управляет строгостью определения голосовой активности (VAD).
- ↑ выше → выше точность, меньше ложноположительных результатов (меньше неречевых звуков распознается как речь)
↑ выше → выше точность, меньше ложноположительных результатов (меньше неречевых звуков распознается как речь)
- ↓ ниже → выше полнота, меньше ложноотрицательных результатов (меньше пропущенной речи)
↓ ниже → выше полнота, меньше ложноотрицательных результатов (меньше пропущенной речи)
crosstalk_sensitivity : Управляет чувствительностью обнаружения пересекающейся речи (перекрестных помех).
- ↑ выше → выше полнота, обнаружено больше наложений
↑ выше → выше полнота, обнаружено больше наложений
- ↓ ниже → выше точность, обнаруживаются только явные наложения
↓ ниже → выше точность, обнаруживаются только явные наложения
Ни один из параметров не существует в community-1 ; они эксклюзивны для Precision-3. В этой статье мы оцениваем их влияние на DIHARD, чтобы понять компромиссы и дать практические рекомендации по их настройке.
Насколько хорошо на самом деле работает VAD?
Прежде чем говорить о настройке, стоит проверить базовое качество VAD. Мы сравниваем три системы на DIHARD: Precision, нашу открытую модель community-1 и Silero VAD (надежный базовый VAD с открытым исходным кодом) в их наилучших рабочих точках.
Модель
VAD F1
Лучшая настройка
Silero VAD
91.9%
порог = 0.3
Community
95.0%
чувствительность = 0
Precision
95.8%
чувствительность = 0
Обе модели pyannote опережают Silero, причем Precision примерно на 0.8 пункта выше Community-1. Для Precision рабочую точку можно смещать во время инференса с помощью vad_sensitivity, которая регулирует лог-априори модели, а не применяет пороговое значение постфактум.
Какой vad_sensitivity мне использовать?
На графике ниже изолирована только ошибка VAD (ПРОПУСК + ЛОЖНАЯ ТРЕВОГА, без путаницы спикеров) по всему диапазону параметров.
Предлагаемый график: линейный график, ось X = vad_sensitivity от −1.0 до +1.0, ось Y = ПРОПУСК + ЛОЖНАЯ ТРЕВОГА (%), три линии (precision-2, community, Silero с масштабированием до [−1, 1]).
Предлагаемый график: линейный график, ось X = vad_sensitivity от −1.0 до +1.0, ось Y = ПРОПУСК + ЛОЖНАЯ ТРЕВОГА (%), три линии (precision-2, community, Silero с масштабированием до [−1, 1]).
Выделяются три момента:
- precision имеет ровный минимум в диапазоне от +0.4 до +0.8 (13.33%–13.39%). Вы можете перемещаться в пределах этого диапазона без последствий — это полезно, когда правильная настройка вызывает сомнения.
precision имеет ровный минимум в диапазоне от +0.4 до +0.8 (13.33%–13.39%). Вы можете перемещаться в пределах этого диапазона без последствий — это полезно, когда правильная настройка вызывает сомнения.
- community следует той же форме, но с удвоенной базовой линией ложных тревог при отрицательных значениях агрессивности.
community следует той же форме, но с удвоенной базовой линией ложных тревог при отрицательных значениях агрессивности.
- Silero догоняет конкурентов только ценой существенной пропущенной речи — ее уровень ложных тревог при низких пороговых значениях огромен.
Silero догоняет конкурентов только ценой существенной пропущенной речи — ее уровень ложных тревог при низких пороговых значениях огромен.
Но где находится глобальная оптимальная зона — картина для каждого домена гораздо более разнообразна.
Оптимальная чувствительность VAD зависит от домена
Домен
Лучшее DER для Precision
Оптимальная чувствительность VAD
Аудиокниги
4.10%
+2.0
Трансляция
8.61%
+1.4
Клинический
14.01%
+1.2
Суд
4.06%
−0.2
CTS
7.84%
+0.2
Maptask
4.08%
+1.2
Совещание
26.33%
+1.6
Ресторан
39.98%
−0.8
Социо поле
12.20%
+0.6
Социо лаборатория
5.70%
0.0
Веб-видео
49.41%
+1.0
Закономерность интуитивно понятна, как только вы ее видите: чистое, структурированное аудио поощряет агрессивный VAD (Аудиокниги, Maptask, Совещание), в то время как зашумленные среды с несколькими спикерами требуют снисходительного VAD, чтобы не «проглотить» настоящую речь (Ресторан при −0.8). Единое глобальное значение по умолчанию не может быть оптимальным везде.
Как эти домены соотносятся с продакшеном
Большинство из вас выпускают продукты не в «домене DIHARD», а в определенных индустриях. Вот как домены из бенчмарка соотносятся с вариантами использования, о которых мы слышим чаще всего:
- CTS (Разговорная телефонная речь) → кол-центры, аналитика поддержки клиентов, коучинг звонков по продажам
CTS (Разговорная телефонная речь) → кол-центры, аналитика поддержки клиентов, коучинг звонков по продажам
- Клинический → медицинская транскрипция, ведение заметок врач-пациент, телемедицина
Клинический → медицинская транскрипция, ведение заметок врач-пациент, телемедицина
- Трансляция → ТВ, сериалы, развлечения, спортивные комментарии
Трансляция → ТВ, сериалы, развлечения, спортивные комментарии
- Суд → судебные разбирательства, показания, регуляторные слушания
Суд → судебные разбирательства, показания, регуляторные слушания
Так что, если вы создаете продукт для аналитики колл-центров, строка CTS (vad_sensitivity = +0.2) станет вашей отправной точкой. Если вы занимаетесь медицинской транскрипцией, обратите внимание на Clinical (+1.2). Для субтитров на телевидении и в развлекательной сфере — Broadcast (+1.4). Для юридических технологий — Court (−0.2); обратите внимание, что в юридических записях приветствуется инклюзивный VAD, поскольку тихо звучащие показания свидетелей — это именно та речь, которую вы больше всего хотите сохранить.
Наибольшие преимущества Precision перед Community наблюдаются в чистых, структурированных доменах, где лучшая модель может использовать очередность реплик: Maptask (10.1% → 4.1%), Court (8.3% → 4.1%), Clinical (24.3% → 14.0%). Самые сложные домены (Restaurant, Webvideo, Meeting) остаются сложными для обеих моделей, но precision-2 сохраняет стабильное преимущество.
Какое значение crosstalk_sensitivity следует использовать?
У Silero нет эквивалента в этой части — это одноканальное решение без функции обнаружения пересекающейся речи. Поэтому мы сравниваем только Precision и Community.
В своих лучших рабочих точках Precision достигает 59.7% OSD F1 против 48.2% у Community — разрыв в 11 пунктов, который отражает реальную разницу в возможностях, а не просто результат настройки.
Предлагаемый график: линейный график, ось X = crosstalk_sensitivity от −5 до +10, ось Y = DER (%), две линии (precision-2, community), с затененной полосой, отмечающей рекомендованную зону [−1, 0].
Предлагаемый график: линейный график, ось X = crosstalk_sensitivity от −5 до +10, ось Y = DER (%), две линии (precision-2, community), с затененной полосой, отмечающей рекомендованную зону [−1, 0].
Кривая DER имеет четкую форму: оптимальная зона находится в районе от 0 до −1, после чего следует обрыв. При повышении выше +2 показатель DER быстро ухудшается, так как модель заполняет вывод ложными сегментами перекрытия. Community разрушается при значениях выше +7 (DER более 100%). Precision ухудшается более плавно, но обрыв все равно присутствует.
Готовые конфигурации, которые можно скопировать
Три правила, которые следует запомнить:
- vad_sensitivity прощает ошибки — регулируйте с шагом 0.2–0.4; оптимальная зона широка.
vad_sensitivity прощает ошибки — регулируйте с шагом 0.2–0.4; оптимальная зона широка.
- crosstalk_sensitivity — нет; оставайтесь в диапазоне от −1 до +1, если у вас нет особых причин поднимать значение выше.
crosstalk_sensitivity — нет; оставайтесь в диапазоне от −1 до +1, если у вас нет особых причин поднимать значение выше.
- Настраивайте под конкретный домен, а не глобально — даже нескольких десятков размеченных минут достаточно, чтобы найти лучшую рабочую точку по сравнению с дефолтной.
Настраивайте под конкретный домен, а не глобально — даже нескольких десятков размеченных минут достаточно, чтобы найти лучшую рабочую точку по сравнению с дефолтной.
Почему это важно
Современная диаризация переходит от статических моделей к настраиваемым конвейерам. Архитектура важна, но не менее важно дать пользователям регулятор для адаптации одной и той же модели к совершенно разным акустическим условиям: подготовка данных для клонирования голоса и транскрипция шумного ресторана не должны требовать двух разных моделей.
vad_sensitivity и crosstalk_sensitivity — это первые два таких регулятора в Precision. Мы работаем над новыми.
Попробуйте сами
Запустите Precision-3 с этими параметрами в песочнице pyannoteAI или прочитайте пост о запуске precision-3, чтобы получить полную картину. Если вы хотите узнать, как мы все это измеряем, наше руководство по оценке для диаризации спикеров подробно описывает DER, JER и остальные метрики.






