PersonaPlex: Voice and Role Control for Full Duplex Conversational Speech Models
최근 음성 AI는 단순히 자연스러운 음성을 합성하는 TTS를 넘어서, 실시간으로 듣고, 말하고, 끼어들고, 맞장구치며, 상황에 맞는 역할을 수행하는 대화형 음성 에이전트로 빠르게 확장되고 있습니다. 특히 full-duplex speech model은 사람이 말하는 동안에도 계속 듣고 반응할 수 있어 훨씬 자연스러운 상호작용을 가능하게 하지만, 지금까지의 많은 시스템은 고정된 역할과 고정된 목소리에 묶여 있었습니다. 그래서 보험 상담원, 은행 직원, 예약 센터, 멀티 캐릭터 에이전트, 개인화 음성 비서처럼 역할 중심(role-driven) 인 실제 서비스 시나리오에 적용하기에는 유연성이 부족했습니다.
기존 cascaded ASR–LLM–TTS 방식은 reasoning과 음질 측면에서는 강하지만, 중간에 텍스트로 정보를 압축하는 과정에서 억양,말의 속도, 망설임, 끼어들기 타이밍 같은 paralinguistic 정보가 약화되기 쉽습니다. 반대로 duplex speech model은 이런 대화적 자연스러움을 더 잘 살릴 수 있지만, 역할 제어(role conditioning) 와 화자 제어(voice conditioning) 를 동시에 붙이는 것은 latency 제약과 speech-text coupling 때문에 쉽지 않았습니다. PersonaPlex는 바로 이 지점을 겨냥해, full-duplex 대화 구조 위에 텍스트 기반 역할 프롬프트와 음성 기반 보이스 프롬프트를 함께 넣는 방식을 제안합니다.
Title: PersonaPlex: Voice and Role Control for Full Duplex Conversational Speech Models
Authors: Rajarshi Roy, Jonathan Raiman, Sang-gil Lee, Teodor-Dumitru Ene, Robert Kirby, Sungwon Kim, Jaehyeon Kim, Bryan Catanzaro
Affiliation: NVIDIA
Status: arXiv preprint, ICASSP 2026 under review
Keywords: Conversational Speech Model, Duplex Spoken Language Model, Role Conditioning, Voice Cloning
이 논문이 짚는 핵심 문제는 크게 세 가지입니다.
첫째, 기존 full-duplex 음성 모델은 자연스러운 turn-taking과 응답 속도는 좋아도 하나의 assistant persona와 하나의 voice에 고정되어 있는 경우가 많았습니다.
둘째, voice cloning이나 style control은 주로 TTS 쪽에서, role following은 주로 instruction-tuned LLM 쪽에서 발전해왔지만, 이를 낮은 지연의 speech-to-speech 대화 모델에 통합하는 것은 별개의 어려움이 있었습니다. 셋째, 기존 벤치마크는 단일 assistant가 많아, 실제 고객 응대처럼 역할 지시와 문맥 충실도가 중요한 환경을 충분히 평가하지 못했습니다.
PersonaPlex의 해법은 의외로 복잡한 새 backbone을 만드는 것이 아니라, 기존 Moshi 계열 duplex architecture 위에 “Hybrid System Prompt”를 얹는 것입니다. 이 하이브리드 프롬프트는 두 부분으로 구성됩니다. 하나는 “당신은 보험사 상담원입니다” 같은 텍스트 역할 프롬프트, 다른 하나는 짧은 참조 음성을 주는 보이스 프롬프트입니다. 즉, 모델이 무슨 역할로 말해야 하는지와 어떤 목소리로 말해야 하는지를 동시에 조건으로 받게 만드는 구조입니다.
또 하나의 중요한 기여는 데이터와 평가 셋업입니다. 저자들은 오픈소스 LLM과 TTS를 활용해 대규모 synthetic dialog corpus를 만들고, 기존 Full-Duplex-Bench를 고객 서비스 시나리오로 확장한 Service-Duplex-Bench를 제안합니다. 즉, 이 논문은 모델만 제안한 것이 아니라, “역할 + 목소리 + 대화 자연스러움”을 함께 평가할 수 있는 실제 서비스형 평가 프레임까지 만든 점이 핵심입니다.
논문 2페이지의 Figure 1을 보면, PersonaPlex는 user audio, agent text, agent audio라는 세 개의 스트림을 입력으로 받는 Moshi 기반 구조를 사용합니다. 즉 사용자의 음성을 계속 들으면서, 모델은 내부적으로 텍스트와 오디오를 함께 autoregressive하게 생성합니다. 중요한 점은, 역할과 목소리 제어를 위해 backbone 자체를 갈아엎지 않고 입력 프롬프트 설계만으로 conditioning을 붙였다는 것입니다. 이 단순성은 실제 시스템 확장 관점에서 꽤 강한 장점입니다.
Hybrid System Prompt는 시간축상 두 세그먼트로 이어집니다.
Text prompt segment: agent text 채널에 역할 설명 텍스트를 넣고, agent audio 채널은 silence로 둡니다.
Voice prompt segment: agent audio 채널에 짧은 음성 샘플을 넣고, agent text 채널은 padding으로 둡니다.
이렇게 하면 이후 생성되는 agent speech는 지정된 역할에 맞는 내용을 유지하면서, 동시에 제공된 음색에 가까운 목소리로 발화하게 됩니다. 논문은 두 세그먼트의 순서 자체는 큰 성능 차이를 만들지 않지만, 구현에서는 voice prompt를 먼저 두어 prefill을 가능하게 하고 latency를 줄였다고 설명합니다. 또 system prompt 구간에서는 user audio 대신 440Hz sine wave를 넣어 conditioning을 안정화했고, 시스템 프롬프트 부분에는 loss backpropagation을 막았으며, non-semantic audio token과 padded text token의 손실 가중치도 각각 0.02, 0.3으로 조정했습니다.
이 논문의 또 다른 핵심은 synthetic data engineering입니다. 대화 텍스트는 Qwen-3-32B와 GPT-OSS-120B를 이용해 생성됩니다. 서비스 데이터는 먼저 restaurant, bank 같은 도메인을 고르고, 그 안에서 refund, inquiry 같은 시나리오를 고른 뒤, 이를 실제 2인 대화 transcript로 확장하는 계층적 방식으로 만듭니다. QA 시나리오의 경우에는 “You are a wise and friendly teacher” 같은 고정 role을 둔 2-turn 질의응답 데이터도 추가합니다.
음성 쪽도 꽤 공들였습니다. 총 26,296개의 single-speaker voice sample을 VoxCeleb, Libriheavy, LibriTTS, CommonAccent, Fisher등에서 가져와 synthetic dialog와 voice prompt 생성에 사용했고, 별도로 2,630개 voice sample은 speaker similarity평가용 테스트셋으로 남겨뒀습니다. 서비스 시나리오 음성은 두 화자의 타이밍과 room tone을 더 자연스럽게 만들기 위해 multi-speaker TTS인 Dia를 사용했고, QA 시나리오는 zero-shot voice cloning이 가능한 Chatterbox TTS로 생성한 뒤 user/agent turn을 stitching했습니다. 여기서 silence를 양수로 넣으면 자연스러운 turn-taking을, 음수 길이 silence를 넣으면 barge-in / interruption 상황을 시뮬레이션할 수 있다고 설명합니다.
기존 Full-Duplex-Bench가 주로 단일 assistant 역할을 가정했다면, 이 논문은 여기에 50개의 서비스 역할 시나리오 × 각 7개 질문 = 350개 평가 항목을 추가합니다. 표 3의 예시는 건강보험 상담원 시나리오인데, 회사 이름 확인, 잘못 제시된 SSN 검증, 플랜 설명, 당장 오늘 개통해달라는 불가능한 요청 대응, 무례한 고객 응대, 관련 없는 질문 거절 등 현실 서비스에서 진짜 중요한 케이스들로 구성되어 있습니다. 즉, “답을 아느냐”만 보는 것이 아니라 문맥 세부사항을 유지하는지, 거절을 어떻게 하는지, 역할에서 이탈하지 않는지를 묻는 벤치마크입니다.
실험에 사용된 전체 학습 데이터는 고객 서비스 대화 1,840시간 / 105,410 dialogs, 그리고 일반 QA 대화 410시간 / 39,322 dialogs로 구성됩니다. 학습은 Adam과 cosine annealing을 사용했고, depth transformer와 temporal transformer의 learning rate를 다르게 두었습니다. 총 24,576 step, batch size 32, maximum sequence length 2048 token(약 163.84초) 조건에서 학습했으며, 저자들은 8×A100 GPU에서 약 6시간이 걸렸다고 보고합니다.
이 논문은 단순 WER 하나로 끝내지 않고, 대화 시스템답게 여러 층위의 지표를 봅니다.
DMOS: 사람이 듣고 평가한 dialog naturalness
SSIM: 여기서는 이미지 SSIM이 아니라, voice prompt와 생성 음성 사이의 speaker similarity
Full-Duplex-Bench metrics: pause handling, backchannel, smooth turn-taking, interruption대응, latency
Service-Duplex-Bench: GPT-4o 기반 평가 점수로 role adherence와 instruction following을 측정
특히 DMOS는 AMT human study로 수집했고, speaker similarity는 WavLM-TDNN 기반 cosine similarity로 측정했습니다. 즉, 이 논문은 음성 품질만 보는 것이 아니라 사람답게 대화하는가, 지시한 역할을 지키는가, 지정한 목소리로 말하는가를 함께 본다는 점이 특징입니다.
Backchannel이란? “음”, “네”, “그렇군요”처럼 상대 말을 끊지 않으면서 짧게 반응하는 신호입니다.
Turn-taking latency란? 사용자의 발화가 끝나거나 끼어들었을 때, 모델이 얼마나 빠르게 다음 동작으로 넘어가는지를 보는 지표입니다.
가장 눈에 띄는 결과는 자연스러움과 화자 유사도를 동시에 잡았다는 점입니다. Table 1에서 PersonaPlex는 Full-Duplex-Bench 기준 DMOS 3.90 ± 0.15, Service-Duplex-Bench 기준 DMOS 3.59 ± 0.12, 그리고 speaker similarity 0.57을 기록합니다. 이는 Gemini의 3.72 / 3.22 / 0.00, Qwen-2.5-Omni의 3.70 / 2.37 / 0.07, Freeze-Omni의 3.51 / 2.38 / 0.05, Moshi의 3.11 / 2.83 / 0.10과 비교해 꽤 강한 결과입니다. 특히 closed model들도 role prompt는 줄 수 있지만 실제 voice cloning까지 되는 것은 아니기 때문에, speaker similarity서 PersonaPlex의 이점이 크게 드러납니다.
Table 2를 보면 PersonaPlex는 모든 세부 지표에서 무조건 1등은 아닙니다. 예를 들어 pause나 backchannel 일부 TOR에서는 Gemini가 더 좋은 숫자를 보이는 구간도 있고, user interruption의 GPT-4o score 자체는 Qwen-2.5-Omni가 더 높습니다. 하지만 PersonaPlex는 smooth turn-taking TOR 0.992, latency 0.070,그리고 user interruption TOR 1.000, latency 0.400처럼실제 실시간 상호작용에서 중요한 지점에서 매우 강합니다. Qwen-2.5-Omni는 interruption GPT-4o score가 4.590으로 높지만 latency가 2.740으로 훨씬 크고, 다른 일부 항목은 VAD 부재로 공란입니다. 그래서 실사용 관점에서는 PersonaPlex의 강점이 “최고 점수 하나”보다 낮은 지연과 안정된 duplex behavior의 균형에 있다고 보는 게 더 정확합니다.
Service-Duplex-Bench 평균 점수는 Gemini 4.73, PersonaPlex 4.48, Freeze-Omni 4.02, Qwen-2.5-Omni 2.76, Moshi 1.75입니다. 즉, PersonaPlex는 이 벤치마크에서 closed commercial system인 Gemini보다는 약간 낮지만, 공개형 duplex baseline들보다는 확실히 높습니다. 이 결과는 중요합니다. 논문이 주장하는 핵심은 “모든 영역에서 절대 최고”라기보다, open duplex model이 실제 서비스형 role following까지 꽤 설득력 있게 따라갈 수 있다는 점이기 때문입니다. 특히 proper noun recall, context detail adherence, rude customer handling 같은 항목에서 전반적으로 안정적인 점수를 보입니다.
Table 5는 꽤 흥미롭습니다. Moshi baseline(0%) 대비 synthetic data를 조금만 추가해도 speaker similarity와 role adherence가 크게 올라갑니다. 예를 들어 SSIM은 0.10 → 0.54~0.57, Service-Duplex-Bench점수는 1.75 → 4.20~4.48 수준으로 크게 뛰었습니다. 반면 Full-Duplex-Bench의 GPT-4o 점수는 50% 데이터에서 4.52, 25%에서 4.44, 100%에서 4.21로 단순 데이터 양과 단조 증가 관계를 보이지는 않습니다. 저자 해석처럼, full-duplex interaction skill은 비교적 적은 데이터로도 빨리 올라오고, 반면 role adherence는 더 많은 데이터에서 꾸준히 좋아지는 성격일 수 있습니다. 이것은 실무적으로도 “어떤 능력을 키우고 싶은가에 따라 데이터 설계를 달리해야 한다”는 시사점을 줍니다.
Appendix에 따르면 공개된 PersonaPlex checkpoint는 본문 실험 버전보다 몇 가지 점에서 개선되었습니다. 먼저 Fisher English corpus의 실제 대화 7,303개(1,217시간) 를 추가 학습해 backchannel, 감정 표현, 자연스러운 반응을 강화했습니다. 또 privacy 문제 때문에 실제 voice dataset 대신 TortoiseTTS로 만든 synthetic voice를 사용하고, Praat 기반 formant/pitch augmentation을 적용했습니다. 음성 생성도 Dia/Chatterbox 혼합 대신 ChatterboxTTS로 통일했는데, 이로 인해 speaker similarity가 0.57 → 0.65로 좋아졌다고 보고합니다. Table 6에서도 pause/backchannel 관련 수치가 개선됩니다. 다만 Table 7의 DMOS는 별도 연구 조건에서 측정된 값이라 Table 1과 직접 비교하면 안 된다는 점은 같이 봐야 합니다.
실서비스화를 하기 위해 페르소나 부여까지 적용된 full-duplex model 이었습니다.