NemotronLabs VoiceChat은 전이중 대화 도구 호출 오픈 모델이다.

NemotronLabs VoiceChat: An Open Full-duplex Speech-to-Speech Model with Tool Calling Capabilities

arXiv2609.21967v1

Jagadeesh Balam2026-09-18조회 3

무엇인가

음성 에이전트는 지능형 시스템과 상호작용하는 자연스러운 인터페이스지만, 지금까지의 일반적인 구축 방식은 자동 음성 인식(ASR), 챗 기능의 대규모 언어모델(LLM), 텍스트-음성 합성(TTS)을 연결한 캐스케이드 구조였다. 이런 시스템은 대부분 근본적으로 반이중(half-duplex)이어서, 음성 활동 감지(VAD) 모듈로 사용자가 말을 멈춘 시점을 찾은 뒤에야 응답을 시작한다. 반면 인간 대화는 본질적으로 전이중(full-duplex)이며, 화자는 말하면서 동시에 듣고, 미세한 시간 단위로 차례를 바꾸고, 맞장구를 치고, 겹쳐 말하고, 서로 끼어든다. 기존 전이중 연구들은 실시간 상호작용의 역학 자체에 집중했고, 이런 전이중 속성을 유지하면서 외부 도구를 자연스럽게 호출하는 문제는 상대적으로 탐구가 부족했다. 상용 실시간 플랫폼인 OpenAI Realtime API와 Gemini Live는 이미 구조화된 함수 호출 인터페이스를 노출하지만, 오픈 연구 쪽에서는 DuplexSLA가 사용자·에이전트 음성과 나란히 속도 제한된 텍스트 액션 채널을 두고 계획 토큰과 구조화된 액션을 같은 시간축에서 자기회귀 생성하는 방식으로 이 문제를 다뤘다. 이 논문은 그보다 한 걸음 더 나아가, 병렬적이고 전문화된 출력 스트림을 유지하는 완전 오픈 전이중 음성-음성 모델 NemotronLabs VoiceChat을 제안한다.

어떻게 동작하나

모델의 골격은 스트리밍 음성 인코더, 디코더 전용 LLM, 에이전트 텍스트와 구조화된 함수 호출을 위한 병렬 전용 출력 스트림, 사용자 전사를 점진적으로 생성하는 보조 RNN-T 분기, 그리고 스트리밍 TTS 디코더로 구성된다. 16kHz 사용자 파형은 25ms Hann 윈도와 10ms 스트라이드로 128빈 로그-멜 특징으로 변환되고, 24개 캐시 인식 FastConformer 층과 히든 차원 1024를 가진 6억 파라미터 스트리밍 인코더가 이를 소비한다. 인과적 depthwise-striding 서브샘플링이 특징 시퀀스를 8분의 1로 줄여 80ms마다 인코더 상태 하나를 만들고, 셀프 어텐션은 70프레임 왼쪽 문맥만 쓰고 오른쪽 문맥은 쓰지 않으며 합성곱 모듈도 인과적이어서 현재 상태를 만드는 데 미래 오디오가 필요 없다. 지각 모듈은 파형을 한 번만 처리해 두 가지 표현을 노출하는데, 원시 FastConformer 상태는 보조 RNN-T 분기로 보내고, 항등 모달리티 어댑터와 투영이 같은 1024차원 상태를 LLM 히든 차원으로 사상한다. 인코더를 공유하기 때문에 두 번째 ASR 인코더를 돌릴 필요가 없고 전사가 응답 생성에 쓰이는 음향 문맥과 동기화된다. RNN-T는 2층 640차원 예측 네트워크와 640차원 조인트 네트워크로 구성되며 1024 단위 BPE 어휘와 트랜스듀서 블랭크를 예측하고, 오디오 프레임이 도착하는 대로 점진적으로 디코딩된다. 여기서 나온 사용자 전사는 LLM에 입력되지 않고 보조 출력으로 노출되어, 음성 조건화 응답 경로를 그대로 유지한다.

무엇과 다른가

