Saltar al contenido principal

Integración de LongCat AudioDiT

Libre WebUI incluye un plugin JSON y un adaptador HTTP local para los puntos de control oficiales meituan-longcat/LongCat-AudioDiT-1B y meituan-longcat/LongCat-AudioDiT-3.5B. El proyecto original proporciona una API de Python en vez de un servidor HTTP, por lo que el adaptador de examples/longcat-audiodit-server ofrece endpoints de descubrimiento de modelos, voz mediante JSON y clonación de voz multiparte.

AudioDiT devuelve archivos WAV mono completos a 24 kHz en lugar de una respuesta de audio en streaming. Por ello, Libre WebUI divide las respuestas largas en los límites de frases y oraciones, genera de antemano un conjunto acotado de lotes y programa el audio descodificado en orden para reproducirlo sin interrupciones.

Requisitos

Una GPU NVIDIA CUDA es el objetivo práctico. Empieza por el punto de control 1B; el de 3.5B necesita mucha más VRAM y tarda más en cargarse. La CPU sirve para experimentar, pero probablemente no resulte interactiva.

Iniciar el adaptador

Clona la implementación oficial y crea un entorno aislado:

git clone https://github.com/meituan-longcat/LongCat-AudioDiT.git
python3 -m venv .venv
source .venv/bin/activate
pip install -r examples/longcat-audiodit-server/requirements.txt
export PYTHONPATH="$PWD/LongCat-AudioDiT"

Después, inicia un punto de control:

python examples/longcat-audiodit-server/server.py \
--model meituan-longcat/LongCat-AudioDiT-1B \
--device cuda:0

El servidor se vincula a 127.0.0.1:8300 de forma predeterminada. Carece deliberadamente de autenticación para el uso local, así que no lo expongas directamente a una red no fiable. Utiliza una puerta de enlace HTTPS autenticada si Libre WebUI y el adaptador están en hosts distintos: las voces reutilizables envían la grabación de referencia descifrada a ese endpoint en cada lote de voz. examples/longcat-audiodit-server/README.md documenta un ejemplo Docker con CUDA y una comprobación de estado.

Activar el plugin

Abre Ajustes → Plugins → LongCat AudioDiT, actívalo y conserva los endpoints locales predeterminados salvo que el adaptador se ejecute en otro lugar. El descubrimiento solo anuncia el punto de control cargado en ese proceso. Reinicia el adaptador para cambiar entre 1B y 3.5B.

Cuando una puerta como llama-swap se sitúe delante del adaptador, configura el endpoint de la API de modelos como la ruta GET /v1/models del adaptador a través de esa puerta. No dirijas el descubrimiento a POST /v1/audio/speech: si falla, recurre a ambos puntos del manifiesto y puede permitir que la interfaz seleccione uno que el adaptador no haya cargado.

Utiliza Ajustes → Texto a voz para seleccionar LongCat en la reproducción del chat. La reproducción natural por lotes está activada de forma predeterminada. El límite compartido de 140 caracteres mantiene el texto chino denso dentro de la ventana de duración más corta de 1B; Libre WebUI crea automáticamente varios lotes para respuestas más largas.

Clonación de voz

Abre Imagine → Audio, selecciona un modelo de voz de LongCat y activa Clonar una voz de referencia. Sube una grabación limpia e introduce las palabras exactas que contiene. Funciona mejor un clip de 3–10 segundos, de una sola persona y con poco ruido; el adaptador rechaza clips de más de 15 segundos o 10 MiB.

La clonación puede limitarse a una generación, o puedes elegir Guardar como voz reutilizable, asignarle un nombre privado y confirmar expresamente que la persona consintió el almacenamiento. Las voces guardadas se pueden seleccionar para el mismo modelo bajo Ajustes → Texto a voz. La lectura y reproducción automática reutilizan esa voz en los lotes de Libre WebUI sensibles a las frases.

La referencia consume parte de la ventana de duración de AudioDiT. Si el texto solicitado no cabe en el tiempo restante, el adaptador devuelve un error claro en vez de recortar el audio; acorta la referencia o el pasaje y vuelve a intentarlo.

Solo clones una voz con permiso explícito. Para una generación única, Libre WebUI conserva la referencia en memoria y el adaptador elimina su archivo temporal. Cuando guardas una voz reutilizable, Libre WebUI almacena el audio original y la transcripción exacta en un perfil del usuario cifrado con AES-GCM. Nunca sustituye la referencia canónica por la imitación generada. AudioDiT no expone un embedding de hablante portátil, por lo que el par original se descifra y se envía al proveedor configurado en cada lote. Puedes eliminar el perfil definitivamente en los ajustes de texto a voz. El perfil falla de forma segura si cambia el enrutamiento aprobado o el endpoint; créalo de nuevo tras verificar la nueva ubicación.

La voz generada se guarda por separado en la galería multimedia cifrada. Eliminar un resultado no borra su perfil de voz, y borrar un perfil no elimina el audio generado anteriormente.

El proveedor acepta referencias WAV, FLAC, MP3 y Ogg. El inglés y el chino mandarín son los idiomas mejor documentados. LongCat no publica voces predefinidas con nombre, así que la síntesis ordinaria usa el valor predeterminado del modelo.

Controles de inferencia

El plugin expone variables avanzadas acotadas para pasos ODE, intensidad de guía, método CFG/APG y semilla. Libre WebUI solo transmite los controles declarados en el manifiesto a los endpoints de voz y clonación. Los valores predeterminados coinciden con el ejemplo original y son un buen punto de partida.

AudioDiT no ofrece control de velocidad. Para mantener la compatibilidad con las solicitudes de voz de OpenAI, el adaptador acepta valores speed entre 0.25 y 4.0 y los ignora deliberadamente. El modelo determina el ritmo real; elegir otra velocidad no estira el WAV generado.

Consulta el README del ejemplo para solicitudes curl directas, comandos Docker, límites exactos y comandos de validación sin conexión.