Caractéristiques principales
Open Source
L’Open Science est au cœur de la philosophie de Kyutai et Moshi. Vous pouvez explorer l'intégralité de l'article de recherche pour comprendre en profondeur Moshi, et accéder au code source sous licence Apache 2 pour l'inférence. De plus, personnalisez les performances en ajustant vous-même les poids du modèle, disponibles sous licence CC BY 4.0.
Un modele Speech-to-Speech complet
Moshi est un modèle de conversation Speech-to-Speech avancé, qui reçoit la voix de l'utilisateur et génère à la fois du texte et une réponse vocale. Son mécanisme de monologue interne novateur améliore la cohérence et la qualité des discours produits, renforçant sa capacité à raisonner et à répondre avec précision.
Une intonation émotionnelle
Moshi est capable de moduler son intonation pour s’adapter à divers contextes émotionnels. Que vous lui demandiez de vous chuchoter une histoire mystérieuse ou de parler avec l'énergie d'un pirate intrépide, il peut exprimer plus de 92 intonations différentes, ajoutant ainsi une dimension émotionnelle puissante et immersive aux conversations.
Traitement acoustique fin
Le modèle acoustique Mimi, intégré à Moshi, traite l’audio en temps réel à 24 kHz et le réduit à une bande passante de 1,1 kbps, tout en maintenant une latence ultra-faible de 80ms. Malgré ce taux de compression élevé, Mimi surpasse les codecs non-streaming tels que SpeechTokenizer (50 Hz, 4 kbps) et SemantiCodec (50 Hz, 1,3 kbps), offrant une expérience fluide et fidèle.
Fluide de bout en bout
Moshi s’intègre nativement avec le protocole WebSockets, permettant une gestion en temps réel des entrées et sorties vocales. Cela garantit des interactions naturelles, continues et expressives, sans latence perceptible.
Conçu et entraîné en France
Pour rendre l’entraînement de Moshi possible, Kyutai a utilisé notre supercalculateur Nabu2023. Ce cluster, composé de 1016 GPUs Nvidia H100 (~4 PFLOPS) est hébergé à DC5, reconnu pour son refroidissement performant, dans la région proche de Paris.
Un modèle à l’état-de-l’art

