Подписывайтесь:

Блог AST-SoftPro

NVIDIA NemotronLabs VoiceChat 11B — голосовой агент с задержкой 450 мс и live tool calling

19.08.2026 22 мин чтения
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). Есть два режима работы:

  1. Offline inference — загрузка checkpoint с Hugging Face и batch-инференс «аудио на входе → аудио+текст на выходе». Подходит для оценки качества и тестов tool calling;

  2. 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» фразу, а не молчание.

Рекомендации по внедрению

  1. Начните с offline-инференса. Прогоните 20–50 реальных записей из вашего домена и оцените качество речи, точность tool call'ов и частоту ложных перебиваний (pause handling) до того, как строить стриминговую инфраструктуру.

  2. Готовьте tool-ответы в ASCII. Официальное ограничение: system prompt и ответы инструментов должны быть ASCII-only, без эмодзи и «красивых» тире — TTS-декoder их озвучит неправильно. Преобразуйте JSON-ответы API в короткие разговорные фразы перед передачей модели.

  3. Проектируйте on-hold сообщения для каждого инструмента. Фраза, которую агент произносит во время ожидания функции («Уточняю ваш заказ, секунду»), — это UX-решение: без неё пользователь слышит паузу и думает, что бот «завис».

  4. Планируйте железо под 80 ГБ VRAM. A100/H100 или RTX 6000 Ada; для разработки можно арендовать инстанс. Если бюджет не позволяет — рассмотрите NIM-версию как API или каскадную архитектуру.

  5. Не экономьте на аудите. Стриминговый 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-атак.

Источники