2 puntos por GN⁺ 2024-09-20 | 1 comentarios | Compartir por WhatsApp
  • LLaMA-Omni es un modelo de voz-lenguaje basado en Llama-3.1-8B-Instruct que recibe instrucciones por voz y genera simultáneamente respuestas en texto y voz
  • Su objetivo principal es la interacción de voz de baja latencia y alta calidad; según el README, la latencia puede bajar hasta 226 ms
  • El modelo fue entrenado en menos de 3 días con solo 4 GPU, y se ejecuta usando Llama-3.1-8B-Omni, Whisper-large-v3 y el vocoder HiFi-GAN basado en unidades
  • La demo de Gradio está estructurada para ejecutar por separado controller, web server y model worker, y debido a la inestabilidad de la reproducción de audio en streaming de Gradio, la reproducción automática no está activada
  • El código tiene licencia Apache-2.0, pero el modelo es solo para investigación académica; el uso comercial está prohibido y requiere consultar por una licencia comercial aparte

Qué hace LLaMA-Omni

  • LLaMA-Omni es un modelo de voz-lenguaje basado en Llama-3.1-8B-Instruct
  • Recibe instrucciones por voz como entrada y genera al mismo tiempo una respuesta en texto y una respuesta en voz
  • Busca ofrecer interacción por voz de baja latencia y respuestas de alta calidad; según los destacados del README, la latencia mínima es de 226 ms
  • El artículo relacionado está publicado en arXiv:2409.06666

Modelos y dataset publicados

Actualizaciones recientes

  • En mayo de 2025, LLaMA-Omni 2 fue aceptado en la conferencia principal de ACL 2025
  • En abril de 2025, se publicó LLaMA-Omni2
    • Es una serie de modelos de voz-lenguaje que va de 0.5B a 32B parámetros
    • Mejora la calidad de las respuestas y la calidad de la generación de voz
  • En enero de 2025, LLaMA-Omni fue aceptado en ICLR 2025

Instalación y flujo de ejecución

  • La instalación consiste en clonar el repositorio y luego instalar los paquetes en un entorno conda de Python 3.10
    • Después de instalar pip==24.0, se ejecuta pip install -e .
  • También hay que instalar como dependencias adicionales fairseq y flash-attn
  • El inicio rápido requiere tres recursos
    • Descargar el modelo Llama-3.1-8B-Omni
    • Descargar el modelo Whisper-large-v3
    • Descargar el vocoder HiFi-GAN basado en unidades y config.json

Demo de Gradio e inferencia local

  • La demo de Gradio está compuesta por tres procesos
    • controller: omni_speech.serve.controller
    • Gradio web server: omni_speech.serve.gradio_web_server
    • model worker: omni_speech.serve.model_worker
  • Después de ejecutar la demo, se puede interactuar con LLaMA-3.1-8B-Omni en localhost:8000
  • Dado que la reproducción de audio en streaming de Gradio es inestable, solo está implementada la síntesis de audio en streaming y la reproducción automática no está activada
  • La inferencia local se ejecuta organizando el archivo de instrucciones de voz según el formato de omni_speech/infer/examples y luego corriendo bash omni_speech/infer/run.sh omni_speech/infer/examples

Licencia y restricciones de uso

  • El código se publica bajo la licencia Apache-2.0
  • El modelo solo puede usarse con fines de investigación académica y el uso comercial está prohibido
  • En entornos académicos se permite su uso, modificación y distribución, pero es necesario citar el artículo original
  • Para consultas sobre uso comercial u obtener una licencia comercial, hay que contactar a fengyang@ict.ac.cn

Proyectos base y cita

  • La base de código se apoya en LLaVA
  • Parte del código relacionado con el codificador de voz y el adaptador de voz fue tomado de SLAM-LLM
  • Si resulta útil para la investigación, se debe citar el artículo LLaMA-Omni: Seamless Speech Interaction with Large Language Models
  • Las consultas pueden hacerse mediante un issue en GitHub o a fangqingkai21b@ict.ac.cn

