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
Opiniones en Hacker News
Primera opinión
Segunda opinión
Tercera opinión
Cuarta opinión
Quinta opinión
Sexta opinión
Séptima opinión
Octava opinión
Novena opinión
Décima opinión