Contexte et objectifs
Phonon est un modèle de synthèse texte‑à‑parole (TTS) conçu pour fonctionner entièrement sur l’appareil de l’utilisateur, sans serveur ni connexion réseau. La version 31 M, publiée sous licence Apache 2.0, permet une utilisation commerciale libre, tandis que les modèles plus grands (40 M) sont sous CC BY‑NC pour les projets non commerciaux. En deux semaines, le dépôt a été téléchargé plus de 200 000 fois, ce qui montre un fort engouement pour une solution TTS hors‑ligne.
Le projet vise à résoudre le compromis habituel entre taille du modèle et qualité audio. Les modèles précédents de petite taille sacrifiaient la naturalité, alors que les modèles de haute qualité étaient trop volumineux pour les appareils mobiles. Phonon propose plus de 100 voix intégrées, le support de cinq langues (anglais, français, allemand, espagnol, portugais) et la possibilité de créer des voix personnalisées via le studio Gradium.
Architecture et entraînement
Phonon appartient à la lignée Pocket TTS et utilise le flow matching pour générer les latents audio. Cette approche diffère des réseaux de diffusion ou des modèles à attention classiques et permet d’obtenir une qualité comparable à des modèles jusqu’à 100 fois plus gros. Le modèle génère les latents de façon autoregressive : chaque pas produit un latent qui devient l’entrée du pas suivant, analogiquement aux tokens dans un modèle de langage.
L’entraînement a été marqué par une instabilité numérique, résolue grâce à plusieurs astuces (normalisation, ajustement du taux d’apprentissage, etc.). Le codec audio agit comme un tokenizer : il mappe le signal audio en latents, ce qui évite l’encodage direct du son et réduit la charge mémoire. Le nombre de paramètres du modèle 31 M est de 30 788 354, tandis que le tokenizer audio compte 10 305 313 paramètres, comme le montre le code suivant :
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")
print(f"{model.num_parameters():,}") # 30,788,354
print(f"{processor.audio_tokenizer.num_parameters():,}") # 10,305,313
Les voix sont stockées sous forme de tenseurs de latents de locuteur, accessibles via le hub Hugging Face :
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
path = hf_hub_download("gradium/phonon-voices", "voices/LMDIYE0Oa377Qh6Z.safetensors")
voice = load_file(path)["speaker_wavs"][0].T # (num_frames, 512)
Performances et benchmarks
Sur le Open TTS Leaderboard, Phonon se classe premier en intelligibilité (WER) pour l’allemand et l’espagnol, et reste dans le top 3 pour toutes les langues évaluées, malgré une taille de 65‑75 Mo. En vitesse, le modèle domine le benchmark CPU streaming : le temps jusqu’au premier audio (time‑to‑first‑audio) est le plus bas parmi les modèles testés, ce qui le rend adapté aux applications en temps réel sur des processeurs Intel, ARM ou WebAssembly.
Le framework d’inférence ptts, développé spécifiquement pour Phonon, supporte plus de dix back‑ends, incluant CPU (Intel, Arm, WebAssembly), GPU (CUDA, Vulkan, Metal, WebGPU) et NPU (Apple Core ML, Snapdragon®). Cette flexibilité permet d’exécuter Phonon sur des smartphones, des ordinateurs portables, des SBC comme le Raspberry Pi, voire directement dans un onglet de navigateur.
Déploiement et écosystème
Phonon est intégré à 🤗 Transformers depuis la version 5.21, offrant une implémentation de référence en PyTorch. Tandis que ptts privilégie le streaming mono‑flux sur l’appareil, Transformers cible le débit GPU avec génération batchée et compilation torch.compile, idéal pour la création de jeux de données à grande échelle.
Des démonstrations concrètes illustrent l’usage hors‑ligne : un Apple Watch sans Wi‑Fi guide la préparation d’un café, un iPhone sans signal compte les répétitions d’un entraînement, et un robot « Lamp » parle en personnage. Des projets communautaires comme ExecuTorch (GPU dans le navigateur) ou Micdrop (Node.js) montrent la rapidité d’intégration.
En résumé, Phonon combine une architecture novatrice, des performances de pointe sur des appareils modestes et un écosystème ouvert, ouvrant la voie à une adoption large de la synthèse vocale locale.