Les systèmes actuels de dialogue vocal reposent sur des chaînes de composants indépendants (détection d'activité vocale, reconnaissance vocale, traitement textuel, et synthèse vocale). Cela entraîne une latence de plusieurs secondes et des pertes d'informations non linguistiques, comme les émotions ou les sons non verbaux. De plus, ces systèmes segmentent les dialogues en tours de parole, ignorant les interruptions ou le chevauchement des voix.

L’approche de Kyutai avec Moshi est de résoudre ces problèmes en générant directement du discours (audio et texte) à partir de la parole de l’utilisateur, sans passer par du texte intermédiaire.

Pour cela la voix de l'utilisateur et celle de l'IA sont modélisées séparément, ce qui permet des dialogues plus naturels et dynamiques. Le modèle prédit d'abord le texte, avant de générer les sons, améliorant ainsi la qualité linguistique et permettant une reconnaissance vocale et une synthèse vocale en temps réel. Avec une latence théorique de 160ms, Moshi est le premier modèle de langage vocal en full duplex et en temps réel.

Moshi, en détails

Moshi fonctionne en full duplex, permettant une gestion fluide des conversations sans latence perceptible. Le protocole WebSocket est fondamental pour ces interactions en temps réel. Contrairement aux requêtes HTTP, limitées par des réponses asynchrones, WebSocket permet une communication bidirectionnelle en continu, recevant et transmettant des flux vocaux simultanément. Cela garantit des échanges dynamiques sans interruption, ce qui est essentiel pour une expérience utilisateur naturelle.

Mimi est un codec audio neuronal basé sur une architecture d’autoencodeur. Il convertit l’audio en tokens acoustiques discrets, qui sont ensuite utilisés par la suite du modèle. À la différence des approches actuelles, Mimi distille l’information sémantique directement dans les premiers niveaux des tokens acoustiques. Cette fusion améliore considérablement la qualité de synthèse audio, garantissant des dialogues intelligibles et expressifs tout en minimisant la complexité du modèle.

Helium est un modèle de langage (LLM) composé de 7 milliards de paramètres, reposant sur l’architecture Transformer. Il a été pré-entraîné sur un immense ensemble de 2,1 milliards de tokens textuels (sources comme Wikipédia, Wikisource, Stack Exchange). Cela permet à Helium d'avoir une compréhension profonde des nuances du langage, ce qui en fait un outil puissant pour générer du texte fluide et cohérent.

Ce qui rend Moshi unique, c’est sa capacité à gérer trois flux de traitement distincts : l’un pour l’utilisateur, l’autre pour sa sortie audio, et un troisième pour son dialogue interne ("Inner Monologue"). Le modèle complet (Mimi, Helium et les 3 flux) est d’abord entraîné sur 7 millions d’heures d’audio (24 kHz mono stream). Enfin, pour donner la capacité à Moshi d’écouter et parler simultanément, le modèle est ensuite post-entraîné sur des flux multiples (ie: diarization).

Un premier fine-tuning est effectué sur le Fisher dataset, un ensemble de 2000 heures de conversations téléphoniques multi canal, afin de devenir un agent conversationnel complet.

Pour assurer une constance et richesse émotionnelle de la voix générée par Moshi, le modèle Helium a été fine-tuné sur 20 000 heures de conversations variées, enregistrées dans des conditions diverses avec des accents multiples. Cela garantit que Moshi ne copie pas la voix de l’utilisateur, mais garde une identité vocale propre et stable.

Enfin, un dernier ajustement est réalisé sur un dataset de 170 heures de conversations scriptées et naturelles de haute qualité, optimisant les compétences conversationnelles de Moshi.

dropdown illustration
Un modèle libre

Trois modèles sont publiés: le codec audio Mimi, ainsi que deux modèles de Moshi pré-entrainés avec voix générées artificiellement: une masculine baptisée Moshiko et une voix synthétique féminine appelée Moshika.

Tous ces modèles ont été publiés sous la licence CC BY 4.0. Cette dernière permet à d'autres de distribuer, fine-tuner, de modifier ces modèles, même à des fins commerciales, à condition qu'ils en attribuent le mérite de la création originale à Kyutai.

L’article de recherche complet peut également être lu pour tout comprendre de ce modèle et de son entraînement.

Tarifs
ModèleLangues supportéesQuantificationGPUPrix
MoshikoAnglais 👨FP8L4-1-24G0.93€/hour
MoshikoAnglais 👨FP8, BF16H100-1-80G3.40€/hour
MoshikaAnglais 👩FP8L4-1-24G0.93€/hour
MoshikaAnglais 👩FP8, BF16H100-1-80G3.40€/hour

Pour la tarification des autres modèles, voir cette page

Cheat Sheet

Déployez votre Moshi via cURL

Dans les commandes suivantes :

  • <API secret key> désigne la clé d’API qui vous permet d’utiliser l’API de Scaleway
  • <Scaleway Project ID> désigne l’identifiant de votre projet qui se trouve dans la console Scaleway
  • <Scaleway Deployment UUID> désigne l’identifiant du déploiement que vous allez créer
  • <IAM API key> la clé d’API qui vous permettra d'interagir avec Moshi si vous optez pour l’authentification

Déployez votre modèle (vous pouvez personnaliser le modèle, le GPU, etc.) :

bash

$ curl -X POST https://api.scaleway.com/inference/v1beta1/regions/fr-par/endpoints \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API secret key>" \
-d '{
"project_id": "<Scaleway Projet ID>'",
"name": "my-moshi-deployment",
"model_name": "kyutai/moshiko-0.1-8b:fp8",
"node_type": "L4",
"min_size": 1,
"max_size": 3,
"accept_eula": true,
"endpoints": [
{
"public": {}
}
]
}'

    Créez un endpoint public pour joindre votre modèle :

    bash

    $ curl -X POST https://api.scaleway.com/inference/v1beta1/regions/fr-par/deployments \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: <API secret key>" \
    -d '{
    "project_id": "<Scaleway Projet ID>'",
    "deployment_id": "<Scaleway Deployment UUID>",
    "endpoints": [
    {
    "disable_auth": false
    "public": {}
    }
    ]
    }'

      Si disable_auth est à true, vous n’aurez pas besoin de la clé d’API <IAM API key> pour la suite.

      Interagissez avec Moshi

      Après avoir déployé votre modèle Moshi et créé un endpoint pour le joindre, vous pouvez utiliser un de nos clients pour interagir avec.

      bash

      $ git clone https://github.com/scaleway/moshi-client-examples

        FAQ

        Kyutai vise à améliorer la base de connaissances et la factualité de Moshi avec le soutien de la communauté. Les futures mises à jour se concentreront sur le raffinement du modèle et son évolutivité pour prendre en charge des conversations plus complexes, plus longues et dans d’autres langues.

        Moshi a une fenêtre contextuelle limitée et les conversations supérieures à 5 minutes seront interrompues. Il dispose également d'une base de connaissances limitée de 2018 à 2023, ce qui peut entraîner des réponses répétitives ou incohérentes lors d'interactions prolongées.

        Vous trouverez ici guide complet sur le démarrage, y compris des détails sur le déploiement, la sécurité et la facturation. Si vous avez besoin d'aide supplémentaire, n'hésitez pas à nous contacter via la communauté slack #inference-beta.

        Moshi demande un peu d’expérience pour être maîtrisé. Il est possible que Moshi attende que vous ayez fini de parler avant de vous répondre. Si Moshi prend trop de temps, poussez le à la réponse en disant (en anglais) “go on”. Moshi comprendra que c’est à son tour.

        Afin d’évaluer une toxicité lors de la génération de contenu, le benchmark ALERT, de Simone Tedeschi, a été appliqué sur Moshi, le score de Moshi est de 83.05 (Falcon: 88.11, GPT-4: 99.18). Un score plus élevé représente un modèle moins “toxique”.