DuplexJev가 디코딩 없이 음성에서 답을 한 토큰으로 읽어낸다

Batched Speech Decisions Without Decoding: Single-Token Supervision Lets a Frozen LLM Hear Beyond the Transcript

HF Daily2610.02638

Jie Jin, Ziyin Ma, Min Yin2026-10-02

무엇인가

풀듀플렉스 음성 에이전트는 말하면서 듣기 때문에, 발화 하나하나마다 작고 닫힌 결정을 내려야 한다. 턴이 끝났는지, 백채널인지 끼어들기인지, 어떤 사전 녹음 필러가 맞는지, 누가 말하는지 같은 질문이다. 논문은 이를 speech-to-text가 아니라 speech-to-decision으로 규정한다. 비용은 실재한다. 저자들이 분석한 배포 중인 인카 어시스턴트(Dimi, DoumaoAI; Qwen3-ASR-0.6B → 72B LLM → TTS, 91일간 3,721대 기기에서 145만 턴)는 이런 결정을 텍스트 생성으로 처리하며 전체 LLM 입력 토큰의 30%를 소모한다. 턴당 최대 3번의 LLM 호출이 오직 이 결정만을 위해 발생하고(툴 필요성 검사 중앙값 1,471 입력 토큰, 의도 라벨 530, 20토큰 오프닝 필러 5,020), 답이 나오기 전까지 응답이 막혀 지연이 매 턴 누적된다. 음성 종료에서 첫 오디오까지 중앙값이 1.29초이고, 이미 1.9%의 발화는 별도 화자식별 모델을 호출한다.

어떻게 동작하나

제안 시스템 DuplexJev는 동결된 ASR 인코더의 은닉 상태를 작은 커넥터로 동결된 LLM에 넣고, 각 질문을 선택지 위의 단일 토큰 분포로 읽는다. 요청은 상태(시점 t까지의 오디오 + 선택적 에이전트 상태)와 N개의 타입 지정 질문으로 구성된다. 선택형 질문은 선택지에 A, B, … 문자를 붙여 프롬프트로 만들되 문자 순서를 무작위로 섞어 위치 편향을 제거하고, 불리언은 N/Y, 점수형은 1..K를 쓴다. 한 번의 forward pass에서 답 위치의 로짓을 K개 선택지 토큰으로 제한해 재정규화한다(논문 식 1). 샘플링이 없으므로 타입이 지정된 출력은 항상 유효하고, max_k p가 기권에 쓸 수 있는 신뢰도가 된다.

무엇과 다른가

커넥터는 두 가지를 비교한다. B(마지막 레이어)는 인코더 최종 은닉 h^L을 Ultravox 스타일 프로젝터(프레임 스태킹 + MLP)로 LLM 임베딩 공간(d=5120)에 사영한다. A(cross-attention 융합)는 프로젝터 앞에 융합 블록을 추가해, 쿼리는 최종 레이어(ℓ=18), 키는 14층, 밸류는 9층에서 가져온다. 출력 프로젝션을 0으로 초기화해 h^L에 잔차로 더하기 때문에 A는 B와 동일한 상태에서 출발한다. 인코더와 LLM은 얼어 있고 융합 블록과 프로젝터만 학습되며, 학습 파라미터는 A가 21.1M(융합 3.2M + 프로젝터 17.8M), B가 17.8M이다.

어떻게 쓰나

학습 목표가 이 논문의 핵심 주장이다. 콘텐츠는 전사 증류(토큰 레벨 KL, temperature 2)로 정렬한다. 그런데 이 교사는 목소리를 듣지 못하므로, 단어에 없는 답(화자 성별, 감정)에 대해서는 목표가 텍스트만의 사전확률이 되고 학생은 그 무지함을 그대로 배운다. 저자들은 이를 answer-token supervision으로 바꾼다. 리드아웃이 실제로 사용하는 위치와 템플릿에서 정답 문자 하나에만 cross-entropy를 걸고, 그 앞의 고정 chat-template 토큰(예: 빈 reasoning 블록)은 제외해 문자만 유일한 지도 대상으로 만든다. 여기에 혼합 목표를 둔다. 콘텐츠 샘플(전사, 이어쓰기)은 증류하고 결정 샘플은 answer-token CE를 쓰되, 두 평균을 더한다.

