Apple Silicon에서 실시간 음성 대화, Swift로 구현!

by DD
3개월 전
조회수 4

NVIDIA의 PersonaPlex 7B 모델을 활용하여 Swift/MLX 환경에서 실시간 음성 대화(Speech-to-Speech)를 구현함

기존의 ASR-LLM-TTS 파이프라인(Pipeline)을 거치지 않고, 단일 모델로 지연 시간(Latency)을 단축

M1 Max Macbook에서 성능 저하 및 모델의 한계(Limitation)에 대한 커뮤니티의 비판이 존재함

도구 사용(Tool Use) 부재 및 AI 생성 텍스트(AI Generated Copy) 스타일에 대한 우려가 제기됨

단일 모델 아키텍처(Single Model Architecture)의 장점

NVIDIA의 PersonaPlex 7B는 기존의 ASR(Automatic Speech Recognition)-LLM(Large Language Model)-TTS(Text-to-Speech) 파이프라인을 대체하여, 음성 입력을 직접 음성으로 변환한다. 이 아키텍처는 정보 손실(Information Loss)을 줄이고, 지연 시간(Latency)을 단축하여 더욱 자연스러운 대화를 가능하게 한다. 특히, 17개의 병렬 스트림을 통해 12.5Hz로 오디오를 처리하여 실시간에 가까운 성능을 제공한다.

MLX를 활용한 Apple Silicon 최적화

본 기술은 Apple Silicon의 통합 메모리(Unified Memory)와 MLX의 Metal 가속(Metal Acceleration)을 활용하여, Python 종속성 없이 네이티브 Swift 환경에서 모델을 실행한다. 4-bit 양자화(Quantization)를 통해 모델 크기를 줄여, M1 Max Macbook과 같은 환경에서도 실행 가능하도록 최적화했다. eval() 통합(Consolidation), 대량 오디오 추출(Bulk Audio Extraction), 프리필 배치(Prefill Batching) 등의 기법을 통해 성능을 향상시켰다.

성능 및 실용성에 대한 커뮤니티의 비판

커뮤니티에서는 M1 Max Macbook에서 10초 이상의 응답 시간(Response Time)부적절한 답변(Unrelated Answers)을 보이는 등, 실제 사용에서의 성능 저하를 지적한다. 또한, 도구 사용(Tool Use) 부재로 인해 음성 에이전트로서의 실용성이 제한적이라는 의견이 제기된다. AI 환각(Hallucination)모델의 자기 대화(Self-Talking)와 같은 문제점도 언급되며, 프로덕션 환경에서의 사용에 대한 우려가 나타난다.

Mimi Codec 재사용 및 기술적 세부 사항

본 프로젝트는 Kyutai의 Moshi와 동일한 Mimi 오디오 코덱(Audio Codec)을 재사용하여, TTS(Text-to-Speech) 작업에서 검증된 기술을 활용한다. Depformer는 오디오 코드북을 순차적으로 생성하며, 각 단계에서 다른 가중치를 사용한다. 또한, MLXArray를 사용하여 KV 캐시 배열에 대한 명시적인 입출력을 정의하고, RoPE 오프셋을 MLXArray 입력으로 전달하는 등, Metal 커널 융합을 위한 최적화를 수행했다.

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