1 comentarios

 
GN⁺ 2024-09-20
Opiniones de Hacker News
  • ¿Este modelo también puede hacer sonidos que no se pueden expresar con texto? Por ejemplo, una solicitud como “haz el sonido que hace una gallina”.

    • Si puede generar sonidos asociados con notaciones de palabras no habladas, no parece haber una razón especial para que se bloquee con las onomatopeyas.
    • ¿También puede entender esos sonidos? Me pregunto si puede distinguir si la pronunciación o la entonación de una palabra es correcta o incorrecta.
    • Casi seguro que no. Suena como un vocoder anticuado hecho solo para generar habla humana.
    • ¿Te refieres a sonidos como “cloc cloc”?
      Pero ¿podría hacer tanto decir la palabra “cloc cloc” como producir el sonido real de cacareo?
  • No tengo claro qué ventajas o potencial tiene un modelo así frente a un enfoque de agregar reconocimiento de voz/síntesis de voz a un modelo puramente de texto.
    ¿La clave es que, cuando el modelo se vuelva más sofisticado, pueda interpretar o generar correctamente cosas como entonación, ritmo y emoción, que se pierden en la síntesis de voz?

    • En el reconocimiento de voz/síntesis de voz hay mucha pérdida de información y muchas conjeturas.
      Un modelo de reconocimiento de voz puede entender mal las palabras, pero un LLM de audio podría entender las palabras reales gracias a un contexto más amplio. Un modelo de síntesis de voz tiene que adivinar la entonación y puede equivocarse por completo, pero un LLM de audio puede aprender de forma natural con qué tono debería hablar. Por ejemplo, si es una interrupción, podría usar un tono más alto.
      Incluso solo para interrumpir, los sistemas de reconocimiento/síntesis de voz suelen depender de detección de actividad de voz y heurísticas para decidir cuándo hablar, por lo que muchas veces siguen la regla de hablar solo después de que el usuario deja de hablar. Un LLM de audio también puede aprender conversaciones naturales, cómo no acaparar demasiado tiempo de conversación y cómo hablar con varias personas a la vez.
      Un LLM de audio puede generar música o sonidos, o decirte qué canción estás tarareando. Hay muchas posibilidades nuevas.
      Dicho eso, digo “puede aprender” porque se necesitan buenos datos de entrenamiento. Según entiendo, la mayoría de estos modelos actuales se entrenan convirtiendo datasets de texto general a síntesis de voz, así que en realidad no son mejores que los sistemas comunes de reconocimiento/síntesis de voz. Sirven para demostrar la arquitectura, pero no muestran toda su capacidad.
    • Personalmente me entusiasma mucho usar modelos de voz como el advanced voice mode de OpenAI para aprender idiomas.
      La capacidad de hablar rápido o lento ya es algo que los sistemas tradicionales de síntesis de voz no podían hacer. En teoría, también podría decirme si mi pronunciación es correcta, repetir lo que pronuncié mal y luego mostrarme la pronunciación correcta para corregirme.
      Todavía no he visto pruebas serias de qué tan bien hace esto realmente el advanced voice mode de OpenAI, así que no sé, pero quiero probarlo. Si otros modelos de voz llegan a este nivel, creo que serían increíbles como herramientas para aprender idiomas.
    • Este tema ya se ha tratado mucho; por ejemplo, se puede ver el paper -O de OpenAI.
      Uno de los grandes factores es la latencia causada por el batching. Es difícil interrumpir correctamente al agente, así que la conversación real se vuelve más incómoda. Y sí, lo multimodal entiende mejor. Pero no he visto análisis sobre reconocimiento de emociones, y me pregunto si alguien ha visto alguno sobre esta capacidad de GPT-O.
    • Básicamente, hay pérdida de información en la conversión de audio a texto. A veces no importa, pero a veces puede mejorar significativamente la calidad de la salida.
      Además, puede haber ventajas secundarias como menor latencia de respuesta, mejor separación de hablantes y mejor reacción a pausas durante la conversación.
    • Si solo escribes “Really”, nadie puede saber la entonación.
      Aunque escribas “Really?” o “Really!”, sigue habiendo margen de interpretación. Para que una interfaz de voz tenga éxito de verdad, necesita un momento como cuando la búsqueda antes de Google era un desastre y luego cambió con Google; si la clave de eso es interpretar y generar entonación, ritmo y emoción, entonces crear modelos así tiene bastante sentido.
  • ¿Alguna de las herramientas para ejecutar modelos como Ollama, LM Studio o llama.cpp soporta esto?

  • Entonces, ¿no es una arquitectura de reconocimiento de voz → LLM → síntesis de voz? Si le grito sonidos de Chewbacca como entrada, ¿el modelo lo reconocerá como una entrada sin sentido, o interpretará cualquier palabra al azar como un mal reconocimiento de voz?

    • Por arquitectura, no es eso, pero probablemente no pueda reconocerlo como una entrada sin sentido. Según el paper:

      we construct a dataset named InstructS2S-200K by rewriting existing text instruction data and performing speech synthesis
      Solo se entrenó con preguntas leídas mediante síntesis de voz, y nunca vio ni oyó sonidos sin sentido. Probablemente alucine que hiciste alguna pregunta y genere una respuesta, en vez de preguntar “¿estás bien?”. No hay muchos datasets de audio con voces reales, ni existe una versión en audio de StackOverflow que se pueda scrapear.

    • Antes solía jugar con ese tipo de cosas. Ponía Google Translate en un idioma que no conocía, como chino, hacía sonidos al azar y salían frases en inglés coherentes pero completamente locas.
      Sentía que funcionaba especialmente bien con idiomas tonales.
  • La voz de síntesis del clip de demo suena sorprendentemente parecida a Ellen McLain, la actriz de voz de Valve.
    https://en.m.wikipedia.org/wiki/Ellen_McLain

    • Suena como si estuviera entrenado con el dataset LJ Speech. Es uno de los mejores datasets y se usa muchísimo.
  • La velocidad se ve bastante buena. Hace poco probé chat de voz local con LMStudio + AnythingLLM y todavía era un poco más lento de lo que quería; la voz de PiperTTS era mejor que esta.

  • No está mal para 3 días de entrenamiento. La calidad de la salida de voz todavía necesita pulirse más, pero es interesante ver qué cambiaría con más entrenamiento.

  • Ojalá hubiera código de entrenamiento o fine-tuning. Para uso comercial, el fine-tuning de voces parece un requisito clave.

  • ¿Soy el único al que le da mucha menos confianza cuando el README del repo de GitHub tiene ese tonto gráfico de evolución de estrellas?

    • Eso es un poco raro. La gente puede estar orgullosa de su trabajo.
  • ¿Hay alguna demo que muestre el rendimiento?