Moshi : un modèle voix-texte pour les conversations en temps réel
Présentation de Moshi
- Moshi est un modèle voix-texte pour les conversations en temps réel ainsi qu’un framework de dialogue vocal bidirectionnel
- Il utilise Mimi, un codec audio neuronal de streaming à l’état de l’art
- Mimi convertit l’audio 24 kHz en 12,5 Hz, tout en conservant une bande passante de 1,1 kbps et en le traitant en streaming avec une latence de 80 ms
- Ses performances sont supérieures à celles des codecs non streaming existants comme SpeechTokenizer (50Hz, 4kbps) ou SemantiCodec (50Hz, 1.3kbps)
Fonctionnement de Moshi
- Moshi modélise deux flux audio : l’un pour Moshi, l’autre pour l’utilisateur
- Lors de l’inférence, le flux de l’utilisateur provient de l’entrée audio, tandis que celui de Moshi est échantillonné à partir de la sortie du modèle
- En plus de ces deux flux audio, Moshi prédit les tokens de texte correspondant à sa propre voix
- Un petit Depth Transformer modélise les dépendances entre codebooks à un pas de temps donné, et un grand Temporal Transformer de 7B de paramètres modélise les dépendances temporelles
- Moshi atteint théoriquement une latence de 160 ms et, en pratique, une latence inférieure à 200 ms sur un GPU L4
Caractéristiques de Mimi
- Mimi s’appuie sur d’anciens codecs audio neuronaux comme SoundStream et EnCodec, en ajoutant des Transformer à l’encodeur et au décodeur
- Mimi ajuste le stride pour se rapprocher davantage de la cadence moyenne des tokens de texte (~3-4 Hz)
- Mimi utilise une perte de distillation qui aligne les tokens du premier codebook sur les représentations auto-supervisées de WavLM
- Mimi montre une forte amélioration de la qualité subjective à faible bitrate en utilisant uniquement une perte d’entraînement adversariale et le feature matching
Structure du dépôt
- Ce dépôt contient trois versions de la pile d’inférence de Moshi
- La version Python utilisant PyTorch se trouve dans le répertoire
moshi/
- La version Python utilisant MLX pour les Mac série M se trouve dans le répertoire
moshi_mlx/
- La version Rust utilisée en production se trouve dans le répertoire
rust/
- Le code de la démo live est fourni dans le répertoire
client/
Modèles
- Trois modèles sont publiés
- Le codec vocal Mimi
- Moshi affiné avec une voix synthétique masculine (Moshiko)
- Moshi affiné avec une voix synthétique féminine (Moshika)
- Chaque modèle est disponible via un dépôt HuggingFace
- Tous les modèles sont publiés sous licence CC-BY 4.0
Prérequis
- Python 3.10 minimum est requis, et Python 3.12 est recommandé
- Pour les exigences spécifiques, se référer à chaque répertoire backend
- Des commandes d’installation sont fournies pour les clients PyTorch et MLX
Python (PyTorch)
- L’API basée sur PyTorch se trouve dans le répertoire
moshi
- Elle fournit le tokenizer audio de streaming (mimi) et le modèle de langage (moshi)
- Pour l’exécuter en mode interactif, il faut démarrer le serveur
Python (MLX) pour macOS
- Après avoir installé
moshi_mlx, il est possible d’exécuter l’inférence en local
- L’interface en ligne de commande est basique et ne dispose pas de fonction d’annulation d’écho
Rust
- Pour exécuter le serveur d’inférence Rust, utiliser les commandes depuis le répertoire
rust
- Sur macOS, il est possible d’utiliser
--features metal à la place de --features cuda
Client
- L’utilisation de l’interface web est recommandée, car elle fournit aussi une fonction supplémentaire d’annulation d’écho
- Une interface en ligne de commande est également proposée
Développement
- Il est possible de cloner le dépôt, de l’installer et de développer dessus
FAQ
- Vérifier la section des questions fréquentes avant d’ouvrir une issue
Licence
- La partie Python est sous licence MIT, le backend Rust sous licence Apache
- Le code du client web est sous licence MIT
- Les poids des modèles sont sous licence CC-BY 4.0
Citation
- Si vous utilisez Mimi ou Moshi, citez l’article
Le résumé de GN⁺
- Moshi est un modèle voix-texte innovant pour les conversations en temps réel, avec une faible latence et une haute qualité
- Le codec Mimi est plus efficace que les codecs existants et maximise les performances grâce aux Transformer
- Il peut être utilisé sur diverses plateformes et propose plusieurs versions, dont PyTorch, MLX et Rust
- Il est particulièrement utile pour les développeurs d’applications de conversation en temps réel, notamment lorsque la faible latence est essentielle
- Parmi les projets similaires, on peut citer WaveNet de Google et Jukebox d’OpenAI
1 commentaires
Commentaires sur Hacker News
Premier commentaire
Deuxième commentaire
Troisième commentaire
Quatrième commentaire
Cinquième commentaire
Sixième commentaire
Septième commentaire
Huitième commentaire
Neuvième commentaire
Dixième commentaire