# Nvidia PersonaPlex 7B on Apple Silicon: Swift 기반 실시간 양방향 음성 대화 모델

> Clean Markdown view of GeekNews topic #27248. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27248](https://news.hada.io/topic?id=27248)
- GeekNews Markdown: [https://news.hada.io/topic/27248.md](https://news.hada.io/topic/27248.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-03-06T13:46:31+09:00
- Updated: 2026-03-06T13:46:31+09:00
- Original source: [blog.ivan.digital](https://blog.ivan.digital/nvidia-personaplex-7b-on-apple-silicon-full-duplex-speech-to-speech-in-native-swift-with-mlx-0aa5276f2e23)
- Points: 9
- Comments: 1

## Summary

**PersonaPlex 7B**는 **Apple Silicon**에서 **Swift / MLX**로 구동되는 단일 음성 대화 모델로, 기존의 **ASR→LLM→TTS** 단계를 하나로 통합해 텍스트 변환 없이 오디오 입력과 출력을 직접 처리합니다. **4비트 양자화**로 모델 크기를 3분의 1로 줄이면서도 **실시간보다 빠른 처리 속도(RTF 0.87)** 를 달성해, 온디바이스 환경에서도 자연스러운 양방향 음성 대화를 구현합니다. **qwen3‑asr‑swift** 통합을 통해 ASR·TTS·Speech‑to‑Speech 기능이 하나의 Swift 라이브러리로 제공되어, 서버 없이 동작하는 **음성 비서·대화형 에이전트 개발**의 기반이 되고 있습니다.

## Topic Body

- **Apple Silicon**에서 **Swift/MLX**로 구현된 **PersonaPlex 7B** 모델이 **실시간 양방향 음성 대화**를 지원함  
- 기존의 **ASR→LLM→TTS** 3단계 음성 파이프라인을 하나의 모델로 통합해, **텍스트 변환 없이 오디오 입력과 출력**을 직접 처리함  
- **4비트 양자화(quantization)** 로 모델 크기를 16.7GB에서 5.3GB로 줄였으며, **68ms/step(RTF 0.87)** 로 **실시간보다 빠른 처리 속도**를 달성함  
- **Mimi 오디오 코덱**과 **Depformer 구조**를 활용해 음성 품질 저하 없이 효율적인 스트리밍을 구현함  
- **Swift 네이티브 환경에서 서버 없이 동작**하며, **음성 비서·대화형 에이전트 개발**을 위한 기반 기술로 중요함  

---

### qwen3-asr-swift와 PersonaPlex 7B 통합
- **qwen3-asr-swift** 라이브러리가 Apple Silicon에서 **NVIDIA PersonaPlex 7B**를 통합해 **양방향 음성 대화(full-duplex speech-to-speech)** 기능을 지원  
  - 입력 오디오를 실시간으로 처리하며, 동시에 응답 오디오를 생성  
  - **ASR, TTS, 다국어 합성** 기능을 포함한 통합 음성 처리 라이브러리로 확장됨  
- 모델은 **4비트 양자화된 5.3GB 버전**으로 Hugging Face의 `aufklarer/PersonaPlex-7B-MLX-4bit`에서 제공  

### 기존 음성 파이프라인의 단일화
- 전통적인 음성 비서는 **ASR → LLM → TTS**의 3단계 구조로, 각 단계에서 **지연(latency)** 과 **감정 손실**이 발생  
- PersonaPlex는 이를 **단일 모델**로 통합해, **음성 토큰(audio tokens)** 을 직접 처리  
  - **17개 병렬 스트림(12.5Hz)** 으로 오디오를 실시간 변환  
  - **Kyutai의 Moshi 아키텍처**를 기반으로, **18개 음성 프리셋과 역할 기반 시스템 프롬프트**를 지원  

### 모델 구조와 변환
- 원본 **16.7GB PyTorch 체크포인트**를 **MLX 최적화 safetensors**로 변환  
  - 변환 스크립트(`convert_personaplex.py`)가 가중치 분류, 4비트 양자화, 프리셋 추출, Hugging Face 업로드를 자동 처리  
- **Temporal Transformer(7B 파라미터)** 와 **Depformer**를 모두 4비트로 압축  
  - Depformer는 **단계별 가중치 전환(MultiLinear)** 구조를 사용해 **2.4GB → 650MB**로 축소  
  - 품질 저하 없이 **3.7배 용량 절감**  

### 음성 처리 파이프라인
- **Mimi Encoder/Decoder**를 통해 24kHz 오디오를 16개 코드북 토큰으로 변환  
  - Temporal Transformer가 사용자·에이전트 오디오 스트림을 통합 처리  
  - Depformer가 16단계로 에이전트 오디오 토큰을 생성  
  - Mimi Decoder가 이를 다시 24kHz 오디오로 복원  
- **Mimi 코덱, KV 캐시, RoPE, SwiGLU, RMSNorm** 등 기존 TTS 모델의 구성요소를 그대로 재사용  

### 시스템 프롬프트와 대화 제어
- PersonaPlex는 **텍스트 기반 시스템 프롬프트**로 대화 스타일을 제어  
  - 프롬프트가 없으면 모델이 주제에서 벗어나거나 장황하게 응답  
  - CLI 또는 API에서 **assistant, customer service, teacher** 등 프리셋 선택 가능  
  - 동일한 질문에서도 프롬프트 유무에 따라 응답 품질이 크게 달라짐  

### 성능 및 실시간 처리
- **M2 Max(64GB)** 환경에서 **68ms/step, RTF 0.87**로 **실시간보다 빠른 처리 속도** 달성  
  - 80ms 프레임 예산(12.5Hz) 내에서 안정적으로 동작  
- **ASR, TTS, Speech-to-Speech**를 하나의 라이브러리에서 통합 테스트 가능  
  - **E2E 검증**은 ASR을 통해 응답 오디오를 다시 텍스트로 변환하여 주제 일관성을 확인  

### 스트리밍 및 최적화
- `respondStream()` API가 **2초 단위 오디오 청크**를 실시간으로 생성  
  - **AsyncThrowingStream&lt;AudioChunk&gt;** 형태로 즉시 재생 가능  
- 주요 최적화 네 가지:
  - **eval() 통합**으로 GPU 동기화 감소  
  - **Bulk audio extraction**으로 디코딩 효율 향상  
  - **Prefill batching**으로 초기 단계 병렬 처리  
  - **Temporal transformer 컴파일**로 Metal 커널 호출 450회 이상을 최적화  
- `--compile` 플래그 또는 `model.warmUp()`으로 커널 퓨전 활성화 가능  

### 실행 및 배포
- GitHub 저장소: [ivan-digital/qwen3-asr-swift](https://github.com/ivan-digital/qwen3-asr-swift)  
  - `swift build -c release`로 빌드 후, CLI 명령으로 **ASR, TTS, Speech-to-Speech** 실행 가능  
  - 첫 실행 시 약 **5.3GB 모델 다운로드** 필요  
- **MLX 프레임워크** 기반으로, **Python이나 서버 없이 Swift 네이티브 환경**에서 완전 동작  

### 기술적 의의
- **Apple Silicon의 통합 메모리 구조와 Metal 가속**을 활용해 **고성능 음성 모델의 온디바이스 실행**을 입증  
- **단일 모델 기반 실시간 음성 대화** 구현으로, **AI 비서·콜센터·교육용 음성 인터페이스** 등 다양한 응용 가능성 확보  
- NVIDIA, Kyutai, Alibaba Qwen, FunAudioLLM, Apple MLX 등 **여러 오픈소스 생태계의 통합 성과**로 평가됨

## Comments



### Comment 52509

- Author: neo
- Created: 2026-03-06T13:46:31+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47258801) 
- 이 프로젝트가 정말 마음에 들었음. 예전에 **PersonaPlex**를 blackwell 디바이스에서 돌리려다 실패했는데, 이번엔 Mac에서 시도해볼 예정임  
  음성 에이전트를 꽤 오래 다뤄본 입장에서 몇 가지 주의할 점이 있음. **VAD→ASR→LLM→TTS 파이프라인**도 RTT가 1초 미만이면 실시간처럼 느껴짐. 내 프로젝트 [ova](https://github.com/acatovic/ova), 그리고 [voice-agent](https://www.ntik.me/posts/voice-agent), [parakeet.cpp](https://github.com/Frikallo/parakeet.cpp) 같은 예시를 참고할 만함  
  PersonaPlex 커뮤니티와 이야기해보니, 완전한 full-duplex 구조는 정확도나 성능 면에서 아직 어렵고 학습도 까다로움. 반면 **ASR→LLM→TTS** 구조는 모듈형이라 작은 LLM과 큰 LLM, 로컬과 API 기반 엔드포인트를 자유롭게 섞을 수 있는 유연성이 있음
  - 나도 개인적으로 음성 에이전트를 직접 만들고 있어서 꼭 이야기 나눠보고 싶음. 지금은 full-duplex 파이프라인을 **agentic framework**에 어떻게 통합할 수 있을지 고민 중임  
    기존의 **STT→LLM→TTS** 구조는 도구 호출, 고급 컨텍스트 관리, RAG 등과 잘 맞음. 사람과 직접 대화하는 에이전트와 내부 서브에이전트를 분리해 **지연 시간**과 **컨텍스트 부하**를 줄이는 방식이 잘 작동함  
    full-duplex 구조는 더 역동적으로 느껴지지만, 실제로 음성 에이전트에 통합하는 방법은 아직 감이 잘 안 옴. Discord에서 의견 교환해보고 싶음
  - 이 스레드의 핵심은 full-duplex 대 composable 파이프라인의 대립처럼 보이지만, 실제로는 두 구조가 **동시에 작동**해야 함. 이 라이브러리는 이미 그 절반쯤 와 있음  
    qwen3-asr-swift가 ASR, TTS, PersonaPlex를 하나의 Swift 패키지로 묶었기 때문에 필요한 구성요소는 이미 다 있음. PersonaPlex는 **저지연 백채널링**과 자연스러운 턴테이킹을 담당하고, 별도의 LLM이 도구 호출을 수행함  
    문제는 이 둘의 **오케스트레이션**임. 언제 ‘뇌’가 ‘입’을 덮어쓸지, PersonaPlex가 검증되지 않은 답을 확신 있게 말하지 않게 하려면 어떻게 해야 할지, 도구 결과가 기존 발화와 충돌할 때 어떻게 처리할지가 아직 미해결 과제임
  - 이 파이프라인에 전적으로 동의함. 작은 모델로 즉각적인 응답을 생성하고, 동시에 **도구 호출**이나 더 지능적인 모델로의 연결을 수행할 수 있음. 빠른 **비동기 응답**과 도구 호출을 병렬로 처리하는 구조가 훌륭함
  - 나도 여전히 **composable pipeline** 구조를 선호함. 대규모 서비스에서는 비용이나 품질에 따라 LLM을 교체할 수 있는 **유연성**이 큰 장점임

- 이 프로젝트가 흥미롭지만, 개인적으로는 **7B 로컬 모델**에 도구 호출 기능이 있었으면 좋겠음. 지금 버전은 단순히 wav 파일을 입력받는 **proof of concept** 수준임  
  - 나는 포크해서 병렬로 또 다른 LLM을 돌려 **도구 호출 시점**을 추론하도록 수정했음. 내 버전은 조명 제어 같은 간단한 작업에 잘 작동함. 코드 업데이트는 [여기](https://github.com/taf2/personaplex)에 있음
  - /Examples/PersonaPlexDemo 폴더에 **턴 기반 대화 데모**가 포함되어 있음. 다만 실시간 변환은 아직 구현되지 않았음
  - 단순히 wav 파일만 받는다는 말은 조금 오해가 있음. 오디오 버퍼만 있으면 되고, **스트리밍 지원**도 계획되어 있음. ASR, 스트리밍 TTS, 다국어 합성 등으로 발전해온 흐름을 보면, PersonaPlex의 방향은 명확히 **스트리밍 음성 처리**임
  - 이상적으로는 휴대폰에서 **PWA + WebRTC**로 PC/Mac의 모델과 연결하는 구조가 좋을 것 같음. Livekit을 쓰면 복잡한 부분은 대부분 해결됨
  - [NVIDIA/personaplex](https://github.com/NVIDIA/personaplex)는 실제로 **인터랙티브**하게 작동함

- 글의 **LLM 작성 스타일**이 너무 인위적으로 느껴져서 프로젝트 품질이 의심스러웠음  
  - 하지만 AI 연구자들이 LLM을 모든 곳에 사용하는 건 자연스러운 일임. AI에 열정적인 사람이라면 당연히 그렇게 함  
  - 어떤 점에서 LLM이 쓴 글처럼 느껴졌는지 궁금함. 다이어그램은 그렇다 쳐도, 텍스트는 어떤 부분이 그렇게 보였는지 알고 싶음  
  - 나는 오히려 AI가 쓴 글이 더 읽기 편했음. 사람들은 종종 장황하게 쓰지만, AI는 정보를 **소화하기 쉽게** 구성함  
  - 개인적으로는 AI가 만든 **그래프나 차트**가 더 싫음

- M1 Max MacBook에서 데모를 돌려봤는데, 응답이 10초 이상 걸리고 내용도 엉뚱했음  
  - 사실 7B급 full-duplex 모델은 **지능 수준**이 낮아서 도구 호출이 불가능하다는 점이 한계임. ChatGPT 음성 모드처럼 웹 검색이나 링크 읽기를 흉내만 내는 문제도 있음  
    물론 특정 용도에서는 쓸모가 있을 수도 있겠지만, 그 부분은 더 배우고 싶음  
  - 인용된 글에 따르면, PersonaPlex는 **시스템 프롬프트**로 대화 스타일을 제어할 수 있음. 프롬프트 없이 실행하면 주제에서 벗어나지만, 프롬프트를 주면 훨씬 일관된 응답을 함  
  - 혹시 **context size**가 얼마인지 궁금함  
  - RTX 5070급 GPU에서는 사람보다 빠르게 반응했음

- 이 기술이 꽤 **위험해 보임**. 관련 기사: [The Guardian 보도](https://www.theguardian.com/technology/2026/mar/04/gemini-chatbot-google-jonathan-gavalas)  
  - LLM을 상담사처럼 사용할 때, 이전 입력을 살짝 수정해 다시 답변을 생성해보면 얼마나 **편향적**인지 바로 느껴짐. 인간처럼 보이지만 실제로는 입력에 과도하게 의존함  
  - LLM이 단순히 **문서 완성기(document completer)** 라는 점을 사용자에게 교육하면 대부분의 문제는 해결될 것 같음. 일부 제품은 이런 사실을 숨겨서 더 인간적으로 보이게 만들지만, 오히려 역효과임  
  - 기사 내용이 위험성을 잘 요약함. 챗봇이 사용자를 ‘사랑한다’고 부르며 자살을 부추긴 사례가 있었고, 비슷한 사건으로 Google이 소송을 당한 사례도 있음

- 예전에 본 **Sesame**이 최고의 full-duplex 데모였음. 지금은 어떻게 됐는지 궁금함 ([링크](https://app.sesame.com/))  
  - 나는 **unmute.sh**도 꽤 즐겨 썼음  
  - 진짜 믿기 힘들 정도로 완성도가 높았음

- 나는 **whisperKit**의 팬임. 최근에 **TTS 기능**이 추가되어 훨씬 좋아졌음. 화자 분리(speaker diarization)와 사용자 정의 사전도 지원함  
  한 기기에서 4개 모델을 동시에 실시간으로 돌린 부하 테스트도 있음:  
  - Qwen3-TTS (텍스트→음성)  
  - Parakeet v2 (음성→텍스트)  
  - Canary v2 (다국어 STT/번역)  
  - Sortformer (화자 분리)  
  [테스트 영상](https://x.com/atiorh/status/2027135463371530695)

- 내 휴대폰이 스팸 전화를 이 모델로 **자동 포워딩**해서, 가짜 개인정보를 천천히 흘리며 날씨나 스포츠 얘기를 섞어주는 시스템을 만들고 싶음  
  - 스팸 문자에도 적용하면 재밌을 듯. “날씨 때문에 식기세척기가 이상해졌어요. 염소 요가방이 많아서 접시가 금방 닳아요” 같은 식으로 **헛소리 대응**을 자동화하면 최고임

- PersonaPlex를 **아웃바운드 콜용으로 파인튜닝**하려고 시도 중임. Kyutai/moshi-finetune의 LoRA 방식을 적용했는데, 스케일링 팩터를 5로 높여야 작동하고 다른 부분이 망가짐  
  GPT-5.3 Codex가 코드 검토 중 **화자 A/B가 뒤바뀌었다**고 해서 다시 데이터셋을 생성 중임.  
  내 GitHub(runvnc)에 moshi-finetune과 personaplex 버전이 있고, **Gradio 앱**으로 데이터 생성과 학습이 가능함. 아직 쓸 만한 결과는 없음

- 나는 **MacWhisper**를 자주 쓰는데, Whisper Large v3 Turbo 모델은 괜찮지만 **지연 시간**이 누적됨. 온라인 LLM으로 후처리하면 품질은 좋아지지만 속도가 느림  
  - MacWhisper는 이미 **Parakeet v2** 같은 10배 빠른 모델을 지원함. 써봤는지 궁금함  
  - 나는 [Handy](https://handy.computer/)에서 Parakeet V2를 STT로, [Cerebras](https://www.cerebras.ai/)의 gpt-oss-120b를 후처리에 써서 만족스러움  
  - Handy가 지원하는 모델들도 써볼 만함. Whisper-large보단 품질이 낮지만 **속도는 매우 빠름**  
  - Fluid Audio의 **Parakeet TDT CoreML 최적화 모델**이 지금까지 써본 것 중 가장 빠름. NPU 오프로딩 덕분임  
    [모델 링크](https://huggingface.co/FluidInference/parakeet-tdt-0.6b-v2-coreml), [FluidAudio GitHub](https://github.com/FluidInference/FluidAudio)  
    Discord 커뮤니티도 활발하고, **VAD, TTS, EOU** 같은 최신 기능 논의가 활발함  
  - Handy + Parakeet v2 조합은 정말 훌륭함
