- Le modèle PersonaPlex 7B, implémenté en Swift/MLX sur Apple Silicon, prend en charge des conversations vocales bidirectionnelles en temps réel
- Il unifie l’ancien pipeline vocal en 3 étapes ASR→LLM→TTS en un seul modèle, traitant directement l’entrée et la sortie audio sans conversion en texte
- Grâce à une quantification en 4 bits (quantization), la taille du modèle est passée de 16,7 Go à 5,3 Go, avec une vitesse de traitement de 68 ms/étape (RTF 0,87), donc plus rapide que le temps réel
- Il s’appuie sur le codec audio Mimi et l’architecture Depformer pour assurer un streaming efficace sans dégradation de la qualité vocale
- Il fonctionne nativement en Swift sans serveur et constitue une technologie de base importante pour le développement d’assistants vocaux et d’agents conversationnels
Intégration de qwen3-asr-swift et PersonaPlex 7B
- La bibliothèque qwen3-asr-swift intègre NVIDIA PersonaPlex 7B sur Apple Silicon pour prendre en charge les conversations vocales bidirectionnelles (full-duplex speech-to-speech)
- Elle traite l’audio d’entrée en temps réel tout en générant simultanément l’audio de réponse
- Elle s’étend en une bibliothèque de traitement vocal unifiée incluant ASR, TTS et synthèse multilingue
- Le modèle est proposé en version 4 bits de 5,3 Go sur Hugging Face :
aufklarer/PersonaPlex-7B-MLX-4bit
Unification du pipeline vocal traditionnel
- Les assistants vocaux classiques reposent sur une architecture en 3 étapes ASR → LLM → TTS, où chaque étape introduit de la latence et une perte d’émotion
- PersonaPlex unifie cela dans un modèle unique qui traite directement les audio tokens
- L’audio est converti en temps réel via 17 flux parallèles (12.5Hz)
- Basé sur l’architecture Moshi de Kyutai, il prend en charge 18 préréglages vocaux et des system prompts fondés sur des rôles
Architecture du modèle et conversion
- Le checkpoint PyTorch d’origine de 16,7 Go a été converti en safetensors optimisés pour MLX
- Le script de conversion (
convert_personaplex.py) automatise la classification des poids, la quantification 4 bits, l’extraction des préréglages et l’envoi sur Hugging Face
- Le Temporal Transformer (7B paramètres) et le Depformer ont tous deux été compressés en 4 bits
- Le Depformer utilise une structure de bascule de poids par étape (MultiLinear) pour passer de 2,4 Go à 650 Mo
- Cela permet une réduction de taille de 3,7× sans perte de qualité
Pipeline de traitement vocal
- Le Mimi Encoder/Decoder convertit l’audio 24 kHz en 16 tokens de codebook
- Le Temporal Transformer traite conjointement les flux audio utilisateur et agent
- Le Depformer génère les tokens audio de l’agent en 16 étapes
- Le Mimi Decoder les reconvertit ensuite en audio 24 kHz
- Des composants de modèles TTS existants, comme le codec Mimi, le cache KV, RoPE, SwiGLU et RMSNorm, sont réutilisés tels quels
System prompts et contrôle du dialogue
- PersonaPlex contrôle le style de conversation via des system prompts textuels
- Sans prompt, le modèle a tendance à s’éloigner du sujet ou à répondre de façon verbeuse
- Des préréglages comme assistant, customer service, teacher peuvent être sélectionnés via la CLI ou l’API
- Pour une même question, la qualité de réponse varie fortement selon la présence ou non d’un prompt
Performances et traitement en temps réel
- Sur un M2 Max (64 Go), il atteint 68 ms/étape, RTF 0,87, soit une vitesse supérieure au temps réel
- Il fonctionne de manière stable dans un budget de 80 ms par frame (12.5Hz)
- ASR, TTS et Speech-to-Speech peuvent être testés de manière unifiée dans une seule bibliothèque
- La validation E2E vérifie la cohérence thématique en reconvertissant l’audio de réponse en texte via l’ASR
Streaming et optimisations
- L’API
respondStream() génère en temps réel des chunks audio de 2 secondes
- Ils peuvent être lus immédiatement sous forme de AsyncThrowingStream<AudioChunk>
- Quatre optimisations principales :
- Intégration de
eval() pour réduire les synchronisations GPU
- Bulk audio extraction pour améliorer l’efficacité du décodage
- Prefill batching pour paralléliser les étapes initiales
- Compilation du temporal transformer pour optimiser plus de 450 appels de kernels Metal
- L’activation de la fusion de kernels est possible via l’option
--compile ou model.warmUp()
Exécution et déploiement
- Dépôt GitHub : ivan-digital/qwen3-asr-swift
- Après compilation avec
swift build -c release, il est possible d’exécuter ASR, TTS et Speech-to-Speech via des commandes CLI
- Au premier lancement, un téléchargement d’environ 5,3 Go du modèle est nécessaire
- Basé sur le framework MLX, il fonctionne intégralement dans un environnement Swift natif sans Python ni serveur
Portée technique
- Il démontre l’exécution on-device de modèles vocaux haute performance en exploitant la mémoire unifiée d’Apple Silicon et l’accélération Metal
- En mettant en œuvre une conversation vocale en temps réel fondée sur un modèle unique, il ouvre la voie à de nombreuses applications comme les assistants IA, centres d’appels et interfaces vocales éducatives
- Il est présenté comme une réussite d’intégration entre plusieurs écosystèmes open source : NVIDIA, Kyutai, Alibaba Qwen, FunAudioLLM et Apple MLX
Aucun commentaire pour le moment.