Integrarea LongCat AudioDiT
Libre WebUI include un plugin JSON și un adaptor HTTP local pentru checkpoint-urile oficiale meituan-longcat/LongCat-AudioDiT-1B și meituan-longcat/LongCat-AudioDiT-3.5B. Proiectul upstream oferă un API Python, nu un server HTTP, astfel că adaptorul din examples/longcat-audiodit-server asigură descoperirea modelelor, vorbire JSON și endpoint-uri multipart pentru clonarea vocii.
AudioDiT returnează fișiere WAV mono complete la 24 kHz, nu un răspuns audio în flux. Prin urmare, Libre WebUI împarte răspunsurile mai lungi la limitele propozițiilor și expresiilor, generează în avans un număr limitat de loturi și programează sunetul decodat în ordine pentru redare continuă.
Cerințe
O placă GPU NVIDIA CUDA este ținta practică. Începeți cu checkpoint-ul 1B; checkpoint-ul 3.5B necesită mult mai multă memorie VRAM și se încarcă mai greu. CPU-ul poate fi folosit pentru experimente, dar probabil nu va oferi o experiență interactivă.
Pornirea adaptorului
Clonați implementarea oficială și creați un mediu izolat:
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"
Apoi porniți un checkpoint:
python examples/longcat-audiodit-server/server.py \
--model meituan-longcat/LongCat-AudioDiT-1B \
--device cuda:0
Serverul se leagă implicit la 127.0.0.1:8300. În mod intenționat nu folosește autentificare pentru utilizarea locală, deci nu îl expuneți direct unei rețele care nu este de încredere. Folosiți un gateway HTTPS autentificat când Libre WebUI și adaptorul se află pe gazde diferite: vocile reutilizabile trimit înregistrarea de referință decriptată către acel endpoint pentru fiecare lot de Vorbire. Un exemplu Docker cu CUDA și verificarea stării sunt documentate în examples/longcat-audiodit-server/README.md.
Activarea pluginului
Deschideți Setări → Pluginuri → LongCat AudioDiT, activați-l și păstrați endpoint-urile locale implicite, cu excepția cazului în care adaptorul rulează în altă parte. Descoperirea modelelor publică numai checkpoint-ul rezident în procesul serverului. Reporniți adaptorul pentru a comuta între modelele 1B și 3.5B.
Când adaptorul se află în spatele unui gateway precum llama-swap, configurați Endpoint-ul API Modele ca ruta GET /v1/models a adaptorului prin acel gateway. Nu direcționați descoperirea modelelor către POST /v1/audio/speech: dacă descoperirea eșuează, se revine la ambele checkpoint-uri din manifest, iar interfața poate selecta un checkpoint pe care adaptorul nu l-a încărcat.
Folosiți Setări → Text în vorbire pentru a selecta LongCat la redarea chatului. Redarea naturală pe loturi este activată implicit. Limita comună de 140 de caractere a furnizorului păstrează textul chinezesc dens în fereastra mai scurtă a checkpoint-ului 1B; Libre WebUI creează automat mai multe loturi pentru răspunsurile lungi.
Clonarea vocii
Deschideți Imaginează → Audio, selectați un model de vorbire LongCat și activați Clonează o voce de referință. Încărcați o înregistrare clară și introduceți exact cuvintele rostite. Un clip de 3–10 secunde, cu un singur vorbitor și zgomot de fond redus, funcționează cel mai bine; adaptorul respinge clipurile de peste 15 secunde sau 10 MiB.
Clonarea poate rămâne o generare unică sau puteți selecta Salvează ca voce reutilizabilă, să îi dați vocii un nume privat și să confirmați explicit că vorbitorul a consimțit la stocare. Vocile salvate devin selectabile pentru același model LongCat în Setări → Text în vorbire. Citirea cu voce tare și redarea automată din chat reutilizează apoi vocea în loturile Libre WebUI care țin cont de limitele propozițiilor.
Referința consumă o parte din fereastra de durată AudioDiT. Dacă vorbirea solicitată nu încape în timpul rămas, adaptorul returnează o eroare clară pentru client în loc să taie sunetul în tăcere; scurtați referința sau pasajul generat și încercați din nou.
Clonați o voce numai cu permisiunea explicită a vorbitorului. Pentru o generare unică, Libre WebUI păstrează referința în memorie, iar adaptorul elimină fișierul temporar de decodare după cerere. Când salvați explicit o voce reutilizabilă, Libre WebUI stochează sunetul original de referință și transcrierea exactă într-un profil limitat la utilizator și criptat cu AES-GCM. Nu înlocuiește niciodată referința canonică cu imitația generată. AudioDiT nu expune un embedding portabil al vorbitorului, astfel încât perechea originală este decriptată și trimisă furnizorului configurat pentru fiecare lot generat. Puteți șterge definitiv profilul din setările Text în vorbire. Un profil salvat va eșua în siguranță dacă rutarea aprobată sau endpoint-ul pluginului se schimbă; recreați-l după verificarea noii destinații.
Vorbirea generată este stocată separat în galeria media criptată a utilizatorului. Ștergerea unui rezultat din galerie nu șterge profilul vocal salvat, iar ștergerea profilului vocal nu elimină sunetele generate anterior din galerie.
Furnizorul acceptă referințe WAV, FLAC, MP3 și Ogg. Engleza și chineza mandarină sunt limbile țintă cel mai bine documentate. LongCat nu publică voci presetate cu nume, așa că sinteza obișnuită folosește valoarea implicită a modelului.
Controale de inferență
Pluginul expune variabile avansate limitate pentru pașii ODE, intensitatea ghidării, metoda de ghidare CFG/APG și seed. Libre WebUI transmite numai controalele declarate în manifest atât endpoint-urilor de vorbire, cât și celor de clonare. Valorile implicite corespund exemplului upstream de inferență și reprezintă un punct de pornire bun.
AudioDiT nu expune controlul vitezei de redare. Pentru compatibilitate cu formatul cererii de vorbire OpenAI, adaptorul acceptă valori speed de la 0.25 până la 4.0 și le ignoră intenționat. Modelul stabilește temporizarea reală a vorbirii; alegerea altei viteze nu dilată temporal fișierul WAV generat.
Consultați README-ul exemplului pentru cereri curl directe, comenzi Docker, limite exacte și comenzi de validare offline.