Aller au contenu principal

Intégration de LongCat AudioDiT

Libre WebUI comprend un plugin JSON et un adaptateur HTTP local pour les points de contrôle officiels meituan-longcat/LongCat-AudioDiT-1B et meituan-longcat/LongCat-AudioDiT-3.5B. Le projet d’origine fournit une API Python et non un serveur HTTP. L’adaptateur situé dans examples/longcat-audiodit-server fournit donc des points de terminaison pour la découverte des modèles, la synthèse vocale JSON et le clonage de voix multipart.

AudioDiT renvoie des fichiers WAV mono à 24 kHz complets, plutôt qu’une réponse audio en diffusion. Libre WebUI découpe donc les réponses longues aux limites des phrases et des propositions, génère à l’avance un nombre limité de lots et planifie la lecture de l’audio décodé dans l’ordre afin qu’elle reste continue.

Configuration requise

Une carte graphique NVIDIA CUDA est la cible réaliste. Commencez avec le point de contrôle 1B ; le point de contrôle 3.5B demande beaucoup plus de VRAM et son chargement est plus long. Le processeur peut servir à des expérimentations, mais ne permettra probablement pas une utilisation interactive.

Démarrer l’adaptateur

Clonez l’implémentation officielle et créez un environnement isolé :

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"

Démarrez ensuite un point de contrôle :

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

Le serveur écoute par défaut sur 127.0.0.1:8300. Il ne comporte volontairement aucune authentification pour l’utilisation locale ; ne l’exposez donc pas directement à un réseau non fiable. Utilisez une passerelle HTTPS authentifiée lorsque Libre WebUI et l’adaptateur se trouvent sur des hôtes différents : pour chaque lot de parole, les voix réutilisables envoient l’enregistrement de référence déchiffré à ce point de terminaison. Un exemple Docker avec CUDA et un contrôle d’intégrité sont documentés dans examples/longcat-audiodit-server/README.md.

Activer le plugin

Ouvrez Paramètres → Plugins → LongCat AudioDiT, activez-le et conservez les points de terminaison locaux par défaut, sauf si l’adaptateur s’exécute ailleurs. La découverte de modèles annonce uniquement le point de contrôle chargé dans le processus serveur. Redémarrez l’adaptateur pour passer du modèle 1B au modèle 3.5B, ou inversement.

Lorsqu’une passerelle telle que llama-swap se trouve devant l’adaptateur, configurez le point de terminaison de l’API Modèles sur la route GET /v1/models de l’adaptateur par l’intermédiaire de cette passerelle. Ne dirigez pas la découverte de modèles vers POST /v1/audio/speech : en cas d’échec, elle revient aux deux points de contrôle du manifeste et peut permettre à l’interface de sélectionner un point de contrôle que l’adaptateur n’a pas chargé.

Dans Paramètres → Synthèse vocale, sélectionnez LongCat pour la lecture des discussions. La lecture naturelle par lots est activée par défaut. La limite commune du fournisseur, fixée à 140 caractères, maintient le texte chinois dense dans la fenêtre de durée plus courte du point de contrôle 1B ; Libre WebUI crée automatiquement plusieurs lots pour les réponses plus longues.

Clonage de voix

Ouvrez Imagine → Audio, sélectionnez un modèle vocal LongCat et activez Cloner une voix de référence. Importez un enregistrement propre et saisissez exactement les mots qui y sont prononcés. Un extrait de 3–10 secondes avec une seule personne et peu de bruit de fond donne les meilleurs résultats ; l’adaptateur refuse les extraits de plus de 15 secondes ou 10 MiB.

Le clonage peut rester une génération ponctuelle. Vous pouvez également sélectionner Enregistrer comme voix réutilisable, donner un nom privé à la voix et confirmer explicitement que la personne a consenti au stockage. Les voix enregistrées deviennent sélectionnables pour le même modèle LongCat sous Paramètres → Synthèse vocale. La lecture à voix haute et la lecture automatique des discussions réutilisent alors cette voix dans tous les lots de Libre WebUI découpés en fonction des phrases.

La référence occupe une partie de la fenêtre de durée d’AudioDiT. Si la parole demandée ne tient pas dans le temps restant, l’adaptateur renvoie une erreur client explicite au lieu de tronquer silencieusement l’audio ; raccourcissez la référence ou le passage à générer, puis réessayez.

Ne clonez une voix qu’avec l’autorisation explicite de la personne concernée. Pour une génération ponctuelle, Libre WebUI conserve la référence en mémoire et l’adaptateur supprime son fichier de décodage temporaire après la requête. Lorsque vous enregistrez explicitement une voix réutilisable, Libre WebUI stocke l’audio de référence d’origine et sa transcription exacte dans un profil propre à l’utilisateur, chiffré avec AES-GCM. L’imitation générée ne remplace jamais la référence canonique. AudioDiT ne fournit pas de plongement de locuteur portable : la paire d’origine est donc déchiffrée et envoyée au fournisseur configuré pour chaque lot généré. Vous pouvez supprimer définitivement le profil dans les paramètres de synthèse vocale. Un profil enregistré échoue de manière sécurisée si le routage approuvé ou le point de terminaison du plugin change ; recréez-le après avoir vérifié la nouvelle destination.

La parole générée est stockée séparément dans la galerie multimédia chiffrée de l’utilisateur. Supprimer un résultat de la galerie ne supprime pas son profil vocal enregistré ; supprimer un profil vocal ne retire pas les contenus audio déjà générés de la galerie.

Le fournisseur accepte les références WAV, FLAC, MP3 et Ogg. L’anglais et le chinois mandarin sont les langues cibles les mieux documentées. LongCat ne publie aucune voix prédéfinie nommée ; la synthèse ordinaire utilise donc la valeur par défaut du modèle.

Commandes d’inférence

Le plugin propose des variables avancées bornées pour le nombre d’étapes ODE, l’intensité du guidage, la méthode de guidage CFG/APG et la graine. Libre WebUI ne transmet que ces commandes déclarées par le manifeste, aussi bien au point de terminaison vocal qu’à celui du clonage. Les valeurs par défaut correspondent à l’exemple d’inférence du projet d’origine et constituent un bon point de départ.

AudioDiT ne propose aucun réglage de la vitesse de lecture. Pour rester compatible avec la forme des requêtes vocales d’OpenAI, l’adaptateur accepte les valeurs speed de 0.25 à 4.0 et les ignore volontairement. Le modèle détermine le rythme réel de la parole ; choisir une autre vitesse n’étire pas le WAV généré.

Consultez le fichier README de l’exemple pour les requêtes curl directes, les commandes Docker, les limites exactes et les commandes de validation hors ligne.