9 points par GN⁺ 2026-03-06 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • 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.

Aucun commentaire pour le moment.