도구 호출은 에이전트 텍스트 출력과 나란히 도는 전용 자기회귀 함수 채널로 모델링된다. 각 프레임에서 모달리티 융합 층이 인코딩된 사용자 오디오, 직전 에이전트 텍스트 토큰 임베딩, 직전 함수 토큰 임베딩의 가중합을 만들고, 이 논문의 설정에서 각 융합 가중치는 1, 1, 2다. 디코더 전용 LM이 이 융합된 스트리밍 문맥을 처리하고 별도의 함수 헤드가 다음 함수 채널 토큰을 예측한다. 도구 동작이 필요 없을 때 채널은 패딩을 내보내는데, 이런 음성(negative) 지도가 허위 호출을 막는 데 중요하다. 도구가 필요하면 채널은 상태 기계 프로토콜을 따른다. <SOTC>(도구 호출 시작)가 토큰화된 호출 구간을 열고 <EOTC>(도구 호출 끝)가 닫으며, 뒤이어 도구 응답 구간이 <EOTR>(도구 응답 끝)로 종료된다. <TOOLCALL> 페이로드는 도구 이름과 인자를 담은 원소들의 JSON 리스트여서 하나 또는 여러 병렬 호출을 같은 형식으로 지원한다. 내부적으로 이 세 경계 토큰은 예약 어휘 토큰 <SPECIAL_20>, <SPECIAL_21>, <SPECIAL_22>에 대응한다. 모델은 함수 채널 패딩, 세 경계 토큰, 호출 내용에 대해 지도되며, 도구 응답 토큰은 문맥으로 주어지되 손실에서는 제외된다. 학습 중에는 해당 위치의 에이전트 텍스트 채널이 패딩으로 지도되고 사용자 오디오는 무음으로 대체되어 모든 채널이 정렬된다. 추론 시 런타임은 도구가 실행되는 동안 이 패딩된 에이전트 텍스트 구간을 미리 정의된 확인 메시지로 덮어쓴다. <EOTR> 이후에는 에이전트 텍스트 생성을 재개하거나 또 다른 도구 호출을 시작할 수 있어 다단계 도구 사용이 가능하다. 에이전트 텍스트 쪽에서는 BOS와 EOS가 80ms 타임라인 위의 프레임 수준 발화 차례 목표로 쓰여, BOS는 언제 응답을 시작할지, EOS는 언제 멈출지, 패딩은 침묵을 유지할지를 가르친다.

어떻게 쓰나

