1 puntos por GN⁺ 2024-09-20 | 1 comentarios | Compartir por WhatsApp

Moshi: modelo basado en voz y texto para conversaciones en tiempo real

Introducción a Moshi

  • Moshi es un modelo basado en voz y texto para conversaciones en tiempo real y un framework de conversación por voz bidireccional
  • Usa Mimi, un códec neuronal de audio en streaming de última generación
  • Mimi convierte audio de 24 kHz a 12.5 Hz y lo procesa en streaming con una latencia de 80 ms, manteniendo un ancho de banda de 1.1 kbps
  • Supera a códecs no orientados a streaming existentes como SpeechTokenizer (50Hz, 4kbps) y SemantiCodec (50Hz, 1.3kbps)

Cómo funciona Moshi

  • Moshi modela dos flujos de audio: uno de Moshi y otro del usuario
  • Durante la inferencia, el flujo del usuario se toma de la entrada de audio, y el flujo de Moshi se muestrea desde la salida del modelo
  • Junto con estos dos flujos de audio, Moshi predice los tokens de texto correspondientes a su propia voz
  • Un pequeño Depth Transformer modela las dependencias entre codebooks en un paso temporal dado, y un gran Temporal Transformer de 7B parámetros modela las dependencias temporales
  • Moshi logra teóricamente una latencia de 160 ms y, en la práctica, mantiene una latencia inferior a 200 ms en una GPU L4

Características de Mimi

  • Mimi se basa en códecs neuronales de audio anteriores como SoundStream y EnCodec, y añade Transformer al encoder y al decoder
  • Mimi ajusta el stride para acercarlo más a la tasa promedio de cuadros de los tokens de texto (~3-4 Hz)
  • Mimi usa una pérdida por destilación que alinea los tokens del primer codebook con las representaciones auto-supervisadas de WavLM
  • Mimi muestra grandes mejoras en calidad subjetiva a bajas tasas de bits usando solo pérdida de entrenamiento adversarial y feature matching

Estructura del repositorio

  • Este repositorio incluye tres versiones del stack de inferencia de Moshi
    • La versión en Python que usa PyTorch está en el directorio moshi/
    • La versión en Python que usa MLX para Macs serie M está en el directorio moshi_mlx/
    • La versión en Rust usada en producción está en el directorio rust/
  • El código de la demo en vivo se ofrece en el directorio client/

Modelos

  • Se publican tres modelos
    • El códec de voz Mimi
    • Moshi ajustado finamente con voz sintética masculina (Moshiko)
    • Moshi ajustado finamente con voz sintética femenina (Moshika)
  • Cada modelo está disponible en un repositorio de HuggingFace
  • Todos los modelos se publican bajo licencia CC-BY 4.0

Requisitos

  • Se requiere como mínimo Python 3.10 y se recomienda Python 3.12
  • Consulta cada directorio de backend para requisitos específicos
  • Se proporcionan comandos de instalación para clientes de PyTorch y MLX

Python (PyTorch)

  • La API basada en PyTorch está en el directorio moshi
  • Ofrece el tokenizador de audio en streaming (mimi) y el modelo de lenguaje (moshi)
  • Para ejecutarlo en modo interactivo, se debe iniciar el servidor

Python (MLX) para macOS

  • Después de instalar moshi_mlx, se puede ejecutar inferencia local
  • La interfaz de línea de comandos es básica y no tiene cancelación de eco

Rust

  • Para ejecutar el servidor de inferencia en Rust, usa los comandos desde el directorio rust
  • En macOS se puede usar --features metal en lugar de --features cuda

Cliente

  • Se recomienda usar la interfaz web, que ofrece funciones adicionales de cancelación de eco
  • También se proporciona una interfaz de línea de comandos

Desarrollo

  • Puedes clonar el repositorio para instalarlo y desarrollar sobre él

FAQ

  • Revisa la sección de preguntas frecuentes antes de abrir un issue

Licencia

  • La parte en Python usa licencia MIT y el backend en Rust usa licencia Apache
  • El código del cliente web usa licencia MIT
  • Los pesos del modelo usan licencia CC-BY 4.0

Cita

  • Si usas Mimi o Moshi, cita el paper

Resumen de GN⁺

  • Moshi es un innovador modelo de voz y texto para conversaciones en tiempo real que destaca por su baja latencia y alta calidad
  • El códec Mimi es más eficiente que los códecs existentes y maximiza el rendimiento mediante Transformer
  • Puede usarse en múltiples plataformas y ofrece varias versiones, como PyTorch, MLX y Rust
  • Es muy útil para desarrolladores de aplicaciones de conversación en tiempo real, especialmente cuando la baja latencia es clave
  • Otros proyectos con funciones similares incluyen WaveNet de Google y Jukebox de OpenAI

1 comentarios

 
GN⁺ 2024-09-20
Opiniones en Hacker News
  • Primera opinión

    • La latencia es muy baja, lo que es un gran logro para un modelo de código abierto
    • La calidad de las respuestas es inferior en comparación con los LLM muy destacados recientes
    • Hace recordar a los LLM de 2019
    • En el aspecto de audio lo hizo suficientemente bien, pero necesita enfocarse más en la calidad de las respuestas
  • Segunda opinión

    • Encontró una demo interesante de hace unos meses en YouTube
    • Está seguro de que ahora habrá mejorado
  • Tercera opinión

    • Está desarrollando una solución en tiempo real de voz -> LLM -> salida de voz
    • Lo más interesante son los códecs de audio neuronal en streaming
    • Desde la perspectiva del producto, hace falta una etapa de llamadas a herramientas/funciones en lugar de conectarlo directamente al LLM
    • El desarrollo de tincans terminó, pero hay mucho potencial de avance en esta dirección
  • Cuarta opinión

    • Moshi tiene licencia CC-BY
    • Hay un modelo similar reciente de 7b lanzado bajo Apache v2
  • Quinta opinión

    • Se pregunta si hay una manera práctica de ofrecer una interfaz TTS en la terminal a-shell del iPad
  • Sexta opinión

    • Últimamente ha habido muchos avances en el campo de los LM con soporte de voz
    • Entre los proyectos relacionados están LLaMA-Omni y mini-omni
  • Séptima opinión

    • El servidor de inferencia fue escrito en Rust y usa el crate Candle de huggingface
    • Uno de los autores de Moshi es también uno de los principales autores de Candle
    • Está construyendo un stack de inferencia basado en Candle
  • Octava opinión

    • Según su experiencia, responde de inmediato, pero la respuesta a la pregunta real llega después
    • A veces puede caer en un bucle
  • Novena opinión

    • La latencia es muy baja, de alrededor de 200 ms
    • Usa un modelo transformer de 7B, así que no es extremadamente inteligente
    • Si se usa un modelo más grande, la latencia podría aumentar
    • En la arquitectura del sistema hace falta una forma de ofrecer respuestas intermedias
  • Décima opinión

    • La velocidad de respuesta impresiona, pero la calidad de las respuestas no
    • Comparte un ejemplo de conversación con Moshi
    • Dio una respuesta incorrecta de "2019"
    • Dio información incorrecta sobre COVID-19