Знайте, хто й коли говорив: створюйте багатоголосий ШІ в реальному часі за допомогою NVIDIA Nemotron 3 Diarization
Перетворюйте розмови, що накладаються, на дані з інформацією про мовців за допомогою однієї моделі зі 100 мільйонами параметрів і відкритими вагами — №1 у таблиці лідерів VoiceArena з показником помилок діаризації (DER) 14,72%.
Чому діаризація мовців важлива
Кожна розмова містить два рівні інформації: що було сказано і хто це сказав. Розпізнавання мовлення фіксує та транскрибує слова. Діаризація мовців класифікує, хто коли говорив, допомагаючи застосункам пов’язати сказане з правильним учасником.
Уявіть транскрипт зустрічі, розмови з клієнтом або подкасту, у якому кожне речення правильне, але жодне не прив’язане до мовця. Ви можете прочитати слова, але не можете надійно визначити, хто взяв на себе зобов’язання, хто висловив заперечення або який учасник перебив іншого. Пошук, підсумки, завдання, аналітика розмов і пам’ять голосового агента стають менш корисними.
Діаризація мовців визначає часові інтервали, протягом яких активний кожен мовець, зокрема інтервали, коли люди говорять одночасно. Потім ці часові мітки мовців можна поєднати з автоматичним розпізнаванням мовлення (ASR), щоб створити транскрипт із зазначенням мовців.
NVIDIA Nemotron 3 Diarization — це модель зі 100 мільйонами параметрів і відкритими вагами, яка посідає №1 у таблиці лідерів VoiceArena Diarization-Bench із показником помилок діаризації (DER) 14,72%. Підтримуючи до восьми мовців у живих і записаних розмовах, вона обробляє накладання мовлення, фрагментовану обробку для записів довільної тривалості та налаштовану затримку потокової обробки.
Раніші моделі, як-от NVIDIA Streaming Sortformer, започаткували цей підхід для діаризації чотирьох мовців, зокрема контрольну точку streaming diar_streaming_sortformer_4spk-v2.1, використану нижче як базову. Nemotron 3 Diarization розширює підтримку до восьми мовців і підвищує точність та пропускну здатність, виміряні в наведених далі оцінюваннях.
Як працює Nemotron 3 Diarization
Одна модель для офлайн-розмов і потокової обробки
Системи діаризації мають розв’язувати дві пов’язані проблеми. По-перше, вони повинні виявляти мовлення та призначати його правильному мовцеві. По-друге, вони повинні зберігати це призначення протягом усієї розмови, навіть після тиші, перебивань або тривалих пауз між репліками мовця.
Потокова обробка ускладнює другу проблему. Офлайн-модель може одночасно проаналізувати весь запис. Потокова система отримує лише невеликий фрагмент нового аудіо та обмежений контекст. Без ефективного механізму пам’яті мовець, призначений одному вихідному каналу в поточному фрагменті, може отримати інший канал у наступному.
Nemotron 3 Diarization дотримується підходу Sortformer, упорядковуючи вихідних мовців за часом їхньої першої появи. Перший новий голос стає першим каналом мовця, наступний новий голос — другим і так далі. Таке впорядкування за часом появи стабілізує універсальні мітки мовців моделі та усуває потребу щоразу розв’язувати нову перестановку мовців для кожного фрагмента.
Nemotron 3 Diarization навчали на загальнодоступних і ліцензованих даних мовлення, зокрема на розмовах із кількома мовцями та анотаціями, отриманих із реального світу за ліцензією David AI. Додаткове ліцензоване аудіо David AI стало джерелом матеріалів для великомасштабних змодельованих англомовних і багатомовних сумішей 21 мовою. Додавання даних David AI до навчання зменшило складений показник помилок діаризації (DER) на 0,77 абсолютного пункту — з 11,19% до 10,42% — як для офлайн-подібного режиму, так і для режиму наднизької затримки.
Модель підтримує до восьми каналів мовців. Це анонімні мітки, а не ідентичності реальних людей: модель може повідомити, що speaker_2 говорив від однієї часової мітки до іншої, але не визначає, що speaker_2 — конкретна особа. Подальші застосунки можуть зіставити ці анонімні ідентифікатори каналів із явними ідентичностями мовців, поєднавши часові мітки з метаданими зустрічі, профілями користувачів або активними моделями верифікації мовців.
Від аудіо до активності мовців
Модель приймає одноканальне аудіо з частотою 16 кГц і перетворює його на ознаки мел-спектрограм із кроком кадру 10 мс. Вона об’єднує ці ознаки з коефіцієнтом вісім, створюючи кадри тривалістю 80 мс для 31-шарового енкодера Transformer із обертовими позиційними вбудовуваннями (RoPE).
Рисунок 1. Nemotron 3 Diarization перетворює аудіо на ймовірності активності мовців, упорядкованих за часом появи. Контекст AOSC і FIFO підтримує потоковий висновок.
Над Transformer шар Conv1D збільшує частоту дискретизації прогнозів до роздільної здатності вхідних ознак. Типовий вихід — тензор із плаваючою комою [T, 8]: T часових кроків для восьми можливих каналів мовців. Кожне значення — це ймовірність активності мовця в цей момент. Типовий крок становить 10 мс і може бути налаштований на інше кратне 10 мс значення.
Таке представлення природно обробляє накладання мовлення. Якщо двоє людей говорять одночасно, два канали можуть бути активними в одному кадрі. Постобробка перетворює ці ймовірності на універсальні мітки мовців із часовими мітками початку й завершення.
Під час потокового висновку контекст забезпечують два типи пам’яті:
- Кеш мовців у порядку появи (Arrival-Order Speaker Cache, AOSC) зберігає корисну інформацію про мовців, виявлених у попередніх фрагментах, організовану відповідно до каналів у порядку їхньої появи.
- Черга first-in, first-out (FIFO) надає контекст останніх кадрів перед поточним фрагментом.
Вхідний буфер також містить правий контекст — аудіо безпосередньо після поточного фрагмента. Більший правий контекст може допомогти моделі інтерпретувати переходи між мовцями, тоді як менший зменшує час очікування перед видачею результату. Разом поточний фрагмент, правий контекст, черга FIFO та кеш мовців дають змогу одній моделі працювати в кількох режимах затримки.
Фрагментований висновок усуває фіксоване максимальне обмеження тривалості аудіо, нав’язане моделлю. Водночас якість може погіршуватися на надзвичайно довгих записах або аудіо з сильним шумом, реверберацією, дальнім записом чи зміщенням домену.
Діаризація та ASR із визначенням мовців (ASR для кількох мовців) — різні завдання
Автономна діаризація створює активність мовців і часові мітки, але не слова, які вони вимовляють. ASR створює текст, але не обов’язково зберігає прив’язку до мовців. Конвеєр транскрипції з визначенням мовців поєднує обидва результати:
Рисунок 2. Наскрізний конвеєр транскрипції з визначенням мовців, який поєднує часові мітки діаризації аудіо з автоматичним розпізнаванням мовлення (ASR), щоб зіставити вимовлені слова з конкретними мовцями.
Цей поділ важливий під час проєктування системи. Помилки діаризації включають пропущене мовлення, хибне виявлення мовлення, неправильне призначення мовця та помилки меж. Помилки ASR впливають на слова. Застосунки мають оцінювати обидва компоненти та комбінований конвеєр на призначеному для них аудіо.
Баланс між затримкою та точністю
Та сама модель підтримує рекомендовані затримки вхідного буфера 30,4, 1,04, 0,64 та 0,32 секунди. Коротші буфери дають системі змогу швидше реагувати, тоді як більший контекст зазвичай підвищує точність і пропускну здатність. Ці значення вимірюють аудіо, буферизоване перед висновком; обчислення, мережа, ASR та обробка застосунком додають затримку наскрізного процесу. Хоча технічно модель може використовувати вхідний буфер 80 мс, найнижча рекомендована конфігурація становить 0,32 секунди. У таблиці конфігурацій у розділі «Початок роботи» показано, як вибрати робочий режим.
Результати бенчмарку: №1 у першому Diarization-Bench від VoiceArena
У перших результатах VoiceArena Diarization-Bench NVIDIA Nemotron 3 Diarization посіла перше місце серед 12 систем і 17 загальних конфігурацій систем, оцінених на 139 англомовних розмовах загальною тривалістю приблизно 22 години. З урахуванням накладання мовлення, системним виявленням активності мовлення та без допуску на межі Nemotron 3 Diarization досягла показника помилок діаризації (DER) 14,72% проти 19,3% у системи, що посіла наступне місце, — це відносне зниження приблизно на 24%. Вона також посіла перше місце з допусками 100 і 250 мс, а також для очних та онлайн-записів. Ці початкові результати можуть змінитися після завершення Voice Arena оцінювання версії 1 та парного статистичного аналізу.
Рисунок 3. Результати Voice Arena Diarization-Bench v1 (англійська мова, допуск 0 мс, менший DER — краще), де NVIDIA Nemotron 3 Diarization посідає №1 із DER 14,72%.
Наведений нижче рисунок використовує результати оцінювання Nemotron 3 Diarization. Вони порівнюють модель із попередньою чотиримовцевою Streaming Sortformer від NVIDIA за оприлюдненими налаштуваннями оцінювання та пропускної здатності.
Рисунок 4. Показник помилок діаризації (DER) на восьми загальнодоступних бенчмарках із затримкою виходу 1,04 секунди, що демонструє результати Nemotron 3 Diarization рівня передових технологій порівняно з попередньою базовою моделлю NVIDIA Sortformer.
Вимірювання точності діаризації
Основна метрика, яку використовують для оцінювання моделі, — показник помилок діаризації (DER). Він поєднує три типи помилок:
- Пропущене мовлення: еталонний мовець був активним, але система не виявила відповідного мовлення.
- Хибна тривога: система позначила мовця як активного, хоча еталон не містив відповідного мовлення.
- Плутанина мовців: система виявила мовлення в правильний час, але призначила його неправильному мовцеві.
Рисунок 5. DER додає пропущене мовлення, хибні тривоги та плутанину мовців, а потім ділить суму на загальний еталонний час мовлення. Кожен еталонний мовець, який говорить одночасно з іншими, враховується в знаменнику.
Налаштування бенчмарку можуть істотно змінювати DER, тому протокол оцінювання є частиною результату. Оцінювання Nemotron 3 містить 901 запис із конкретними умовами, що охоплюють багатомовне телефонне мовлення, зустрічі, ближні та дальні мікрофони, запис із кількох мікрофонів і складні акустичні середовища. Накладання мовлення враховується в кожному оцінюванні.
DIHARD III, AliMeeting, AMI та NOTSOFAR1 використовують нульовий допуск, тобто жодна толерантність до меж не виключається з оцінювання. CALLHOME-Part2 використовує допуск 0,25 секунди. Результати отримано за допомогою скрипту оцінювання NeMo e2e_diarize_speech.py.
Наведене нижче порівняння використовує diar_streaming_sortformer_4spk-v2.1, попередню чотиримовцеву потокову модель Sortformer від NVIDIA, як базову. У ньому використано фінальні значення Nemotron-3-Diarization, а не результати попередньої моделі.
У середньому на 40% менший відносний DER при затримці 1,04 секунди
Рисунок 6. DER на повному наборі для фінальної моделі та попередньої базової моделі NVIDIA при затримці вхідного буфера 1,04 секунди. Менше — краще.
При затримці вхідного буфера 1,04 секунди Nemotron 3 Diarization зменшує DER на всіх восьми перелічених умовах оцінювання. Відносне зниження становить від 9,0% на CALLHOME-Part2 до 65,2% на NOTSOFAR1 MHM.
Незважене середнє восьми відносних знижень за наборами даних становить 41,0%. Іншими словами, це середнє відносних покращень між умовами оцінювання; це не об’єднаний DER, обчислений шляхом зведення всіх записів в одну оцінку.
Покращення також стабільне в різних робочих режимах. Для кожної затримки, спільної для обох моделей (30,4, 1,04 і 0,32 секунди), фінальна модель має нижчий DER на повному наборі для кожного оціненого набору даних.
Рисунок 7. DER на повному наборі за різних налаштувань затримки вхідного буфера. Попередня базова модель не має конфігурації 0,64 секунди.
Покращення зростають за умов із більшою кількістю мовців
Підтримка восьми мовців дає змогу обробляти зустрічі та групові розмови з більш ніж чотирма учасниками. Перевага в бенчмарках також збільшується в підмножинах DIHARD III, CALLHOME-Part2 і NOTSOFAR1 із більшою кількістю мовців.
Рисунок 8. DER при затримці вхідного буфера 30,4 секунди в розрізі кількості мовців. Заштриховані області містять понад чотири мовці.
Рисунок також зберігає важливу деталь: у підмножині CALLHOME із двома мовцями фінальна модель показує DER 5,98% порівняно з 5,68% у попередньої базової моделі. Однак у повному оцінюванні CALLHOME-Part2 DER покращується з 10,32% до 9,10%, причому більші переваги спостерігаються в підмножинах із більшою кількістю мовців.
DIHARD III об’єднує записи з п’ятьма–дев’ятьма мовцями в один результат. Дев’ять мовців перевищують максимальну підтримувану кількість Nemotron 3 Diarization — вісім, тому цей сукупний результат містить аудіо за межами визначеного обмеження кількості мовців.
Точність і пропускна здатність
Система діаризації, придатна для розгортання, має балансувати між точністю та пропускною здатністю. У картці моделі наведено коефіцієнт прискорення в реальному часі (RTFx), обчислений як загальна тривалість аудіо, поділена на загальний час обробки. Вищий RTFx означає, що система обробляє більше аудіо за одиницю обчислювального часу.
Рисунок 9. DER на повному наборі DIHARD III проти скомпільованої пропускної здатності з розміром пакета 32. Результати отримано в BF16 із бекендом NeMo PyTorch на NVIDIA RTX PRO 5000.
У конфігурації 30,4 секунди Nemotron 3 Diarization досягає 15 113× RTFx із розміром пакета 32 за використання torch.compile(), порівняно з 2 619× у попередньої базової моделі, водночас знижуючи DER DIHARD III з 19,09% до 12,73%. У конфігурації 1,04 секунди вона досягає 865× проти 136×, одночасно знижуючи DER з 19,60% до 13,18%.
Ці результати вимірюють пакетну пропускну здатність на оприлюдненій тестовій системі. Їх не слід трактувати як затримку одного потоку або наскрізну затримку застосунку. Розробникам слід тестувати повний конвеєр на цільовому обладнанні, зокрема переміщення даних, діаризацію, ASR і подальшу обробку.
Подивіться Nemotron 3 Diarization у дії
Відкрийте живу демонстрацію моделі Nemotron Diarization, щоб поєднати часові мітки мовців моделі з розмовою, за якою можна стежити. Застосунок пропонує синтетичні розмови, режим для восьми мовців, введення з мікрофона в реальному часі та сценарії стрес-тестування. Ми також додали живий мікрофон для багатомовних моделей ASR, тож ви можете виконувати потокову діаризацію в реальному часі для мовців, які розмовляють різними мовами.
Почніть у розділі Conversation із попередньо завантаженою темою, а потім стежте за активністю мовців і живим транскриптом під час відтворення розмови. Зверніть увагу на перебивання та порівняйте час звучання голосів із відображеною активністю мовців. Для власної розмови використовуйте Live Mic або Multilingual Live Mic. Нарешті, ви можете завантажити попередньо записаний аудіофайл на вкладці Audio File.
Наведений нижче вигаданий діалог ілюструє різницю, яку створює прив’язка до мовців; це не виміряний результат демонстрації:
| Без прив’язки до мовців | Із прив’язкою до мовців |
|---|---|
| «Я надішлю звіт». «Можете додати цифри?» «Так, до п’ятниці». | speaker_0: «Я надішлю звіт». speaker_1: «Можете додати цифри?» speaker_0: «Так, до п’ятниці». |
З мітками мовців застосунок може пов’язати зобов’язання з тим самим учасником, який відповідає на додаткове запитання. Часова шкала додає інформацію, якої не може показати звичайний текст: два мовці можуть бути активними одночасно. Подальший сумаризатор може використовувати транскрипт із прив’язкою до мовців для вилучення завдань, зберігаючи початкового мовця та часові мітки.
Підготовлені сценарії використовують синтетичне аудіо. Деякі сценарії для восьми мовців містять короткий вступний контекст про мовців перед чутною розмовою; вони ілюструють поведінку з таким контекстом і не є непідготовленим бенчмарком. Імена та ролі учасників належать логіці сценарію застосунку. Nemotron 3 Diarization надає універсальні канали мовців і часові мітки, а не верифікацію особи.
Додайте транскрипцію в реальному часі з урахуванням мовців на пристрої
Argmax додала підтримку NVIDIA Nemotron 3 Diarization в Argmax Pro SDK 3, уможлививши прив’язку мовців у реальному часі для розмов із до восьми мовців, а також представила API транскрипції з попередньою діаризацією, який розділяє мовців до розпізнавання мовлення та призначений для покращення транскрипції складних розмов із накладанням мовлення.
Перегляньте демонстрацію, щоб побачити Nemotron 3 Diarization у роботі з Argmax Pro SDK 3.
Почніть роботу з NVIDIA NeMo Speech
Нижче ми покажемо кілька коротких інструкцій щодо поєднання діаризації з моделями ASR: потоковим ASR, лише діаризацією та офлайн-ASR.
Встановіть залежності
Встановіть системні пакети та залежності NVIDIA NeMo Speech після налаштування Python 3.12 або новішої версії, Cython і актуальної версії PyTorch.
apt-get update && apt-get install -y libsndfile1 ffmpeg
uv pip install Cython packaging
uv pip install 'nemo-toolkit[asr]'
Реалізуйте потокову діаризацію з потоковим ASR (ASR для кількох мовців) у реальних сценаріях
Для оцінювання продуктивності ASR і діаризації (ASR для кількох мовців) зверніться до короткої інструкції з діаризації з потоковим ASR.
Запустіть офлайн-діаризацію запису
Використайте монофонічний запис із частотою 16 кГц, що містить двох або більше мовців, і замініть /path/to/conversation.wav на шлях до нього. У наведеному прикладі завантажується контрольна точка та використовується рекомендована офлайн-подібна конфігурація тривалістю 30,4 секунди.
from nemo.collections.asr.models import SortformerEncLabelModel
diar_model = SortformerEncLabelModel.from_pretrained(
"nvidia/Nemotron-3-Diarization"
)
diar_model.eval()
diar_model.sortformer_modules.spkcache_len = 264
diar_model.sortformer_modules.fifo_len = 40
diar_model.sortformer_modules.chunk_len = 340
diar_model.sortformer_modules.chunk_right_context = 40
diar_model.sortformer_modules.spkcache_update_period = 300
diar_model._check_streaming_parameters()
predicted_segments = diar_model.diarize(
audio=["/path/to/conversation.wav"],
batch_size=1,
)
for segment in predicted_segments[0]:
print(segment)
Метод diarize() повертає сегменти з мітками мовців у вигляді рядків start_seconds end_seconds speaker_id. Наприклад, структура виводу може виглядати так (ілюстративні часові мітки, а не виміряний результат моделі):
0.400 2.100 speaker_0
1.800 3.250 speaker_1
3.600 4.700 speaker_0
Тут обидва мовці активні між 1,800 і 2,100 секундами. Мовець може з’являтися в кількох сегментах, а інтервали не обов’язково мають бути взаємовиключними. Щоб також отримати базові тензори активності мовців, встановіть include_tensor_outputs=True.
API приймає шлях до аудіо, список шляхів, масиви NumPy або маніфест JSON із рядками, розділеними переносами. Передаючи масиви NumPy, вкажіть правильний цілий sample_rate; типова частота дискретизації файлового аудіо — 16 кГц. Nemotron 3 Diarization підтримує одноканальне аудіо .wav, .flac, .opus і .mp3 із частотою 16 кГц. Модель призначена для систем Linux із підтримуваними GPU NVIDIA Ampere, Hopper або Blackwell.
Виберіть робочий режим затримки та якості
Nemotron 3 Diarization надає потокові параметри в одиницях 80-мс кадрів енкодера. Рекомендовані конфігурації охоплюють діапазон від офлайн-подібної обробки до потокової обробки з наднизькою затримкою.
| Конфігурація | Затримка вхідного буфера | Кеш мовців | FIFO | Фрагмент | Правий контекст | Період оновлення кешу |
|---|---|---|---|---|---|---|
| Офлайн-подібна | 30,4 с | 264 | 40 | 340 | 40 | 300 |
| Низька затримка | 1,04 с | 264 | 264 | 9 | 4 | 222 |
| Дуже низька затримка | 0,64 с | 264 | 264 | 6 | 2 | 222 |
| Наднизька затримка | 0,32 с | 264 | 264 | 3 | 1 | 222 |
Значення затримки в цій таблиці — це затримка вхідного буфера, обчислена як: (CHUNK_LEN + RIGHT_CONTEXT) × 80 мс
Вони не включають обчислення моделі, передавання мережею, ASR або обробку застосунком. Хоча технічно модель може використовувати вхідний буфер тривалістю лише 80 мс, найнижча рекомендована конфігурація становить 0,32 секунди. Зменшення затримки зазвичай погіршує і точність, і пропускну здатність, тому розробникам слід обирати робочий режим відповідно до наскрізних вимог продукту, а не лише до тривалості буфера.
Використайте всі п’ять значень параметрів з одного рядка в прикладі висновку, а потім викличте _check_streaming_parameters() перед запуском діаризації. Кеш мовців зберігає контекст попередніх мовців; FIFO керує останньою історією; фрагмент і правий контекст визначають затримку вхідного буфера; період оновлення кешу визначає, який обсяг контексту FIFO використовується для оновлення кешу.
Поєднайте діаризацію з офлайн-ASR
Запускайте ASR і діаризацію для одного запису та на одній часовій шкалі. Наприклад, можна використати Nemotron ASR 3.5 або Parakeet TDT 0.6B v3, які можуть повертати часові мітки слів. Наведений мінімальний офлайн-приклад повторно використовує predicted_segments із попереднього прикладу та пов’язує кожне слово з мовцем, активним у його середині:
from nemo.collections.asr.models import ASRModel
asr_model = ASRModel.from_pretrained(
model_name="nvidia/parakeet-tdt-0.6b-v3"
)
words = asr_model.transcribe(
["/path/to/conversation.wav"], timestamps=True
)[0].timestamp["word"]
turns = []
for segment in predicted_segments[0]:
start, end, speaker = segment.split()
turns.append((float(start), float(end), speaker))
def speaker_at(midpoint):
active = sorted({
speaker for start, end, speaker in turns if start <= midpoint < end
})
if len(active) == 1:
return active[0]
return "overlap/ambiguous" if active else "unassigned"
for word in words:
midpoint = (word["start"] + word["end"]) / 2
label = speaker_at(midpoint)
print(f"{word['start']:.2f}-{word['end']:.2f} {label}: {word['word']}")
Це правило середини є простою евристикою вирівнювання. Воно позначає одночасну активність мовців як неоднозначну, а слова поза виявленим мовленням залишає непризначеними. Воно не розділяє голоси, що накладаються, і не визначає, який саме активний мовець вимовив слово, розпізнане ASR. Для виробничого транскрипту перед об’єднанням сусідніх слів у репліки мовців оцініть вирівнювання меж слів, обробку накладань і помилки обох моделей на репрезентативному аудіо.
Міркування щодо розгортання
Модель підтримує максимум вісім мовців. Якщо в записі їх більше, мовлення може бути пропущене або призначене неправильному каналу. Шум, сильна реверберація, дальній запис, зміщення домену та тривалі розмови також можуть збільшити кількість пропущеного мовлення, хибних тривог, помилок меж або випадків плутанини мовців.
Подальші застосунки мають зберігати корисну невизначеність, а не вважати кожне призначення мовця безпомилковим. Оцінюйте повну систему на аудіо, репрезентативному для цільового середовища, особливо перед використанням прив’язки мовців у регульованих, критичних для безпеки або важливих робочих процесах.
Використання моделі регулюється ліцензійною угодою OpenMDW, версія 1.1.
Ресурси та наступні кроки
- Nemotron 3 Diarization на Hugging Face
- Таблиця лідерів VoiceArena
- Оголошення Argmax Pro SDK 3
- NVIDIA NeMo Speech
- Скрипт наскрізного оцінювання діаризації NeMo
- Стаття про Sortformer
- Стаття про Streaming Sortformer
- Коротка інструкція з діаризації з ASR
- Інтерактивна демонстрація та приклад застосунку
- Модель Parakeet ASR і приклади часових міток
Створюйте разом із партнерами екосистеми NVIDIA
Моделі, згадані в цій статті 3
Більше від цього автора
Спільнота
· Зареєструйтеся або увійдіть, щоб залишити коментар
Моделі, згадані в цій статті 3
Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.










