Ce qui se passe
Gradium a publié il y a deux semaines les poids de Phonon, un modèle de synthèse vocale qui tourne entièrement sur l'appareil : pas de serveur, pas de réseau, le texte reste local. Le billet du 5 novembre, signé par l'éditeur sur le blog de Hugging Face, fait le bilan du lancement et détaille l'intégration à Transformers. Il revendique plus de 200 000 téléchargements en deux semaines.
Ce qui est publié
| Modèle | Langues | Licence |
|---|---|---|
| Phonon 31m | anglais | Apache 2.0, usage commercial libre |
| Phonon 40m | anglais, français, allemand, espagnol, portugais | CC BY-NC, non commercial |
Les deux pèsent environ 65 et 75 Mo. Plus de 100 voix sont fournies ; d'autres se créent par clonage (avec le consentement de la personne) ou par description dans Gradium Studio. Le modèle gère les cas où les TTS trébuchent souvent : numéros de téléphone, dates, codes. Pour un usage commercial du modèle multilingue, le tarif dépend du nombre d'utilisateurs, pas du volume de parole.
Les chiffres
Phonon descend de Pocket TTS, de Kyutai, et génère l'audio par flow matching. Sur l'Open TTS Leaderboard de Hugging Face (intelligibilité mesurée par taux d'erreur de mots, vitesse, naturel), il est premier en intelligibilité en allemand et en espagnol, et dans les trois premiers dans chaque langue évaluée par Gradium. Sur le banc de streaming CPU, le premier son arrive en 28 ms au 95e centile pour Phonon 31m et 38 ms pour la version 40m en anglais, contre 165 ms pour Pocket TTS.
Le faire tourner
Deux voies. ptts, le moteur de Gradium, vise un flux unique sur l'appareil, avec plus de dix backends : CPU (Intel,
Arm, WebAssembly), GPU (CUDA, Vulkan, Metal, WebGPU) et NPU (Core ML, Snapdragon). Transformers, à partir de la
version 5.21, sert d'implémentation de référence en PyTorch, pour le débit sur GPU :
from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration
model_id = "gradium/phonon-31m-en"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = GradiumPhononTTSForConditionalGeneration.from_pretrained(model_id, device_map="auto")Une voix n'est pas un enregistrement mais un tenseur de latents, téléchargé depuis le dépôt gradium/phonon-voices
et passé au processeur ; model.generate() renvoie des latents audio que processor.decode() convertit en son. La
communauté a déjà produit une conversion ExecuTorch pour WebGPU dans le navigateur et une intégration Node.js via
Micdrop.
La limite
La version qui parle français est non commerciale. Pour un produit francophone payant ou monétisé, Phonon impose une discussion tarifaire avec Gradium, ou de rester sur un autre moteur. Et les résultats cités sont ceux que l'éditeur met en avant.
Source : blog Hugging Face, billet de Gradium. Démo sur le Space Phonon. Source en anglais.