Знайте кой кога говори: Създайте ИИ с множество говорещи в реално време с NVIDIA Nemotron 3 Diarization
Превърнете припокриващите се разговори в данни, разпознаващи говорителите, с един модел с отворени тегла и 100 милиона параметъра — класиран на първо място в класацията за диаризация на VoiceArena с 14,72% грешка при диаризацията (DER).
Защо диаризацията на говорителите е важна
Всеки разговор носи два слоя информация: какво е казано и кой го е казал. Разпознаването на реч улавя и транскрибира думите. Диаризацията на говорителите класифицира кой кога е говорил, като помага на приложенията да свържат казаното с правилния участник.
Представете си транскрипция от среща, разговор с клиент или подкаст, в която всяко изречение е правилно, но нито едно не е приписано на говорител. Можете да прочетете думите, но не можете надеждно да определите кой е поел ангажимент, кой е повдигнал възражение или кой участник е прекъснал разговора. Търсенето, обобщенията, задачите, анализът на разговорите и паметта на гласовите агенти стават по-малко полезни.
Диаризацията на говорителите идентифицира времевите интервали, през които всеки говорител е активен, включително интервали, в които хората говорят едновременно. След това тези времеви маркери могат да се комбинират с автоматично разпознаване на реч (ASR), за да се създаде транскрипция, приписана на говорителите.
NVIDIA Nemotron 3 Diarization е модел с отворени тегла и 100 милиона параметъра, който заема първо място в класацията Diarization-Bench на VoiceArena с 14,72% грешка при диаризацията (DER). Поддържайки до осем говорители в разговори на живо и записи, той обработва припокриваща се реч, обработка на части за гъвкава дължина на записите и персонализируема латентност при стрийминг.
По-ранни модели като 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 kHz и го преобразува в характеристики на мел-спектрограма със стъпка на кадъра 10 ms. Той подрежда тези характеристики с коефициент осем, създавайки кадри от 80 ms за 31-слоен Transformer енкодер с ротационни позиционни вграждания (RoPE).
Фигура 1. Nemotron 3 Diarization преобразува аудиото във вероятности за активност на говорителите, подредени по момента на появата им. Контекстите AOSC и FIFO поддържат инференцията в режим на стрийминг.
Над Transformer слоя Conv1D слой увеличава честотата на предсказанията до разделителната способност на входните характеристики. Изходът по подразбиране е плаващоточен тензор [T, 8]: T времеви стъпки по осем възможни канала на говорители. Всяка стойност е вероятността говорител да е активен в този момент. Стъпката по подразбиране е 10 ms и може да бъде конфигурирана на друг кратен на 10 ms интервал.
Това представяне обработва естествено припокриването. Ако двама души говорят едновременно, два канала могат да бъдат активни в един и същ кадър. Последващата обработка преобразува тези вероятности в общи етикети на говорители с начални и крайни времеви маркери.
По време на инференция в режим на стрийминг контекстът се осигурява от два вида памет:
- Кешът на говорителите в реда на появяване (AOSC) запазва полезна информация за говорители, наблюдавани в по-ранни части, организирана според каналите им, подредени по момента на появата.
- Опашката first-in, first-out (FIFO) предоставя контекст от последните кадри преди текущата част.
Входният буфер включва и десен контекст — аудио, което непосредствено следва текущата част. Повече десен контекст може да помогне на модела да интерпретира преходите между говорители, докато по-малко десен контекст намалява времето, което трябва да изчака преди да произведе резултат. Заедно текущата част, десният контекст, FIFO опашката и кешът на говорителите позволяват на един модел да работи при няколко нива на латентност.
Обработката на части премахва фиксираното максимално времетраене на аудиото, наложено от модела. Производителността все пак може да се влоши при необичайно дълги записи или аудио със силен шум, реверберация, далечно записване или промяна на домейна.
Диаризацията и ASR с приписване на говорители (ASR с множество говорители) са различни задачи
Самостоятелната диаризация произвежда активност на говорителите и времеви маркери, но не и произнесените думи. ASR произвежда текст, но не винаги запазва приписването към говорители. Конвейерът за транскрипция с приписване на говорители комбинира двата изхода:
Фигура 2. Конвейер за транскрипция с приписване на говорители от край до край, който комбинира времевите маркери от диаризацията на аудиото с автоматичното разпознаване на реч (ASR), за да съпостави произнесените думи с конкретни говорители.
Това разделение е важно при проектирането на система. Грешките при диаризацията включват пропусната реч, фалшиви детекции на реч, неправилно приписване на говорители и грешки по границите. Грешките на ASR засягат думите. Приложенията трябва да оценяват и двата компонента, както и комбинирания конвейер, върху предназначеното им аудио.
Баланс между латентност и точност
Същият модел поддържа препоръчителни латентности на входния буфер от 30,4, 1,04, 0,64 и 0,32 секунди. По-кратките буфери позволяват на системата да реагира по-бързо, докато повече контекст обикновено подобрява точността и пропускателната способност. Тези стойности измерват аудиото, буферирано преди инференцията; изчисленията, мрежата, ASR и обработката от приложението добавят към латентността от край до край. Макар че моделът технически може да използва входен буфер от 80 ms, 0,32 секунди е най-ниската препоръчителна конфигурация. Таблицата с конфигурации в „Първи стъпки“ показва как да изберете работна точка.
Резултати от бенчмарка: първо място в първоначалния Diarization-Bench на VoiceArena
В първоначалните резултати от Diarization-Bench на VoiceArena NVIDIA Nemotron 3 Diarization зае първо място сред 12 системи и общо 17 конфигурации, оценени върху 139 разговора на английски с обща продължителност приблизително 22 часа. При оценяване на припокриваща се реч, системно генерирана детекция на активността на речта и без толеранс по границите, Nemotron 3 Diarization постигна 14,72% грешка при диаризацията (DER), в сравнение с 19,3% за следващата система — относително намаление от приблизително 24%. Той също зае първо място при толеранси от 100 ms и 250 ms, както и при записи на живо и онлайн записи. Тези първоначални резултати може да се променят, когато Voice Arena завърши оценката си за Version 1 и съпоставения статистически анализ.
Фигура 3. Резултати от Voice Arena Diarization-Bench v1 (английски език, толеранс 0 ms, по-ниската DER е по-добра), показващи NVIDIA Nemotron 3 Diarization на първо място с 14,72% DER.
Фигурата по-долу използва резултатите от оценката на Nemotron 3 Diarization. Те сравняват модела с предишния четириговорителен Streaming Sortformer на NVIDIA при посочените настройки за оценяване и пропускателна способност.
Фигура 4. Производителност по показателя грешка при диаризацията (DER) в осем публични бенчмарка при латентност на изхода 1,04 секунди, показваща водещите резултати на Nemotron 3 Diarization в сравнение с предишната базова линия Sortformer на NVIDIA.
Измерване на точността на диаризацията
Основният показател, използван за оценка на модела, е грешката при диаризацията (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, а не резултатите от предварителния модел.
Средно относително намаление на DER с 40% при латентност 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 с двама говорители окончателният модел отчита 5,98% DER в сравнение с 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 kHz, съдържащ двама или повече говорители, и заменете /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 kHz. Nemotron 3 Diarization поддържа едноканално аудио във формати .wav, .flac, .opus и .mp3 с честота 16 kHz. Проектиран е за Linux системи с поддържани NVIDIA Ampere, Hopper или Blackwell GPU.
Изберете работната точка за латентност и качество
Nemotron 3 Diarization предоставя стрийминг параметри в единици от 80 ms енкодерни кадри. Препоръчителните конфигурации обхващат обработка в офлайн стил до стрийминг със свръхниска латентност.
| Конфигурация | Латентност на входния буфер | Кеш на говорителите | FIFO | Част | Десен контекст | Период на обновяване на кеша |
|---|---|---|---|---|---|---|
| Офлайн стил | 30.4 s | 264 | 40 | 340 | 40 | 300 |
| Ниска латентност | 1.04 s | 264 | 264 | 9 | 4 | 222 |
| Много ниска латентност | 0.64 s | 264 | 264 | 6 | 2 | 222 |
| Свръхниска латентност | 0.32 s | 264 | 264 | 3 | 1 | 222 |
Стойностите за латентност в тази таблица са латентност на входния буфер, изчислена като:(CHUNK_LEN + RIGHT_CONTEXT) × 80 ms
Те не включват изчисленията на модела, мрежовия пренос, ASR или обработката от приложението. Макар че моделът технически може да използва входен буфер с дължина едва 80 ms, 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
- Интерактивно демо и примерно приложение
- ASR моделът Parakeet и примери с времеви маркери
Създавайте с партньорите от екосистемата на NVIDIA
Модели, споменати в тази статия 3
Общност
· Регистрирайте се или влезте, за да коментирате

-
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.
← Към новинитеОще новини
AI News U.S. TRANSCOM внедрява рандомизиран ИИ за защита на военната логистика TechCrunch Spotify ви дава ключовете към алгоритъма си за препоръки с пускането на „Taste Profile“ в САЩ The Decoder Alibaba пуска Qwen Audio 3.1 с нови модели и намалява цените на AI аудиото с до 95 процента TechCrunch Ema набира 77 млн. долара, докато изкуственият интелект започва да навлиза в корпоративния софтуер и услугите The Verge OpenAI привлича ключови ръководители от Patreon преди предстоящото съобщение The Decoder OpenAI наема съоснователя на Patreon Сам Ям да ръководи ново подразделение Creator Product










