2 pontos por GN⁺ 2024-09-20 | 1 comentários | Compartilhar no WhatsApp
  • 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-v3 e 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

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, execute pip install -e .
  • 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

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
  • Após iniciar a demo, é possível interagir com LLaMA-3.1-8B-Omni em localhost: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/examples e rodar bash 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

 
GN⁺ 2024-09-20
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”

    • Se ele consegue gerar sons associados a representações não verbais por escrito, não parece haver um motivo especial para falhar justamente com onomatopeias
    • Será que ele também consegue entender esses sons? Fico curioso se consegue distinguir se a pronúncia ou a entonação de uma palavra está certa ou errada
    • Quase certamente não. Parece um vocoder antigo feito só para gerar fala humana
    • Você quer dizer falar algo como “cocoricó”?
      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?

    • Em reconhecimento de fala/síntese de fala há muita perda de informação e adivinhação
      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
    • Pessoalmente, estou muito animado com o uso de modelos de voz como o advanced voice mode da OpenAI para aprendizado de idiomas
      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
    • Esse tema já foi bastante discutido, por exemplo no paper -O da OpenAI
      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
    • Essencialmente há perda de informação na conversão de áudio para texto. Às vezes isso não importa, mas às vezes pode elevar de forma significativa a qualidade da saída
      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
    • Se você escrever apenas “Really”, ninguém sabe qual era a entonação
      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?

    • Em termos de arquitetura, não, mas provavelmente ele também não vai conseguir reconhecer isso como entrada sem sentido. Segundo o paper,

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      Ele foi treinado só com perguntas lidas por síntese de fala e nunca viu nem ouviu sons sem sentido. Em vez de perguntar “você está bem?”, é mais provável que alucine que você fez alguma pergunta e invente uma resposta. Não há muitos datasets reais de áudio de voz, e não existe uma versão em áudio do StackOverflow para sair raspando por aí

    • Eu costumava brincar com algo assim. Colocava o Google Translate em algum idioma que eu não conhecia, como chinês, e fazia sons aproximados; saíam frases em inglês consistentes, mas completamente malucas
      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

    • Parece que foi treinado com o dataset LJ Speech. É um dos melhores datasets e é muito usado
  • 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?

    • Isso é meio estranho. As pessoas podem ter orgulho do próprio trabalho
  • Existe alguma demo mostrando o desempenho?