전제와 한계

배칭은 두 방식을 비교한다. batch-repeat는 모든 행이 오디오와 대화 컨텍스트를 다시 인코딩한다. prefix sharing은 N개 프롬프트의 최장 공통 접두(템플릿·대화 컨텍스트·오디오, 길이 P)를 KV 캐시에 한 번 인코딩하고, N개 질문 접미사를 한 행에 이어 붙인다. 블록 대각 4-D 마스크로 각 접미사는 접두사와 자기 자신에만 인과적으로 attend하고 다른 접미사는 보지 못하며, 위치 id는 각 접미사마다 P에서 재시작한다. 비용은 N·C(P+L̄) 대신 ≈ C(P) + Σ C(L_j), KV 캐시는 N(P+L̄) 대신 P + Σ L_j 위치를 차지해 긴 공유 컨텍스트가 메모리를 배로 늘리지 않는다. 저자들은 이 구성이 수치 정밀도 수준까지 정확하다고 밝힌다.

실험은 Qwen3-32B(bf16, 동결)와 Qwen3-ASR-0.6B(동결) 조합으로, A는 8×H200, B는 8×A800에서 동일 데이터·스케줄(전역 배치 16, lr 2e-4, 1k 워밍업, 코사인 감쇠, 라운드당 32k 스텝)로 처음부터 학습했다. R1–R2는 콘텐츠 과제만 쓰고 WenetSpeech, GigaSpeech, LibriSpeech, Common Voice, CoVoST 혼합의 100개 팩 중 각각 하나(라운드당 50만 발화)를 사용한다. R3는 R2 커넥터에서 시작하는 짧은 부가정보 단계다. 성별 팩은 AISHELL-1과 LibriSpeech의 실제 발화 32k, 감정 팩은 ESD(중국어·영어)와 CREMA-D(영어)의 4클래스(중립·행복·분노·슬픔) 26k다. 모든 클립이 전사·이어쓰기·선택형 질문을 같은 비율로 제공하고, 테스트 화자는 학습 화자와 분리되며 합성 음성은 쓰지 않는다.

지연과 수용력 수치가 인상적이다. 같은 엔진에서 10개 결정을 단일 토큰으로 읽으면 이벤트당 92ms인데, JSON으로 생성하면 1.57초로 17배 차이고 여기에 캐스케이드가 필요로 하는 자기회귀 전사 411ms가 더 붙는다. 1,471토큰 대화 컨텍스트(프로덕션 툴 필요성 검사의 중앙값)에서는 격차가 11배다. JSON 캐스케이드는 0.5초 안에 어떤 부하도 처리하지 못하지만, 리드아웃은 GPU 한 장에서 초당 17–20 이벤트(컨텍스트 포함 시 10–12)를 처리한다. 8×H200 노드(GPU당 엔진 하나)에서는 8개 이벤트(80개 결정)가 94–103ms에 끝나고, 0.5초 예산 안에서 초당 161 이벤트, 즉 1,613 결정을 처리하며 포화 시 3,684 결정/s에 이른다. 다만 완전 포화(동시 64 이벤트)에서는 배치 디코딩과 대등해진다(컨텍스트 없이 335 대 311 결정/s). 저자들이 명시하듯 이점은 원시 처리량이 아니라 대화 예산 안의 지연과 수용력이다. prefix sharing의 정확성도 검증됐다. 공유 방식과 개별 방식이 200개 질문-발화 쌍 중 A에서 195개, B에서 198개, 0.5–5k 토큰 컨텍스트 40개 중 40개에서 같은 답을 냈고, 차이는 대부분 근소한 동점(마진 ≤0.06, 중앙값 |Δp| 0.01–0.02, bf16 노이즈)이었다. 배치가 답을 바꾸지도 않는다(실제 음성 성별 800개 중 790개 일치, ZJU 100개 중 99–100개 일치, qa100은 최대 1문항 변동).

