LLaMA-Omni - Interação de voz fluida com LLMs
(github.com/ictnlp)- LLaMA-Omni é um modelo de fala-linguagem baseado no Llama-3.1-8B-Instruct que recebe instruções por voz e gera simultaneamente respostas em texto e voz
- O objetivo principal é interação por voz de baixa latência e alta qualidade, e segundo o README a latência pode cair para apenas 226 ms
- O modelo foi treinado em menos de 3 dias usando apenas 4 GPUs e roda com
Llama-3.1-8B-Omni,Whisper-large-v3e o vocoder HiFi-GAN baseado em unidades - A demo em Gradio é estruturada para executar separadamente controller, web server e model worker, e por causa da instabilidade na reprodução de áudio em streaming do Gradio, a reprodução automática não é ativada
- O código é Apache-2.0, mas o modelo é exclusivo para pesquisa acadêmica; uso comercial é proibido e exige consulta para uma licença comercial separada
O que o LLaMA-Omni faz
- LLaMA-Omni é um modelo de fala-linguagem baseado em Llama-3.1-8B-Instruct
- Ele recebe instruções por voz como entrada e gera ao mesmo tempo resposta em texto e resposta em voz
- Seu objetivo é oferecer interação por voz de baixa latência e respostas de alta qualidade, e a latência mínima destacada no README é de 226 ms
- O artigo relacionado está disponível em arXiv:2409.06666
Modelos e dataset públicos
- O modelo está disponível em Hugging Face, ModelScope, Wisemodel e Replicate
- O dataset está disponível como Multiturn-Speech-Conversations
- Na atualização de maio de 2025, foi lançado o
InstructS2S-200Kmelhorado, expandido para conversas multi-turno, com maior diversidade de timbres na voz de entrada
Atualizações recentes
- Em maio de 2025, o LLaMA-Omni 2 foi aceito na conferência principal da ACL 2025
- Em abril de 2025, foi lançado o LLaMA-Omni2
- Trata-se de uma série de modelos de linguagem de fala com parâmetros de 0.5B a 32B
- Melhora a qualidade das respostas e a qualidade da geração de voz
- Em janeiro de 2025, o LLaMA-Omni foi aceito na ICLR 2025
Instalação e fluxo de execução
- A instalação é feita clonando o repositório e instalando os pacotes em um ambiente conda com Python 3.10
- Depois de instalar
pip==24.0, executepip install -e .
- Depois de instalar
- Também é necessário instalar fairseq e flash-attn como dependências adicionais
- O início rápido exige três itens
- download do modelo
Llama-3.1-8B-Omni - download do modelo
Whisper-large-v3 - download do vocoder HiFi-GAN baseado em unidades e do
config.json
- download do modelo
Demo em Gradio e inferência local
- A demo em Gradio é composta por três processos
- controller:
omni_speech.serve.controller - Gradio web server:
omni_speech.serve.gradio_web_server - model worker:
omni_speech.serve.model_worker
- controller:
- Após iniciar a demo, é possível interagir com
LLaMA-3.1-8B-Omniemlocalhost:8000 - Como a reprodução de áudio em streaming do Gradio é instável, somente a síntese de áudio em streaming foi implementada, e a reprodução automática não é ativada
- A inferência local é executada após organizar os arquivos de instrução por voz no formato de
omni_speech/infer/examplese rodarbash omni_speech/infer/run.sh omni_speech/infer/examples
Licença e restrições de uso
- O código é distribuído sob a Apache-2.0 License
- O modelo só pode ser usado para fins de pesquisa acadêmica e o uso comercial é proibido
- Em ambiente acadêmico, uso, modificação e distribuição são permitidos, mas é necessário citar o artigo original
- Para consultas sobre uso comercial ou obtenção de licença comercial, entre em contato com
fengyang@ict.ac.cn
Projeto-base e citação
- A base de código é construída sobre LLaVA
- Parte do código relacionado ao encoder de fala e ao adaptador de fala foi emprestada de SLAM-LLM
- Se for útil para a pesquisa, deve-se citar o artigo
LLaMA-Omni: Seamless Speech Interaction with Large Language Models - Dúvidas podem ser enviadas por GitHub issue ou para
fangqingkai21b@ict.ac.cn
1 comentários
Comentários do Hacker News
Será que esse modelo consegue produzir sons que não podem ser expressos em texto? Por exemplo, um pedido como “faça o som que uma galinha faz”
Mas será que ele consegue tanto dizer a palavra “cocoricó” quanto produzir o som real de cacarejo?
Não entendo muito bem que vantagens ou potencial esse tipo de modelo teria em relação a simplesmente acoplar reconhecimento de fala/síntese de fala a um modelo puramente textual
A questão principal, conforme o modelo fica mais sofisticado, seria interpretar ou gerar corretamente coisas como entonação, ritmo e emoção, que se perdem na síntese de fala?
Um modelo de reconhecimento de fala pode ouvir uma palavra errada, mas um LLM de áudio talvez consiga entender a palavra real graças ao contexto mais amplo. Um modelo de síntese de fala precisa adivinhar a entonação e pode errar completamente, mas um LLM de áudio pode aprender naturalmente qual tom usar ao falar. Por exemplo, pode usar um tom mais alto ao interromper alguém
Só a questão da interrupção já é importante: sistemas de reconhecimento/síntese de fala normalmente dependem de detecção de atividade de voz e heurísticas para decidir quando falar, então muitas vezes só respondem depois que o usuário para de falar. Um LLM de áudio pode aprender conversação natural, como não monopolizar demais o tempo de fala e como falar junto com várias pessoas
Um LLM de áudio também pode criar música ou sons, ou dizer que música você está cantarolando. Há muitas possibilidades novas
Dito isso, eu disse “pode aprender” porque isso exige bons dados de treinamento. Pelo que sei, a maioria desses modelos hoje foi treinada convertendo datasets de texto comuns em fala sintetizada, então na prática não são melhores do que sistemas normais de reconhecimento/síntese de fala. É bom para provar a arquitetura, mas não mostra toda a capacidade
A capacidade de já falar rápido ou devagar é algo que sistemas tradicionais de síntese de fala não faziam bem. Em teoria, ele também poderia me dizer se minha pronúncia está correta, repetir o que pronunciei errado e depois mostrar a pronúncia certa para me corrigir
Ainda não vi testes de verdade mostrando o quão bem o advanced voice mode da OpenAI faz isso, então não sei, mas quero muito experimentar. Se outros modelos de voz também chegarem a esse nível, isso pode ser enorme como ferramenta de aprendizado de idiomas
Um dos grandes fatores é a latência causada por batching. Fica difícil interromper o agente de forma adequada, o que torna conversas reais mais estranhas. E sim, multimodal entende melhor. Só nunca vi uma análise sobre reconhecimento de emoções e fico curioso se alguém viu alguma análise dessa capacidade no GPT-O
Além disso, pode haver vantagens secundárias como melhora na latência das respostas, melhor separação de falantes e reação melhor a pausas durante a conversa
Mesmo que escreva “Really?” ou “Really!”, ainda sobra margem para interpretação. Para uma interface de voz realmente dar certo, talvez seja preciso um momento como a transição de mecanismos de busca ruins pré-Google para o Google, e se a chave disso for interpretar e gerar entonação, ritmo e emoção, então faz bastante sentido construir esse tipo de modelo
Entre ferramentas para rodar modelos como Ollama, LM Studio e llama.cpp, existe alguma que suporte isso?
Então quer dizer que não é uma arquitetura de reconhecimento de fala → LLM → síntese de fala? Se eu gritar um som de Chewbacca como entrada, o modelo vai tratar isso como uma entrada sem sentido ou vai interpretar como alguma palavra aleatória, como um reconhecimento de fala ruim?
Línguas tonais pareciam funcionar especialmente bem para isso
A voz sintetizada nos clipes de demonstração soa surpreendentemente parecida com Ellen McLain, a dubladora da Valve
https://en.m.wikipedia.org/wiki/Ellen_McLain
A velocidade parece bem boa. Recentemente testei chat de voz local com LMStudio + AnythingLLM, e ainda estava um pouco mais lento do que eu queria, mas a voz do PiperTTS era melhor do que esta
Para apenas 3 dias de treinamento, não está ruim. A qualidade da saída de voz ainda precisa de mais refinamento, mas é interessante pensar no que mudaria com mais treinamento
Eu gostaria que houvesse código de treinamento ou fine-tuning. Para uso comercial, fine-tuning de voz parece ser um requisito essencial
Sou só eu ou quando um README de repositório no GitHub tem aquele gráfico idiota de evolução de estrelas, ele passa muito menos confiança?
Existe alguma demo mostrando o desempenho?