Если вы готовите аудио для клонирования голоса, вам нужно отфильтровать все наложения и вырезать все паузы тишины. А если вы передаете данные в конвейер транскрипции, вам нужно сохранить каждое слово — даже тихие, даже сказанные одновременно.
Системы диаризации речи зависят от двух базовых компонентов, которые играют центральную роль в этой задаче: обнаружения речевой активности (VAD), которое определяет наличие речи, и обнаружения наложения речи (OSD), которое выявляет одновременную речь нескольких спикеров.
В pyannoteAI та же модель диаризации Precision-3 предоставляет два параметра, позволяющие пользователям менять априорные предположения модели о речевой активности и перекрестных помехах прямо во время вывода без какого-либо переобучения.
В этом посте мы проводим бенчмаркинг двух параметров этапа вывода: vad_sensitivity и crosstalk_sensitivity для 11 акустических доменов DIHARD и делимся настройками, которые можно просто скопировать в собственный конвейер.
Основные выводы
- Качество VAD высокое по всем направлениям, но только Precision позволяет менять рабочую точку точности/полноты (precision/recall) во время вывода.
Качество VAD высокое по всем направлениям, но только Precision позволяет менять рабочую точку точности/полноты (precision/recall) во время вывода.
- Для большинства доменов vad_sensitivity имеет плоскую оптимальную зону между 0.0 и +0.8; небольшие изменения безопасны, а большие — нет.
Для большинства доменов vad_sensitivity имеет плоскую оптимальную зону между 0.0 и +0.8; небольшие изменения безопасны, а большие — нет.
- crosstalk_sensitivity имеет критическую точку: для общей диаризации держите значение в диапазоне от −1 до 0. Увеличивайте его только в том случае, если ваша единственная цель — полнота по наложениям (например, очистка датасета TTS).
crosstalk_sensitivity имеет критическую точку: для общей диаризации держите значение в диапазоне от −1 до 0. Увеличивайте его только в том случае, если ваша единственная цель — полнота по наложениям (например, очистка датасета TTS).
- Ни одна конфигурация не является универсальной для всех 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 : Управляет строгостью обнаружения речевой активности (Voice Activity Detection).
- ↑ выше → больше точности, меньше ложных срабатываний (меньше неречевых звуков распознается как речь)
↑ выше → больше точности, меньше ложных срабатываний (меньше неречевых звуков распознается как речь)
- ↓ ниже → больше полноты, меньше ложных пропусков (меньше пропущенной речи)
↓ ниже → больше полноты, меньше ложных пропусков (меньше пропущенной речи)
crosstalk_sensitivity : Управляет чувствительностью обнаружения наложения речи (перекрестных помех).
- ↑ выше → больше полноты, обнаружено больше наложений
↑ выше → больше полноты, обнаружено больше наложений
- ↓ ниже → больше точности, обнаруживаются только четкие наложения
↓ ниже → больше точности, обнаруживаются только четкие наложения
Ни один из параметров не поддерживается в community-1; они доступны только в Precision-3. В этом посте мы оцениваем их влияние на результаты в DIHARD, чтобы понять компромиссы и дать практические рекомендации по настройке.
Насколько хорошо на самом деле работает VAD?
Прежде чем говорить о настройке, стоит проверить базовое качество VAD. Мы сравниваем три системы на DIHARD: Precision, нашу открытую модель community-1 и Silero VAD (надежный базовый VAD с открытым исходным кодом) в их наилучших рабочих точках.
Модель
VAD F1
Лучшая настройка
Silero VAD
91.9%
threshold = 0.3
Community
95.0%
sensitivity = 0
Precision
95.8%
sensitivity = 0
Обе модели pyannote превосходят Silero, причем Precision примерно на 0.8 пункта опережает Community-1. Для Precision рабочую точку можно смещать во время вывода с помощью vad_sensitivity, которая настраивает лог-априори модели вместо применения порогового значения после обработки.
Какое значение vad_sensitivity мне использовать?
На графике ниже изолирована ошибка только для VAD (MISS + FA, без путаницы спикеров) при переборе параметров.
Предлагаемый график: линейный график, ось X = vad_sensitivity от −1.0 до +1.0, ось Y = MISS+FA (%), три линии (precision-2, community, Silero с измененным масштабом до [−1, 1]).
Предлагаемый график: линейный график, ось X = vad_sensitivity от −1.0 до +1.0, ось Y = MISS+FA (%), три линии (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 догоняет остальные только ценой существенных пропусков речи — его показатель FA при низких порогах огромен.
Silero догоняет остальные только ценой существенных пропусков речи — его показатель FA при низких порогах огромен.
Но глобальная оптимальная зона находится... картина для каждого домена выглядит гораздо более разнообразной.
Оптимальная чувствительность VAD зависит от домена
Домен
Precision лучших DER
Оптимальная чувствительность VAD
Audiobooks
4.10%
+2.0
Broadcast
8.61%
+1.4
Clinical
14.01%
+1.2
Court
4.06%
−0.2
CTS
7.84%
+0.2
Maptask
4.08%
+1.2
Meeting
26.33%
+1.6
Restaurant
39.98%
−0.8
Socio field
12.20%
+0.6
Socio lab
5.70%
0.0
Webvideo
49.41%
+1.0
Закономерность интуитивно понятна, стоит лишь ее увидеть: чистое, структурированное аудио поощряет агрессивный VAD (Audiobooks, Maptask, Meeting), в то время как зашумленные многоголосые среды требуют снисходительного VAD, чтобы не «проглотить» настоящую речь (Restaurant со значением −0.8). Единое глобальное значение по умолчанию не может быть оптимальным везде.
Как эти домены соотносятся с продакшеном
Большинство из вас выпускает продукты не в «домене DIHARD», а в определенных индустриях. Вот как домены из бенчмарка соотносятся с кейсами использования, о которых мы слышим чаще всего:
- CTS (Conversational Telephone Speech) → кол-центры, аналитика поддержки клиентов, коучинг звонков по продажам
CTS (Conversational Telephone Speech) → кол-центры, аналитика поддержки клиентов, коучинг звонков по продажам
- Clinical → медицинская транскрипция, ведение заметок врач-пациент, телемедицина
Clinical → медицинская транскрипция, ведение заметок врач-пациент, телемедицина
- Broadcast → ТВ, сериалы, развлечения, спортивные комментарии
Broadcast → ТВ, сериалы, развлечения, спортивные комментарии
- Court → судебные разбирательства, показания под присягой, регуляторные слушания
Court → судебные разбирательства, показания под присягой, регуляторные слушания
Таким образом, если вы создаете продукт для аналитики колл-центров, строка CTS (vad_sensitivity = +0.2) станет вашей отправной точкой. Если вы занимаетесь медицинской транскрипцией, обратите внимание на Clinical (+1.2). Для субтитров на телевидении и в сфере развлечений — Broadcast (+1.4). Для юридических технологий — Court (−0.2); обратите внимание, что в юридических записях приветствуется инклюзивный VAD, поскольку тихие показания свидетелей — это именно та речь, которую важнее всего сохранить.
Наибольший прирост точности по сравнению с комьюнити-версией наблюдается в чистых, структурированных доменах, где лучшая модель может использовать очередность реплик: 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 и другие метрики.








