Блог AST-SoftPro
NVIDIA NemotronLabs VoiceChat 11B — голосовой агент с задержкой 450 мс и live tool calling
Введение
Голосовые интерфейсы долгое время страдали от одной системной проблемы: они собирались из трёх отдельных моделей — ASR (распознавание речи), LLM (понимание и генерация текста) и TTS (синтез голоса). Каждый стык между моделями добавлял задержку, терял интонацию и не позволял модели «слышать» пользователя, пока та сама говорит. Результат — диалоги с паузами в 1–2 секунды, невозможность перебивать бота и механический звук.
NVIDIA NemotronLabs VoiceChat 11B (выпущена 3 августа 2026) атакует эту проблему напрямую: это единая end-to-end модель на 11 миллиардов параметров, которая одновременно понимает входящий аудиопоток и генерирует ответную речь в полнодуплексном режиме — то есть слушает и говорит параллельно. Задержка смены реплик (turn-taking) составляет около 450 мс, а это первый открытый полнодуплексный голосовой агент с поддержкой live tool calling: модель вызывает внешние функции прямо во время разговора, не прерывая его.
В этой статье — архитектура модели, история Nemotron-линейки, бенчмарки, требования к железу, примеры запуска на Python и сравнение с альтернативами. Статья продолжает наш цикл материалов по речевым технологиям: ранее мы разбирали TTS-модели от Silero до ElevenLabs и ASR-модели 2026 года — T-One, GigaAM, Whisper.
Архитектура: как одна модель заменяет три
Каскадная схема ASR → LLM → TTS имеет фундаментальные ограничения. Во-первых, латентность складывается: распознавание 300–500 мс, генерация текста 200–400 мс, синтез речи ещё 200–300 мс — суммарно ответ приходит через секунду и больше. Во-вторых, на каждом стыке теряется информация: интонация, паузы, акценты — всё, что ASR сводит к плоскому тексту. В-третьих, каскад не умеет полнодуплексность: пока TTS озвучивает ответ, система «не слышит», поэтому перебивание пользователя обрабатывается отдельным детектором активности речи (VAD), а это источник ошибок.
VoiceChat 11B строится иначе — как единый конвейер из четырёх блоков:
-
Fast Conformer Speech Encoder — модуль из модели Nemotron-Speech-Streaming-En-0.6b, кодирует входящий аудио в токены речи (вход — WAV/WebAudio 16 кГц);
-
Nemotron Nano v2 LLM backbone (9B) — гибридная Mamba/Transformer-архитектура, на которую подаются аудиотокены; модель предсказывает текстовые токены ответа;
-
TTS decoder и кодек — превращают сгенерированные текстовые токены обратно в аудиокоды (выход 22.05 кГц);
-
Отдельный канал вывода для tool calling — параллельно с речью модель генерирует скрипты вызова функций в формате
<TOOLCALL>[...]</TOOLCALL>.
Ключевое слово здесь — «полнодуплексный» (full duplex, FD). Модель непрерывно слушает микрофон и одновременно озвучивает ответ. Если пользователь перебивает, модель мгновенно уступает реплику (barge-in) — без отдельного VAD-модуля, это поведение выучено самим нейросетевым стеком.
💡 Для бизнеса это означает: голосовой бот на такой архитектуре ощущается как живой собеседник. В колл-центрах и сервисных чатах задержка в 450 мс против 1–2 секунд у каскадных решений — это измеримое снижение раздражения клиентов и, как следствие, рост конверсии диалога.
История: от Nemotron Nano до VoiceChat
Nemotron — линейка открытых моделей NVIDIA для бизнеса, развиваемая с 2023 года. Краткая хронология:
-
Nemotron-4 (конец 2024) — первая крупная открытая линейка (7B/15B/34B) с акцентом на безопасность и enterprise-требования;
-
Nemotron Nano v1/v2 (2025–2026) — компактные модели 8–9B, оптимизированные под локальный запуск; Nano v2 стала LLM-ядром VoiceChat;
-
Nemotron 3.5 Lightning 30B A3B (2026) — MoE-модель для кодинга и агентных задач (разобрана в нашей статье об этой модели);
-
NemotronLabs VoiceChat 11B (3 августа 2026) — первый голосовой агент линейки.
Отдельно стоит упомянуть Nemotron 3 VoiceChat на NVIDIA NIM — коммерческую версию с 12B параметров, доступную как сервис через build.nvidia.com. Open-weight Labs-версия на 11B — это то, что можно скачать и запустить у себя: лицензия OpenMDW 1.1 позволяет использование в коммерческих продуктах при соблюдении условий соглашения.
⚠️ Важно различать: NemotronLabs VoiceChat 11B (открытые веса, Hugging Face) и Nemotron 3 VoiceChat 12B (закрытая модель как сервис на NIM). В прессе их часто смешивают. Бенчмарки у них разные — например, latency smooth turn taking: ~448 мс у открытой версии против 0.26 с у NIM-версии в условиях контролируемого стенда NVIDIA.
Возможности и бенчмарки
Основные заявленные характеристики:
| Параметр | Значение |
|---|---|
| Параметры | 11B (гибрид Mamba/Transformer) |
| Turn-taking latency | ~450 мс (448 мс в бенчмарке) |
| Latency перебивания (barge-in) | ~480 мс |
| Smooth turn taking TOR | 0.82 |
| User interruption TOR | 1.0 (модель всегда уступает реплику) |
| Pause handling TOR (synthetic / candor) | 0.153 / 0.255 |
| VoiceBench | 2-е место среди открытых FD-моделей |
| Full-Duplex-Bench 1.0 | 2-е место |
| Tool calling | первый открытый FD-агент с live function calling |
| Обучение | ~550 000 часов аудио (реальные + синтетические данные) |
| Язык модели | английский (по model card) |
| Лицензия | OpenMDW 1.1 |
Два момента заслуживают внимания. Первое: pause handling TOR — это доля ложных срабатываний, когда модель «отвечает» на паузу пользователя как на конец реплики. Значения 0.153 и 0.255 говорят о том, что в сложных условиях (задумчивый собеседник) модель всё ещё может перебивать — это известный компромисс полнодуплексных систем: чем быстрее turn-taking, тем выше риск ложного старта.
Второе: бенчмарки на model card — self-reported значения NVIDIA. Независимые тесты Artificial Analysis (Full Duplex Bench + Big Bench Audio) подтверждают, что VoiceChat находится на pareto-фронтиере по паре «конверсационная динамика / речевое рассуждение» среди open-weight моделей — это сильное независимое подтверждение.
💡 При оценке голосовых агентов для своего продукта смотрите не только на latency, но и на pause handling: бот, который перебивает задумавшегося клиента, воспринимается хуже медленного, но терпеливого.
Требования к железу и деплой
Модель рассчитана на NVIDIA GPU с минимум 80 ГБ видеопамяти — это порог уровня A100/H100/H200/B100/B200/RTX 6000 Ada. Для разработки на потребительских картах (24–32 ГБ) официальный запуск не предусмотрен: ни квантованных весов, ни CPU-варианта NVIDIA не публиковала.
Поддерживаемые платформы: Linux, CUDA. Runtime — vLLM в составе оптимизированного контейнера NVIDIA (Triton + vLLM + CUDA). Есть два режима работы:
-
Offline inference — загрузка checkpoint с Hugging Face и batch-инференс «аудио на входе → аудио+текст на выходе». Подходит для оценки качества и тестов tool calling;
-
Interactive streaming — Docker-контейнер NVIDIA с двунаправленным WebSocket API для реального времени. Именно этот режим используется в продакшене голосовых агентов.
⚠️ Если у вас нет 80 ГБ VRAM, рассматривайте альтернативы: каскад Whisper/T-One + LLM + Silero/Piper (разобран в наших статьях про ASR и TTS) укладывается в 8–16 ГБ, либо закрытый сервис Nemotron 3 VoiceChat на NIM. Выбор между «своим железом» и API — вопрос TCO: при высокой нагрузке собственный A100 окупается, при низкой — дешевле подписка.
Примеры использования на Python
Offline-инференс: проверка качества модели
Первый шаг работы с моделью — офлайн-прогон записи разговора через checkpoint. Установка окружения (по README ветки nemotron-labs-voicechat репозитория NVIDIA-NeMo/Speech):
git clone https://github.com/NVIDIA-NeMo/Speech.git
cd Speech && git switch nemotron-labs-voicechat
conda create -y -n voicechat python=3.12 && conda activate voicechat
pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0
pip install -e ".[all]"
pip uninstall -y nvidia-resiliency-ext # конфликт версий, нужен только для обучения
pip install transformers==4.56.0 tokenizers==0.22.0 lhotse==1.32.2 \
huggingface-hub==0.34.4 hf-xet==1.1.9 torchcodec==0.10.0
pip install --no-build-isolation --no-deps causal-conv1d==1.6.2.post1 mamba-ssm==2.3.2.post1
hf download nvidia/NVIDIA-NemotronLabs-VoiceChat-11B --local-dir /path/to/checkpoint
Эти команды создают изолированное окружение с фиксированными версиями — NVIDIA сознательно держит torch 2.10, потому что это последний релиз с готовыми колёсами mamba-ssm и causal-conv1d; на более новом torch сборка через nvcc занимает 20+ минут.
Сам запуск офлайн-инференса:
python examples/speechlm2/offline_voicechat_infer.py \
--checkpoint /path/to/checkpoint \
--wav sample_audio/question.wav \
--output-dir ./out
В каталоге ./out появятся сгенерированная речь агента (WAV) и JSON с текстом. Важно: в аудио-входной файл нужно заложить паузу в конце — модель определяет конец реплики по тишине, без неё ответ будет обрезан.
Offline tool calling: как выглядит вызов функции
Для проверки function calling используется отдельный скрипт с заранее записанным ответом API (live-инструменты в офлайн-режиме не вызываются):
python examples/speechlm2/offline_voicechat_fc_infer.py \
--checkpoint /path/to/checkpoint \
--wav sample_audio/sample_fc.wav \
--api-response-json function_calling/random_number_response.json \
--output-dir ./out_fc
Модель в ответе сгенерирует блок вызова:
<TOOLCALL>[{"name": "generate_random_number", "arguments": {"min": 1, "max": 50}}]</TOOLCALL>
Это ключевой механизм live tool calling: агент сам решает, когда нужен внешний сервис (погода, курс валют, база клиентов), формирует вызов и произносит «on-hold» фразу («Секунду, проверяю для вас»), пока функция выполняется. После получения результата он продолжает разговор с учётом ответа API.
Streaming-агент: минимальный WebSocket-клиент
Продакшен-сценарий — интерактивный стриминг через контейнер NVIDIA. Контейнер поднимается по инструкции из voicechat_realtime_instructions/deploy.md (Triton + vLLM, двунаправленный WebSocket). Клиентская часть на Python выглядит примерно так:
import asyncio, json, websockets
import pyaudio
WS_URL = "ws://localhost:8000/v1/voicechat"
async def voice_agent():
pa = pyaudio.PyAudio()
mic = pa.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True)
async with websockets.connect(WS_URL) as ws:
# отправляем chunks аудио с микрофона в реальном времени
async def send_audio():
while True:
chunk = await asyncio.to_thread(mic.read, 3200) # 100 мс @16 кГц
await ws.send(chunk)
async def receive_audio():
while True:
data = await ws.recv() # ответная речь агента (22.05 кГц)
pa.open(format=pyaudio.paInt16, channels=1,
rate=22050, output=True).write(data)
await asyncio.gather(send_audio(), receive_audio())
asyncio.run(voice_agent())
Схема работы: микрофон режет поток на 100-миллисекундные чанки и шлёт их по WebSocket; сервер стримит обратно аудио ответа, которое сразу озвучивается. Полнодуплексность здесь — в том, что обе стороны передают данные параллельно: вы можете перебить агента, и он уступит реплику за ~480 мс.
⚠️ В production-реализации этот скелет нужно дополнить: обработка обрывов WebSocket с reconnect, буферизация аудио против джиттера сети, логирование транскриптов (модель возвращает и текст — удобно для аудита) и защита от prompt injection через голосовой ввод. Поверхностное копирование демо-кода в продакшен — типичный путь к уязвимостям: голосовой канал — это полноценная поверхность атаки, где злоумышленник может «сказать» агенту то, что не скажет текстовый пользователь. Для критичных сценариев (банкинг, медицина) стоит привлекать специалистов по безопасности речевых систем.
Аналоги: что выбрать вместо VoiceChat 11B
| Модель / решение | Параметры | Полнодуплекс | Tool calling live | Открытые веса | Железо |
|---|---|---|---|---|---|
| NemotronLabs VoiceChat 11B | 11B | да (450 мс) | да (первый открытый) | да (OpenMDW 1.1) | от 80 ГБ VRAM |
| Nemotron 3 VoiceChat (NIM) | 12B | да (260 мс в стенде NVIDIA) | да | нет (API) | — (сервис) |
| GPT-4o Realtime API | закрыто | да (~320 мс) | да | нет (API) | — (сервис) |
| Gemini Live / 2.5 Flash Live | закрыто | да | да | нет (API) | — (сервис) |
| Moshi (Kyutai) | 7B | да (~200 мс) | нет в релизе | да (Apache 2.0) | ~16–24 ГБ |
| Каскад: Whisper/T-One + LLM + Silero/Piper | суммарно 3 модели | нет (VAD-ориентированный) | через LLM | да | 8–16 ГБ |
Логика выбора сводится к трём вопросам. Нужен ли полный контроль над моделью (свои данные, свой голос, свои инструменты)? Тогда open-weight — VoiceChat или Moshi. Критична ли задержка ниже 300 мс и есть ли бюджет на API? Тогда GPT-4o Realtime или Gemini Live. Ограничена ли видеопамять до 24 ГБ? Тогда каскад из отдельных ASR/LLM/TTS — это компромисс по качеству интонации, но единственный реалистичный вариант для локального запуска на рабочей станции.
Moshi от Kyutai — ближайший open-weight конкурент: он быстрее (заявленные ~200 мс) и легче, но не умеет tool calling в релизной версии и уступает по качеству рассуждений (Big Bench Audio). VoiceChat 11B занимает другую нишу: это «интеллектуальный агент с инструментами», а не просто быстрый собеседник.
💡 Практический паттерн из reference-реализации NVIDIA (NVIDIA-AI-Blueprints/nemotron-voice-agent): быстрый фронтенд-агент ведёт разговор, а тяжёлая работа делегируется backend-агенту (например, бронирование рейсов). Это решает проблему задержки при долгих tool call'ах — пользователь слышит «on-hold» фразу, а не молчание.
Рекомендации по внедрению
-
Начните с offline-инференса. Прогоните 20–50 реальных записей из вашего домена и оцените качество речи, точность tool call'ов и частоту ложных перебиваний (pause handling) до того, как строить стриминговую инфраструктуру.
-
Готовьте tool-ответы в ASCII. Официальное ограничение: system prompt и ответы инструментов должны быть ASCII-only, без эмодзи и «красивых» тире — TTS-декoder их озвучит неправильно. Преобразуйте JSON-ответы API в короткие разговорные фразы перед передачей модели.
-
Проектируйте on-hold сообщения для каждого инструмента. Фраза, которую агент произносит во время ожидания функции («Уточняю ваш заказ, секунду»), — это UX-решение: без неё пользователь слышит паузу и думает, что бот «завис».
-
Планируйте железо под 80 ГБ VRAM. A100/H100 или RTX 6000 Ada; для разработки можно арендовать инстанс. Если бюджет не позволяет — рассмотрите NIM-версию как API или каскадную архитектуру.
-
Не экономьте на аудите. Стриминговый API возвращает и транскрипты — логируйте их: это единственный способ отлаживать голосовые диалоги постфактум и проверять безопасность (включая попытки голосового prompt injection).
Заключение
NemotronLabs VoiceChat 11B — первый открытый полнодуплексный голосовой агент с live tool calling, и она закрывает конкретную нишу: enterprise-командам, которым нужны свои данные, свой стек и контроль над латентностью, но не хочется собирать каскад из трёх моделей и VAD-логики. 450 мс turn-taking, бarge-in без отдельного детектора, on-hold фразы во время вызова функций — это качественный скачок по сравнению с прошлым поколением открытых решений.
Ограничения честные: минимум 80 ГБ VRAM, английский язык в релизе, одна фиксированная голосовая модель (voice cloning отсутствует), self-reported бенчмарки. Для задач с ограниченным бюджетом железа каскад Whisper/T-One + LLM + Silero/Piper остаётся рабочим вариантом — и по каждому из этих компонентов у нас есть отдельные материалы: TTS-модели для бизнеса, ASR-модели 2026 и голосовые боты для входящих звонков.
И главное: выбор модели — это половина задачи. Вторая половина — корректная реализация стриминговой инфраструктуры, безопасности голосового канала и UX перебиваний. Команды, которые доверяют такие решения опытным разработчикам, экономят месяцы на исправлении ошибок, которые проявляются только при живых пользователях: от джиттера сети до голосовых prompt injection-атак.