음성 생성은 VoiceChat-TTS가 담당한다. 778M 파라미터 Gemma 3 기반 디코더와 199M 파라미터 인과 오디오 코덱을 합쳐 총 977M 파라미터이고, 코덱은 22kHz 파형을 31개 잔차 벡터 양자화(RVQ) 레벨로 12.5Hz에서 표현하므로 음향 토큰 한 프레임이 80ms 파형에 대응한다. 31개 RVQ 레벨을 모두 자기회귀적으로 예측하면 프레임마다 31번의 순차 예측이 필요하지만, 대신 가우시안 혼합 추정 헤드를 써서 나머지 마스크된 RVQ 레벨의 연속 표현을 예측하고 4~8회의 정제 반복으로 점진적으로 양자화한다. LLM 서브워드 임베딩을 그대로 쓰면 TTS 학습 데이터에 드물거나 없는 토크나이저 단위가 문제가 되므로, 각 서브워드를 문자로 분해해 얕은 트랜스포머 인코더로 처리하고 문자 수준 표현을 평균 풀링해 최종 서브워드 임베딩을 얻는 문자 인식 서브워드 인코더를 쓴다. 화자 조건화에는 3초 참조 오디오 프롬프트를 쓰고, 학습 시 이 프롬프트 구간의 손실은 마스킹해 재구성 대상이 아니라 조건 문맥으로만 사용한다. 학습은 CPT와 SFT 두 단계로 진행된다. CPT는 연속된 평문 지문을 사용자와 에이전트 사이에 문장을 번갈아 배분한 의사 대화로 바꾸는데, 한 문장이 끝나면 80% 확률로 발화가 끝나고 추가 문장은 감쇠 확률로 붙으며 발화가 200단어를 넘으면 역할 전환이 강제된다. SFT는 지시 따르기, 발화 차례, 끼어들기 복구, 맞장구 허용, 도구 호출 같은 대화 행동을 유도하며, 가중 무작위 라운드 로빈으로 샘플링한 데이터셋들을 하나의 목적으로 함께 학습한다. 전체 목적 함수는 L_STT = (1-λ_T2T)(λ_text L_text + λ_FC L_FC) + λ_T2T L_T2T이고, SFT에서는 λ_text=1.0, λ_FC=1.0, λ_T2T=0.5로 0.5(L_text+L_FC)+0.5 L_T2T, CPT에서는 λ_text=3.0, λ_FC=1.0, λ_T2T=0.0으로 3 L_text + L_FC가 된다. 토큰별 가중치는 에이전트 텍스트의 경우 SFT에서 발화 시작 12.5, 발화 끝 7.5, 텍스트 내용 5.0, 패딩 1.0이고 CPT에서는 10.0, 10.0, 1.0, 0.5이며, 함수 채널은 SFT에서 <TOOLCALL> 내용 64.0, <SOTC>와 <EOTC> 각 6.0, <EOTR> 3.0, 패딩 0.3이다. 최적화는 8노드 8GPU, 총 64 GPU에서 완전 데이터 병렬과 bf16으로 수행하고 AdamW(β1=0.9, β2=0.98, 가중치 감쇠 0), 학습률 5×10^-5, 역제곱근 스케줄, 2500 워밍업 스텝, 최솟값 5×10^-6, 그래디언트 클리핑 2.0(CPT)/5.0(SFT)을 쓴다. 구성 요소별 학습에서는 오디오 손실 가중치를 0.0으로 두어 전이중 백본과 TTS 사이에 그래디언트가 흐르지 않고, 백본 학습이 끝난 뒤 인코더·LLM·각 헤드·TTS를 동결하고 RNN-T 예측 및 조인트 네트워크만 트랜스듀서 손실로 최적화한다.

전제와 한계

평가는 Full-Duplex-Bench(FDB) 1.0과 1.5, VoiceBench, FDB 3.0으로 이뤄진다. 결과 표에서는 모델이 V-Model이라는 이름으로 등장한다. FDB 1.0에서 이 모델은 평가된 오픈 웨이트 시스템 중 가장 낮은 일시정지 처리 점유율을 기록했는데, 합성 자극에서 15.3%, CANDOR 자연 일시정지에서 25.5%다. 사용자 끼어들기 이후 점유율은 100%였고, 끼어들기 이후 응답 품질은 GPT-4o가 일관성·관련성·적응성을 0~5점으로 채점해 4.33점을 받았다. 매끄러운 차례 전환 점유율은 81.5%, 매끄러운 차례 전환 지연과 끼어들기 지연은 각각 448ms와 480ms다. 다만 PersonaPlex는 매끄러운 차례 전환 점유율이 90.8%로 더 높고 지연도 170ms로 더 낮다. FDB 1.5의 사용자 맞장구 조건에서 이 모델은 93%의 경우 원래 응답을 재개했는데, 이는 차선인 Freeze-Omni의 80%보다 13%포인트 높고 불필요하게 응답한 비율은 1%에 그쳤다. 폐쇄 API 시스템과 비교하면 Gemini Live 2.0을 보고된 모든 FDB 1.0 지표에서 앞서며 매끄러운 차례 전환과 끼어들기 지연을 각각 853ms, 703ms 줄였다. GPT-Realtime은 일시정지 점유율이 더 낮고 매끄러운 차례 전환 점유율이 더 높지만, 이 모델은 응답이 더 빠르고 사용자 끼어들기 점유율과 응답 품질이 더 높다. FDB 1.5 맞장구 조건에서는 Gemini Live 2.0과 네 가지 행동 범주 모두 정확히 일치하고, GPT-4o Realtime과 비교하면 재개율이 93% 대 70%로 높고 미상 비율이 4% 대 25%로 낮다.

