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

3 weeks ago 11

  • 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<AudioChunk> 형태로 즉시 재생 가능
  • 주요 최적화 네 가지:
    • eval() 통합으로 GPU 동기화 감소
    • Bulk audio extraction으로 디코딩 효율 향상
    • Prefill batching으로 초기 단계 병렬 처리
    • Temporal transformer 컴파일로 Metal 커널 호출 450회 이상을 최적화
  • --compile 플래그 또는 model.warmUp()으로 커널 퓨전 활성화 가능

실행 및 배포

  • GitHub 저장소: 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 등 여러 오픈소스 생태계의 통합 성과로 평가됨

Read Entire Article