- LLaMA-Omni est un modèle parole-langage basé sur Llama-3.1-8B-Instruct, qui prend des instructions vocales en entrée et génère simultanément une réponse texte et une réponse vocale
- Son objectif principal est une interaction vocale à faible latence et de haute qualité ; d’après le README, la latence peut descendre jusqu’à 226 ms
- Le modèle a été entraîné en moins de 3 jours avec seulement 4 GPU, et fonctionne avec
Llama-3.1-8B-Omni,Whisper-large-v3et le vocodeur HiFi-GAN basé sur des unités - La démo Gradio repose sur l’exécution séparée d’un controller, d’un web server et d’un model worker ; en raison de l’instabilité de la lecture audio en streaming dans Gradio, la lecture automatique n’est pas activée
- Le code est sous Apache-2.0, mais le modèle est réservé à la recherche académique ; l’usage commercial est interdit et nécessite une demande de licence commerciale distincte
Ce que fait LLaMA-Omni
- LLaMA-Omni est un modèle parole-langage basé sur Llama-3.1-8B-Instruct
- Il prend des instructions vocales en entrée et génère simultanément une réponse texte et une réponse vocale
- Il vise une interaction vocale à faible latence et des réponses de haute qualité ; selon les points forts du README, la latence descend jusqu’à 226 ms
- L’article associé est disponible sur arXiv:2409.06666
Modèles et jeu de données publiés
- Le modèle est disponible sur Hugging Face, ModelScope, Wisemodel et Replicate
- Le jeu de données est publié sous la forme de Multiturn-Speech-Conversations
- Dans la mise à jour de mai 2025, une version améliorée de
InstructS2S-200Ka été publiée, étendue aux conversations multi-tours, avec une plus grande diversité de timbres vocaux en entrée
Mises à jour récentes
- En mai 2025, LLaMA-Omni 2 a été retenu pour la conférence principale de l’ACL 2025
- En avril 2025, LLaMA-Omni2 a été publié
- Il s’agit d’une série de modèles parole-langage allant de 0.5B à 32B paramètres
- Il améliore la qualité des réponses et de la génération vocale
- En janvier 2025, LLaMA-Omni a été retenu à l’ICLR 2025
Installation et déroulement de l’exécution
- L’installation consiste à cloner le dépôt, puis à installer les paquets dans un environnement conda Python 3.10
- Installer
pip==24.0, puis exécuterpip install -e .
- Installer
- Des dépendances supplémentaires doivent être installées : fairseq et flash-attn
- Le démarrage rapide nécessite trois éléments
- télécharger le modèle
Llama-3.1-8B-Omni - télécharger le modèle
Whisper-large-v3 - télécharger le vocodeur HiFi-GAN basé sur des unités et le fichier
config.json
- télécharger le modèle
Démo Gradio et inférence locale
- La démo Gradio se compose de trois processus
- controller:
omni_speech.serve.controller - Gradio web server:
omni_speech.serve.gradio_web_server - model worker:
omni_speech.serve.model_worker
- controller:
- Une fois la démo lancée, il est possible d’interagir avec
LLaMA-3.1-8B-Omnisurlocalhost:8000 - La lecture audio en streaming de Gradio étant instable, seule la synthèse audio en streaming est implémentée, et la lecture automatique n’est pas activée
- Pour l’inférence locale, il faut préparer le fichier d’instructions vocales selon le format de
omni_speech/infer/examples, puis exécuterbash omni_speech/infer/run.sh omni_speech/infer/examples
Licence et restrictions d’utilisation
- Le code est publié sous Apache-2.0 License
- Le modèle ne peut être utilisé qu’à des fins de recherche académique et l’usage commercial est interdit
- Dans un cadre académique, l’utilisation, la modification et la distribution sont autorisées, mais la citation de l’article d’origine est requise
- Pour toute demande d’usage commercial ou d’obtention d’une licence commerciale, il faut contacter
fengyang@ict.ac.cn
Projets de base et citation
- La base de code s’appuie sur LLaVA
- Une partie du code liée à l’encodeur vocal et à l’adaptateur vocal est empruntée à SLAM-LLM
- Si ces travaux sont utiles à votre recherche, vous devez citer l’article
LLaMA-Omni: Seamless Speech Interaction with Large Language Models - Pour toute question, vous pouvez utiliser une GitHub issue ou contacter
fangqingkai21b@ict.ac.cn
1 commentaires
Commentaires sur Hacker News
Ce modèle peut-il aussi produire des sons impossibles à exprimer en texte ? Par exemple une demande comme « fais le bruit d’une poule ».
Mais est-ce qu’il pourrait à la fois prononcer le mot « cot-cot-codac » et produire le véritable caquètement ?
Je ne vois pas bien quels avantages ou quel potentiel ce genre de modèle a par rapport à une approche consistant à ajouter de la reconnaissance vocale/synthèse vocale à un modèle purement textuel.
Si les modèles deviennent plus sophistiqués, l’idée clé est-elle d’interpréter ou de produire correctement l’intonation, le rythme, les émotions, etc., qui se perdent dans la synthèse vocale ?
Un modèle de reconnaissance vocale peut mal reconnaître des mots, alors qu’un LLM audio pourrait comprendre les vrais mots grâce à un contexte plus large. Un modèle de synthèse vocale doit deviner l’intonation et peut se tromper complètement, alors qu’un LLM audio peut apprendre naturellement quel ton employer. Par exemple, s’il s’agit d’une interruption, il peut utiliser un ton plus aigu.
Rien que pour les interruptions, les systèmes de reconnaissance/synthèse vocale s’appuient généralement sur la détection d’activité vocale et des heuristiques pour décider quand parler ; ils suivent donc souvent une règle consistant à ne parler qu’après que l’utilisateur a cessé de parler. Un LLM audio pourrait apprendre une conversation naturelle, à ne pas monopoliser le temps de parole, et à parler avec plusieurs personnes.
Un LLM audio pourrait aussi créer de la musique ou des sons, ou dire quelle chanson on fredonne. Il y a beaucoup de nouvelles possibilités.
Cela dit, si je dis « pourrait apprendre », c’est parce qu’il faut de bonnes données d’entraînement. À ma connaissance, la plupart de ces modèles sont actuellement entraînés en convertissant des jeux de données textuels ordinaires en synthèse vocale ; en pratique, ils ne valent donc pas mieux que des systèmes classiques de reconnaissance/synthèse vocale. C’est bien pour valider l’architecture, mais cela ne montre pas toute son étendue de capacités.
Le simple fait de pouvoir parler plus vite ou plus lentement est déjà quelque chose que les systèmes traditionnels de synthèse vocale ne savaient pas faire. En théorie, il pourrait aussi me dire si ma prononciation est correcte, répéter ce que j’ai mal prononcé puis me faire entendre la bonne prononciation pour me corriger.
Je n’ai pas encore vu de tests sérieux montrant dans quelle mesure l’advanced voice mode d’OpenAI le fait réellement, donc je ne sais pas, mais j’ai envie de l’essayer moi-même. Si d’autres modèles vocaux atteignent ce niveau, ce serait énorme comme outil d’apprentissage des langues.
L’un des grands facteurs est la latence due au batching. Il est difficile d’interrompre correctement l’agent, ce qui rend les vraies conversations plus maladroites. Et oui, le multimodal comprend mieux. En revanche, je n’ai pas vu d’analyse sur la reconnaissance des émotions ; je me demande si quelqu’un a vu une analyse de cette capacité de GPT-O.
Il peut aussi y avoir d’autres avantages annexes, comme une meilleure latence des réponses, une meilleure diarisation des locuteurs, ou une meilleure réaction aux pauses pendant une conversation.
Même en écrivant « Really? » ou « Really! », il reste une marge d’interprétation. Pour que les interfaces vocales réussissent vraiment, il leur faudra un moment comparable au passage de la recherche pré-Google, médiocre, à Google ; et si le cœur de ce moment consiste à interpréter et générer l’intonation, le rythme et les émotions, alors construire ce genre de modèle a pas mal de sens.
Parmi les outils d’exécution de modèles comme Ollama, LM Studio ou llama.cpp, y en a-t-il qui prennent ça en charge ?
Donc ce n’est pas une architecture reconnaissance vocale → LLM → synthèse vocale ? Si je hurle comme Chewbacca en entrée, le modèle va-t-il reconnaître que l’entrée n’a aucun sens, ou va-t-il l’interpréter comme des mots quelconques, comme une mauvaise reconnaissance vocale ?
J’avais l’impression que ça marchait particulièrement bien avec les langues tonales.
La voix de synthèse vocale dans les clips de démo ressemble étonnamment à Ellen McLain, la comédienne de doublage de Valve.
https://en.m.wikipedia.org/wiki/Ellen_McLain
La vitesse semble assez bonne. Récemment, j’ai essayé du chat vocal local avec LMStudio + AnythingLLM ; c’était encore un peu plus lent que ce que je voudrais, et les voix PiperTTS étaient meilleures que ça.
Pas mal pour 3 jours d’entraînement. La qualité de la sortie vocale doit encore être peaufinée, mais il sera intéressant de voir ce que donnera un entraînement plus long.
J’aimerais qu’il y ait du code d’entraînement ou de fine-tuning. Pour un usage commercial, le fine-tuning de voix semble être une exigence clé.
Suis-je le seul à trouver qu’un dépôt GitHub perd beaucoup en crédibilité quand son README contient ce stupide graphique d’évolution des étoiles ?
Y a-t-il une démo qui montre les performances ?