단일 턴 응답 지능은 VoiceBench로 측정한다. 오픈소스 전이중 모델 중에서 정규화 평균 55.1을 얻어 Moshi와 PersonaPlex를 각각 25.6점, 24.5점 앞섰고, Freeze-Omni(55.2)와는 사실상 동률이지만 능력 프로파일이 다르다. Freeze-Omni 대비 OpenBookQA에서 61.3 대 31.0, MMSU에서 46.1 대 28.1로 크게 앞서고 AdvBench 안전성도 100.0 대 97.3으로 높지만, SD-QA와 세 개의 개방형 응답 품질 하위 집합, IFEval에서는 더 약하다. 캐스케이드 방식인 DuplexCascade는 평균 65.4, 옴니모달 MiniCPM-o 4.5는 별도 평가에서 76.1을 보고했는데 후자는 개방형 하위 집합에 다른 판정자를 썼다는 점이 표에 명시돼 있다. 도구 호출은 실제 사람 음성에 비유창성과 연쇄 API 호출 시나리오가 섞인 FDB 3.0으로 평가하며, 저자들은 이 모델이 도구 호출을 지원하는 최초의 완전 오픈 전이중 음성 모델이라고 주장한다. FDB 3.0에서 도구 선택 F1 82.5%로 Gemini Live 2.5(78.6%)와 Gemini Live 3.1(81.7%)을 앞섰지만, 인자 정확도 42.2%와 Pass@1 33.0%는 두 Gemini Live 기준선보다 낮다. FDB 3.0은 모델이 기대한 도구를 정확히 고르고 모든 호출에 완벽한 인자를 제공해야만 Pass@1로 세므로, 이 격차는 도구 라우팅이 인자 추출과 종단 간 실행보다 훨씬 강하다는 것을 보여준다.

개발자 관점에서 이 모델의 의미는 전이중 상호작용, 음성 인식과 생성, 일반 언어 능력, 외부 도구 사용을 하나의 오픈 음성-음성 모델에 통합했다는 점이다. 캐스케이드 스택처럼 여러 모델이나 API 핸드오프를 거치지 않으므로 종단 간 지연을 줄일 수 있고, 체크포인트가 Hugging Face에 공개돼 있다. 실시간 음성 비서, 전화 상담 봇, 맞장구와 끼어들기를 허용해야 하는 대화형 인터페이스에 적합하다. 다만 도구 호출을 붙일 때는 세션당 도구를 5개 이하로 유지하라는 저자 권고를 따르고, 도구 실행 중에는 사용자 끼어들기가 지원되지 않으며 긴 도구 응답이 후속 발화를 지연시킬 수 있다는 점을 설계에 반영해야 한다. 또한 추론 시 도구 실행 동안 무음을 덮는 확인 메시지(filler)를 도구 명세와 함께 시스템 프롬프트에 정의해야 하고, 모델이 네이티브로 차례 전환을 처리하지 못할 때를 대비해 RNN-T 전사 출력을 이용한 엔드포인팅 폴백으로 BOS/EOS를 강제 주입하는 장치도 함께 고려해야 한다.

저자들이 밝힌 한계는 분명하다. 모델은 최대 약 2분의 오디오 문맥 창으로 학습되어 그보다 긴 대화 정보는 안정적으로 유지되지 않을 수 있다. 학습 과정에서 일반 지식을 대화 자연스러움, 전사, 차례 전환, 도구 사용과 명시적으로 균형 맞추기 때문에 지식, 지시 따르기, 추론, 안전성 능력이 기반 LLM인 NVIDIA-Nemotron-Nano-9B-v2보다 약할 수 있다. 도구 사용도 완벽하지 않아 노출되는 도구가 많아지면 성능이 떨어지고, 동시 다중 도구 호출은 아직 신뢰할 수 없으며, 호출이 누락되거나 잘못 선택되거나 인자가 지어내질 수 있고, 도구를 불러야 할 상황에서 내부 지식으로 답해버릴 수도 있다. 도구 실행 중에는 사용자 끼어들기를 쓸 수 없고, 강한 잡음이나 잔향, 경쟁 배경 음성이 있는 조건에서는 견고성이 제한된다. 향후 과제로는 대화 기억 확장, 인자 그라운딩과 다단계 도구 구성 개선, 끼어들기 인식 도구 실행, 실시간 대화 행동을 해치지 않으면서 추론·지시 따르기·정렬을 강화하는 것을 제시한다.