콘텐츠 이해는 크게 손상되지 않는다. 마지막 레이어 커넥터 B는 1% 팩 두 개만으로 qa100 음성 질문 100개 중 90개를 맞혀 오라클 전사(91)에 근접했고, A는 83이었다. ZJU-ML에서는 둘 다 77–79로, 훨씬 많은 데이터로 학습된 공개 Whisper 커넥터(85)보다 낮다. 부품 교체도 가능하다. Whisper 커넥터는 89, Gemma-3-27B 버전은 92(전사 상한 93)를 냈다. Easy-Turn 제로샷 턴테이킹은 음성에서 76–77%, 텍스트에서 80.5%였고, wait 재현율은 텍스트에서도 0.3 근처로 LLM 읽기의 한계였다. 신뢰도 게이팅은 p ≥ 0.95에서만 답할 때 qa100의 87%를 커버하며 정확도 93%(B)를 준다. 부가정보에서는 증류가 완패한다. R2에서 성별 팩으로 6k 스텝 증류하면 실제 음성과 ZJU 모두 찬스(53%)에 머물고 여성 재현율 0.3, 남성 0.8로 텍스트 사전확률을 유지했다. 데이터·용량·스케줄 문제가 아니다. 성별 전용 혼합, 5배 학습률, 랜덤 커넥터 재시작, 학습 발화·학습 프롬프트로 평가(56%)까지 모두 찬스였고, 학생이 무지한 교사를 따라가며 손실만 계속 줄었다. 손실만 answer-token supervision으로 바꾸면 같은 데이터·스케줄로 성별 89%(A)/88%(B), 감정 72%(A)/86%(B)가 된다. 성별 질문을 80% 넣으면 250 스텝 안에 습득되고(A 92%, ZJU native 97%), 성별 학습 모델은 감정에서 찬스(26–29%)를 유지해 답 편향이 아니라 단서를 배웠음이 확인된다. 프로브는 성별 97–99%, 감정 88–93%가 인코더 마지막 레이어와 두 커넥터가 LLM에 넘기는 임베딩에서 이미 선형 디코딩 가능함을 보여, 병목이 커넥터가 아니라 목표 함수임을 뒷받침한다. 대가는 있다. qa100은 모든 answer-supervised 실행이 시작점 대비 3점 이내였지만, ZJU-ML은 민감해 감정 데이터가 6–10점, 4과제 혼합이 16–17점을 깎았고 거의 전부 실제 음성 factual 절반(중국어·영어 공통)에서 발생했다. 혼합 목표는 이 드리프트를 줄이지 못하지만 qa100을 지키고(−1 대 −4) 최고 부가정보 점수(성별 90, ZJU 90/86, 감정 90)를 낸다.

개발자 관점에서 이 논문이 주는 실무 패턴은 두 가지다. 첫째, 결정을 생성이 아니라 리드아웃으로 바꾸면 같은 엔진에서 17배 지연 이득이 나고, prefix sharing을 쓰면 긴 대화 컨텍스트를 질문마다 재인코딩하지 않아도 된다(1.5k 컨텍스트 100개 질문이 순차 37.9초 대신 5.1초, 5k 컨텍스트 50개가 112초 대신 5.5초). 둘째, 전사 증류만으로 부가정보를 기대하면 안 된다. 성별·감정처럼 단어에 없는 정보는 리드아웃 토큰에 직접 지도해야 하며, 이때 콘텐츠 증류를 함께 유지하는 혼합 목표가 이해력 손실을 줄인다. 저자들은 가중치, 학습 레시피, 풀듀플렉스 서빙용 배치 추론 파이프라인, 이중언어 qa100 테스트셋을 공개했다.

한계와 전제도 분명하다. 스트리밍 입력은 평가하지 않았고, 160–200ms 고정 클록으로 모든 통화의 최신 오디오를 모아 한 번에 결정 집합을 답하는 배포 패턴은 제안일 뿐 검증되지 않았다. 포화 처리량에서는 배치 디코딩과 대등해져 이점이 사라지고, 커넥터는 전체 데이터의 1%에 해당하는 팩 두 개만으로 학습됐다. ZJU-ML 드리프트는 해결되지 않은 문제로 남고, 감정 코퍼스는 연구용 라이선스이며, 라벨은 코퍼스 제공값이고 새로운 인간 피험자 데이터는 수집하지 않았다.