Skip to main content
공개 노트

Apple Silicon에서 PersonaPlex 7B 돌리기: Swift 풀듀플렉스 음성 대화

Views 9약 4분생성형 AI 활용
Summary

Apple Silicon에서 PersonaPlex 7B 돌리기: Swift 풀듀플렉스 음성 대화

최근 "Nvidia PersonaPlex 7B를 Apple Silicon에서 네이티브 Swift(MLX)로 풀듀플렉스 음성-음성 대화까지"라는 소식이 나오면서, 맥에서도 '사람처럼 끼어들고 맞장구치는' 실시간 음성 에이전트를 로컬로 만들 수 있겠다는 기대가 커졌습니다1. 이 글에서는 PersonaPlex가 왜 대화감을 확 바꾸는지, 그리고 Apple Silicon+Swift로 구현할 때 무엇이 핵심인지 실전 관점으로 정리해봅니다.

풀듀플렉스 음성 AI가 "대화감"을 만드는 이유

우리가 익숙한 음성 비서는 보통 "말하기 → 받아쓰기(ASR) → LLM → 읽어주기(TTS)" 순서로 움직입니다. 이 방식은 구조가 단순하지만, 필연적으로 기다림이 생깁니다. 내가 말을 끝내야만 기계가 일을 시작하니까요.

PersonaPlex는 이 줄서기를 무너뜨립니다. 듣는 중에도 말하고, 말하는 중에도 듣습니다. 그래서 사람이 대화할 때 흔히 하는 "응, 응", "잠깐만" 같은 백채널(맞장구)과 자연스러운 끼어들기(바지인)가 가능해집니다. 연구 소개들에서는 이런 동작이 단순 '속도'가 아니라, 대화의 리듬 자체를 재현하는 문제라고 강조합니다2.

PersonaPlex 7B 구조 한 장 요약: Helium + Mimi + 듀얼 스트림

PersonaPlex의 중심에는 7B급 추론 백본(Helium)이 있고, 음성은 '텍스트로 바꿔서 처리'하는 대신 오디오를 토큰으로 압축해 다룹니다. 여기서 중요한 부품이 Mimi라는 신경 오디오 코덱으로, 24kHz 음성을 토큰으로 인코딩/디코딩합니다2. 덕분에 억양, 감정, 말끝 처리 같은 정보가 텍스트 변환 과정에서 증발하지 않습니다.

또 하나의 포인트는 듀얼 스트림입니다. 사용자 입력(들어오는 음성 토큰)과 에이전트 출력(나가는 음성 토큰)을 동시에 다루는 구조라, 모델이 "내가 지금 말하는 동안 상대가 끼어들었네"를 실시간으로 인지하고 멈추거나 방향을 바꿀 수 있습니다. 실제로 상용 시스템 대비 턴테이킹/인터럽션 지연이 짧다는 수치도 공개됐습니다(예: 턴테이킹 약 0.170초, 인터럽션 약 0.240초)3.

Apple Silicon + Swift(MLX)로 옮길 때 생기는 현실적인 과제

여기서부터가 개발자 구간입니다. "맥에서 로컬로 된다"는 말은 멋지지만, PersonaPlex는 단순 LLM 1개가 아니라 '스트리밍 코덱 + 스트리밍 생성 루프'까지 포함한 복합 시스템입니다.

첫째, Mimi 코덱 포팅이 난이도 상단입니다. 스트리밍 컨볼루션/시퀀스 모델 성격이 강해, MLX 연산으로 깔끔하게 옮기고 지연 없이 흘려보내는 구현이 관건이 됩니다4.

둘째, 생성 루프가 진짜 제품 품질을 좌우합니다. 풀듀플렉스는 "토큰 생성 속도"만이 아니라, 마이크 입력 버퍼링, 에코/더킹(내 출력이 내 입력에 다시 들어오는 문제), 끼어들기 판정, 출력 중단(Stop Speaking) 같은 오디오 앱 엔지니어링이 한 묶음입니다. Swift로 네이티브 구현하면 지연을 줄이고 앱 통합은 쉬워지지만, 그만큼 경계 조건을 직접 다뤄야 합니다1.

셋째, 메모리 감각이 필요합니다. Apple Silicon의 강점은 통합 메모리(램=그래픽 메모리)라서 "GPU VRAM이 모자라서 못 올리는" 상황이 줄어든다는 점입니다5. 다만 7B급에 오디오 코덱까지 얹고 실시간 스트리밍 KV 캐시까지 챙기면, 16GB는 빠듯할 가능성이 큽니다. 여유 있는 맥(예: 32GB 이상)일수록 '끊김 없는 대화'에 유리합니다.

시사점: "로컬 음성 에이전트"의 설계가 바뀐다

PersonaPlex가 흥미로운 지점은, 음성 AI를 더 이상 ASR/LLM/TTS 3단 조립품으로만 보지 않게 만든다는 데 있습니다. 하나로 합쳐진 모델은 지연을 줄일 뿐 아니라, '대화 중 끼어들기' 같은 사용자 경험을 기본값으로 만듭니다2. 게다가 텍스트로 페르소나를 고정하고, 오디오 프롬프트로 목소리 톤까지 조건화하는 접근은 "브랜드 음성"이나 "캐릭터 유지"를 제품 요구사항으로 끌어올립니다2.

실무 팁을 짧게 정리하면 이렇습니다. 첫째, 목표를 "가끔 말해주는 TTS"가 아니라 "서로 겹쳐 말해도 안 깨지는 대화"로 잡아야 합니다. 둘째, MLX/Swift 포팅은 모델보다 스트리밍 루프가 난이도 핵심입니다. 셋째, 하드웨어는 토큰/초보다 '지속 가능한 메모리 여유'가 체감 품질을 결정합니다.

이 흐름이 계속되면, 맥에서도 인터넷 없이(그리고 분당 과금 없이) "진짜 대화 같은" 음성 앱을 만드는 일이 점점 현실이 될 겁니다. 이제 남은 질문은 하나죠. 여러분은 어떤 페르소나로, 어떤 목소리의 로컬 에이전트를 만들고 싶나요?

참고

1Nvidia PersonaPlex 7B on Apple Silicon: Full-Duplex Speech-to-Speech in Swift

2NVIDIA PersonaPlex: Controlled Full-Duplex Speech AI

3Nvidia just commoditized the voice AI stack with PersonaPlex-7B

4[Model Request] Porting Nvidia PersonaPlex-7B (Moshi architecture) & Mimi Codec · Issue #1405 · ml-explore/mlx-examples · GitHub](https://github.com/ml-explore/mlx-examples/issues/1405)

5Mac Runs 70B Models That Need Multi-GPU on PC -- Here's How

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기