상태: 초안 (2026-10-05), 조사 글입니다. 이 글의 모든 내용은 문서 기준이고 직접 실행해 측정한 값이 없습니다(미실측). 아래 사실은 각 프로젝트의 GitHub 저장소와 Hugging Face 모델 카드를 읽고 정리한 것입니다. 페이지 내용을 요약하는 도구를 거쳐 읽었으므로, 숫자와 라이선스 문구는 쓰기 전에 원문으로 다시 확인하십시오. 글 끝의 「확인하지 못한 것」을 먼저 읽으십시오. 작성 규칙: 실측 데이터가 기본이고, 못 잰 것은 「미실측」으로 표시합니다.
1. 결론부터
한국어로 실시간 대화하는 앱을 만든다면, 지금 확인된 범위에서는 음성인식(ASR), LLM, 음성합성(TTS)을 이어 붙이는 방식이 맞습니다. 이유는 한국어를 지원하는 NVIDIA 오픈 모델이 이 방식의 두 부품에 있기 때문입니다.
| 후보 | 구조 | 한국어 | 한 줄 평가 |
|---|---|---|---|
| Nemotron Voice Agent 블루프린트 | ASR → LLM → TTS(Pipecat) | 부품에 따라 다름(아래 표) | 출발점으로 가장 좋음 |
| Nemotron 3.5 ASR Streaming 0.6B | 음성인식 부품 | ko-KR 지원 | 한국어 실시간 인식의 핵심 부품 |
| Magpie TTS Multilingual | 음성합성 부품 | ko 지원 | 한국어 음성 출력의 핵심 부품 |
| PersonaPlex-7B | 한 모델이 듣고 말함(풀듀플렉스) | 영어 전용 | 한국어 앱에는 쓸 수 없음, 구조 학습용 |
NeMo voice_agent 예제 |
ASR + LLM + TTS 예제 | 영어만 | 구조를 읽기에 좋은 예제 |
2. 두 가지 구조
2.1 캐스케이드: 듣고, 생각하고, 말하는 단계를 나눈다
마이크 → 음성 구간 검출(VAD)과 발화 종료 판단 → ASR(음성을 글자로) → LLM(답변 글 생성) → TTS(글을 음성으로) → 스피커 순서입니다.
- 장점: 부품을 따로 바꿀 수 있습니다. 한국어가 약한 부품만 다른 것으로 교체하면 되고, LLM 은 기존에 운영 중인 것을 그대로 쓸 수 있습니다. 중간 결과(인식된 글, 답변 글)를 로그로 남겨 디버깅하기 쉽습니다.
- 단점: 단계마다 지연이 쌓입니다. 말이 끝났는지 판단하는 로직과, 사용자가 말을 끊을 때(바지인) 재생을 멈추는 로직을 직접 다뤄야 합니다.
2.2 풀듀플렉스: 한 모델이 동시에 듣고 말한다
PersonaPlex 가 이 방식입니다. 한 모델이 연속된 오디오를 입력으로 받으면서 동시에 음성을 출력하므로 끼어들기와 맞장구, 빠른 말 주고받기가 자연스럽습니다. PersonaPlex 논문(arXiv 2602.06053, 표 6)이 Full-Duplex-Bench 로 보고한 지연은 말 주고받기 약 0.170초, 사용자가 끼어들었을 때의 반응 약 0.240초입니다(영어 모델의 논문 수치이며, 모델 카드는 접근 승인이 필요해 열지 못했습니다).
- 단점: 영어 전용이고, 부품을 따로 바꿀 수 없으며, 답변 내용을 자체 LLM 이나 지식과 연결하기 어렵습니다.
3. 후보별 정리
3.1 Nemotron Voice Agent 블루프린트
NVIDIA-AI-Blueprints/nemotron-voice-agent는 NVIDIA 가 공개한 참조 구현입니다.
- 구성: ASR 은 Nemotron ASR Streaming, Parakeet CTC, Parakeet RNNT Multilingual 중에서, LLM 은 Nemotron 3.5 Lightning 30B, Nemotron 3 Super 120B, Nemotron 3 Nano Omni 중에서, TTS 는 Magpie TTS Multilingual 또는 Chatterbox TTS Multilingual 중에서 고릅니다. 뼈대는 오픈소스 Pipecat 이고 NVIDIA NIM 마이크로서비스로 가속합니다.
- 배포 프로필: 클라우드(GPU 없이 CPU 만, NVIDIA API 엔드포인트 사용), 서버(NVIDIA GPU 워크스테이션, 기본 약 80GB VRAM), 단일 GPU(워크스테이션 GPU 한 장, DGX Spark, Jetson Thor 중 하나, 사용 가능한 VRAM 28GiB 이상). Docker Compose v2.20 이상으로 띄웁니다.
- 최근 릴리스: v2.2.0(2026-09-23)에 Nemotron 3.5 Lightning 자체 호스팅, 단일 GPU 레시피, OpenAI Realtime 호환 WebSocket 게이트웨이가 들어갔습니다. v2.0.0(2026-07-09)에 React 클라이언트가 통합되었습니다.
- 라이선스: 소스 코드는 Apache-2.0, 문서와 자산은 CC-BY-4.0 입니다.
- 지연: 「1초 미만의 종단 지연」과 다중 동시 스트림을 내세웁니다. 이 수치는 문서의 주장이고 측정 조건은 확인하지 못했습니다.
- 한국어: 블루프린트의
docs/how-to/configure-tts.md가 Magpie TTS Multilingual 의 지원 언어에 한국어(ko-KR)를 적습니다. 반대로 블루프린트에 내장된 LLM(Nemotron 3 Super)의 지원 언어에는 한국어가 없습니다(영어, 독일어, 스페인어, 프랑스어, 이탈리아어, 일본어, 중국어). 따라서 한국어 대화에는 LLM 을 따로 골라야 합니다. 아래 두 부품은 한국어를 지원하므로 부품을 한국어 지원 모델로 고르면 구성이 가능합니다(이 글에서는 문서 확인이고, 실제 동작은 20편에서 시험했습니다).
3.2 Nemotron 3.5 ASR Streaming 0.6B (음성인식)
모델 카드에 따른 내용입니다.
- 6억 개 파라미터이고 40개 언어 로케일을 지원합니다. 그중 「전사 준비 완료」 19개에 한국어(ko-KR) 가 들어 있고, 일본어, 영어, 스페인어, 독일어 등과 같은 분류입니다.
- 스트리밍 청크 크기를 80, 160, 320, 560, 1120ms 중에서 고를 수 있습니다(
att_context_size). 청크가 작을수록 빨리 받아 적고 정확도는 낮아지는 균형 관계입니다(일반 원리, 이 모델로 확인하지 않음). - 카드에 실린 단어 오류율은 스페인어 4.11%, 영어 7.91%, 독일어 8.31%, 프랑스어 9.03%(청크 1.12초 기준)입니다. 한국어는 글자 오류율(CER)로 실려 있고 FLEURS 평가에서 언어를 지정했을 때 청크 80ms 에서 1.12초까지 7.59, 7.70, 7.27, 7.18, 7.12%, 언어 자동 감지 때 8.31에서 7.30%입니다.
- 라이선스 표기는
openmdw-1.1입니다. - Pipecat 쪽 글(Daily)은 이 모델의 「최종 구간까지의 시간」이 실사용 조건에서 약 250ms 아래라고 적었고, 벤치마크용 C++ 서버와 다국어와 영어 모델을 자동 전환하는 Python 서버를 공개했다고 합니다.
3.3 Magpie TTS Multilingual (음성합성)
모델 카드에 따른 내용입니다.
- 12개 언어를 지원하고 한국어(ko) 가 들어 있습니다(아랍어, 중국어, 영어, 프랑스어, 독일어, 힌디어, 이탈리아어, 일본어, 한국어, 포르투갈어, 스페인어, 베트남어). 한국어는 체크포인트 v2607(2026-07-21 공개)에서 추가되었고 이전 체크포인트(v2602, v2512)에는 한국어가 없습니다. 카드의 한국어 CER 은 2.69%, 화자 유사도 0.807 이며 평가 자료는 카드가 내부 자료라고 적습니다. 체크포인트 버전만으로는 한국어 동작이 갈리지 않았습니다. 20편에서 세 체크포인트를 모두 시험했을 때, NeMo 3.0.0 은 한국어를 모델의
korean_chartokenizer로 연결하지 않아(LANGUAGE_TOKENIZER_MAP에 한국어 항목이 없고 영어 음소 토크나이저로 떨어짐) v2607 에서도 소리가 0.4~0.8초로 끝났습니다. 그 연결을 직접 지정하면 정상으로 합성되었습니다. 즉 모델 카드의 한국어 지원은 체크포인트에는 맞고, 쓰는 NeMo 코드 버전이 이를 연결해야 합니다. - 파라미터는 카드에 364M 으로 적혀 있고(이름은 357m), 569MB 의 GGUF 양자화본이 있습니다. 라이선스는 NVIDIA Open Model License 입니다.
- 카드의 오픈 가중치는 목소리 5개(Aria, Jason, Leo, Sofia, John Van Stan)를 제공하고, NIM 의 한국어 목소리 목록(검색 결과로만 확인)은 이와 다릅니다. 어느 쪽을 쓰느냐에 따라 한국어 목소리가 달라질 수 있습니다.
- 스트리밍 지연 수치는 카드에서 찾지 못했습니다. 표준 모드는 최대 20초 분량, 긴 글 모드는 더 긴 글을 지원합니다.
3.4 PersonaPlex-7B
- Moshi 구조와 가중치를 기반으로 한 7B 풀듀플렉스 음성 대화 모델입니다. 텍스트 역할 프롬프트와 음성 조건으로 말투와 역할을 정합니다.
- 영어 음성 입력에 영어 음성으로만 답합니다.
- 코드는 MIT 라이선스, 모델 가중치는 NVIDIA Open Model License 이고, Hugging Face 에서 라이선스에 동의해야 내려받을 수 있습니다.
- 실행은
libopus-dev설치와pip install moshi/.이후 웹 화면(localhost:8998)으로 합니다. VRAM 이 부족하면--cpu-offload를 쓸 수 있고, 필요한 VRAM 은 문서에서 명시하지 않았습니다.
3.5 NeMo voice_agent 예제
NVIDIA-NeMo/Speech 의 예제는 NeMo 의 음성인식과 음성합성에 Hugging Face LLM 을 붙인 대화 에이전트입니다. 음성인식은 Parakeet 실시간 모델(기본)과 Nemotron 스트리밍 변형, 음성합성은 Kokoro-82M 부터 FastPitch-HiFiGAN 까지 고를 수 있습니다. GPU 가 한 장 필요하고 9B LLM 이면 21GB, 4B LLM 이면 13GB VRAM 을 권합니다. 현재는 영어 입출력만 지원한다고 밝혔습니다.
4. 소비자용 GPU 에서의 가능성
필자의 실험 환경의 GPU 는 8GB급 노트북 GPU 와 24GB급 소비자용 GPU 입니다. 블루프린트의 단일 GPU 프로필은 28GiB 이상의 VRAM 을 요구해서 어느 GPU 한 장으로도 그대로는 맞지 않습니다. 다만 이 요구량은 30B 급 LLM 을 함께 올리는 기본 구성에 해당하므로, 부품을 나누면 사정이 달라질 수 있습니다.
| 부품 | 크기 | 8GB GPU 에 들어갈 가능성 |
|---|---|---|
| Nemotron 3.5 ASR | 약 0.6B | 작아서 가능성이 높음(미측정) |
| Magpie TTS | 약 364M(GGUF 569MB) | 작아서 가능성이 높음(미측정) |
| LLM | 소형 모델 | vLLM 등으로 따로 서빙하는 소형 모델로 대신할 수 있음 |
이 표는 모델 크기에서 짐작한 것이고, VRAM 사용량과 지연은 직접 재지 않았습니다(미실측). 블루프린트는 OpenAI Realtime 호환 WebSocket 게이트웨이를 제공한다고 하므로, 기존 LLM 서버를 연결하는 방법도 확인해 볼 만합니다(미시험).
5. 앱 설계 초안 (미시험)
브라우저(마이크, 스피커)
│ WebSocket 또는 WebRTC
▼
Pipecat 파이프라인
├─ VAD + 발화 종료 판단
├─ ASR : Nemotron 3.5 ASR Streaming (ko-KR)
├─ LLM : vLLM 으로 서빙하는 소형 모델
└─ TTS : Magpie TTS (ko)
│ 끼어들기가 감지되면 TTS 재생과 LLM 생성을 중단
▼
스피커
- 지연의 구성. 사용자가 말을 마친 시점부터 첫 소리가 나기까지는 「발화 종료 판단 + 최종 인식 + LLM 첫 토큰 + TTS 첫 오디오」의 합입니다. 단계마다 따로 재서 어디가 병목인지 가려야 합니다.
- 끼어들기. 사용자가 말하기 시작하면 재생 중인 음성과 진행 중인 LLM 생성을 함께 취소해야 합니다.
- 개인정보. 음성은 개인정보이므로 저장 여부와 보관 기간을 먼저 정해야 합니다. 로그에는 인식된 글만 남기고 원본 오디오는 남기지 않는 쪽이 안전합니다.
- 동시성. 사용자가 늘면 ASR 과 TTS 가 GPU 를 나눠 쓰게 되므로, 동시 사용자 수별 지연을 따로 재야 합니다(미실측).
6. 실측 계획
글로 정리한 내용을 숫자로 바꾸는 순서입니다. 8GB급 GPU 에서 임시 파드로 합니다.
- ASR 단독: 한국어 음성 샘플로 실시간 계수(처리 시간 대 오디오 길이)와 청크 크기별 지연, VRAM 사용량.
- TTS 단독: 한국어 문장으로 첫 오디오까지의 시간과 VRAM 사용량.
- 세 부품을 이은 종단 지연과 끼어들기 반응 시간.
- 한국어 인식 정확도: 카드의 한국어 CER(FLEURS)은 있지만 우리 환경의 음성으로 다시 확인해야 하므로, 직접 만든 소규모 시험 문장으로 확인하고 표본이 작다는 한계를 함께 적습니다.
7. 면접에서 나올 만한 질문
- 캐스케이드와 풀듀플렉스는 무엇이 다른가? 앞의 2절. 부품 교체와 디버깅 대 자연스러운 끼어들기의 균형입니다.
- 실시간 음성 대화에서 지연을 어떻게 나누어 보는가? 발화 종료 판단, 최종 인식, LLM 첫 토큰, TTS 첫 오디오로 나누어 각각 잽니다.
- 끼어들기를 어떻게 처리하는가? 사용자 발화를 감지하면 재생과 생성을 함께 취소합니다.
- 스트리밍 ASR 의 청크 크기는 무엇을 바꾸는가? 지연과 정확도를 맞바꿉니다.
8. 흔한 오해
- 「NVIDIA 의 대화 모델이면 한국어도 된다」: PersonaPlex 와 NeMo 예제는 영어만 지원합니다.
- 「블루프린트를 띄우면 바로 한국어 앱이다」: 한국어를 지원하는 부품을 직접 고르고 설정해야 하며, 이 구성은 아직 시험하지 않았습니다.
- 「오픈소스이므로 상업적으로 자유롭다」: 코드(Apache-2.0, MIT)와 모델 가중치(NVIDIA Open Model License,
openmdw-1.1)의 라이선스가 다릅니다. 사용 전에 각 원문을 읽어야 합니다.
확인하지 못한 것
- 페이지 내용을 요약하는 도구를 거쳐 읽었기 때문에 숫자와 라이선스 문구가 원문과 다를 수 있습니다. 각 라이선스 전문은 열어 보지 않았습니다.
- 한국어 TTS 품질과, 카드가 아닌 우리 음성에서의 한국어 인식 오류율(카드에는 FLEURS 기준 CER 이 있습니다).
- 블루프린트가 한국어 구성을 통째로 공식 지원하는지(TTS 문서에는 한국어가 있으나, 내장 LLM 은 한국어를 지원하지 않습니다).
- 모든 지연과 VRAM 수치. 어느 모델도 필자의 실험 환경에서 실행하지 않았습니다.
- Magpie TTS 의 오픈 가중치와 NIM 의 한국어 목소리 차이(검색 결과로만 확인).
- 블루프린트 외의 NVIDIA 음성 프로젝트(
NVIDIA/voice-agent-examples,NVIDIA-NeMo/labs-Voice-Agent)는 이름만 확인했고 내용을 읽지 않았습니다.
참고 자료
- https://github.com/NVIDIA-AI-Blueprints/nemotron-voice-agent
- https://github.com/NVIDIA-AI-Blueprints/nemotron-voice-agent/releases
- https://github.com/NVIDIA/personaplex
- https://huggingface.co/nvidia/personaplex-7b-v1
- https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b
- https://huggingface.co/nvidia/magpie_tts_multilingual_357m
- https://github.com/NVIDIA-NeMo/Speech/tree/main/examples/voice_agent
- https://www.daily.co/blog/open-source-multilingual-transcription-from-nvidia-nemotron-3-5-asr/
확인한 버전과 날짜
2026-10-05 기준. Nemotron Voice Agent 블루프린트 v2.2.0(2026-09-23), PersonaPlex-7B-v1, Nemotron 3.5 ASR Streaming 0.6B, Magpie TTS Multilingual 357m.