Liquid AI opublikowało LiquidCodec, strumieniowy kodek audio o około 74 milionach parametrów, który służy jako podstawa dla jego modeli LFM3-Audio-2B i LFM3-Omni-2B. Przekształca on mowę w tokeny, dyskretne jednostki, które model językowy może przewidywać, a następnie ponownie konwertuje te tokeny na dźwięk. Wagi są dostępne na Hugging Face.
LiquidCodec przetwarza dźwięk próbkowany z częstotliwością 24 kHz i dzieli go na ramki o długości 80 ms. Każda ramka staje się 12 tokenami, rozdzielonymi na 12 strumieni, zgodnie z kartą modelu LFM3-Audio-2B. Kodek zastępuje Mimi firmy Kyutai, którego Liquid AI używało w LFM2-Audio-1.5B. Mimi liczy 96,2 miliona parametrów.
Działanie w trzech etapach
Działanie opiera się na łańcuchu trzech etapów: kodowanie, kwantyzacja, dekodowanie. Liquid AI wykorzystuje bloki ze swojej architektury LFM3 zarówno w enkoderze, jak i dekoderze, dwóch symetrycznych częściach. Enkoder jest w pełni przyczynowy, co oznacza, że opiera się tylko na już odebranych dźwiękach, co jest odpowiednie dla strumieniowania.
Do kwantyzacji LiquidCodec wykorzystuje metodę zwaną GFSQ (grouped finite scalar quantization) zamiast RVQ (residual vector quantization). W RVQ każdy słownik kodów koryguje to, czego nie uchwycił poprzedni. W GFSQ grupy są niezależne, dzięki czemu 12 strumieni może być przewidywanych równolegle przez transformatory typu MaskGIT. Dekoder przewiduje bezpośrednio współczynniki spektralne, bez etapu nadpróbkowania przez transponowaną konwolucję, często kosztownego w dekoderach falowych.
Trening przebiegał w dwóch fazach. Pierwsza wykorzystała 264 000 godzin mowy w 107 językach, bez strat adversarialnych. Druga została dopracowana na 55 000 godzin mowy pełnopasmowej (24 kHz lub więcej), z krytykami adversarialnymi. Według Liquid AI ten etap usunął pozostałe metaliczne artefakty. Ostatni etap, kwantyzacja uwzględniająca trening (QAT) tylko na dekoderze, ma na celu wnioskowanie na urządzeniach brzegowych.
Prędkość i jakość według Liquid AI
Liquid AI zmierzyło prędkość w FP32 na pojedynczym wątku procesora MacBook Pro z układem Apple M4 Max. Według tych deklaratywnych danych, LiquidCodec przetwarza kodowanie z prędkością około 361 razy szybszą niż czas rzeczywisty, a dekodowanie około 87 razy. Współczynnik czasu rzeczywistego (RTF) to czas przetwarzania podzielony przez długość dźwięku: im niższy, tym szybsze przetwarzanie. RTF kodowania wynosi 0,0028, wobec 0,0361 dla Mimi, 0,2145 dla NanoCodec i 0,7359 dla X-Codec 2. W dekodowaniu wynosi 0,0115, wobec 0,0329, 0,2543 i 0,0379.
Do oceny jakości Liquid AI użyło ośmiu zestawów testowych: LibriSpeech test-clean, Seed-TTS w języku angielskim i mandaryńskim oraz pięć języków z FLEURS (niemiecki, francuski, mandaryński, japoński, koreański). LiquidCodec uzyskuje najlepszy wynik ViSQOL i najmniejszą odległość melową na wszystkich ośmiu zestawach. Na LibriSpeech wynik ViSQOL osiąga 4,319, wobec 4,219 dla NanoCodec, 4,119 dla X-Codec 2 i 4,031 dla Mimi. W testach syntezy mowy trenowanych na tokenach każdego kodeku, LiquidCodec pokazuje najlepszy wynik UTMOSv2 na wszystkich ośmiu zestawach. Współczynnik błędów słów na LibriSpeech wynosi 3,15%, wobec 6,27% dla Mimi.
NanoCodec uzyskuje jednak lepszy wynik PESQ (WB) na siedmiu z ośmiu zestawów i wyprzedza LiquidCodec w podobieństwie mówcy na LibriSpeech (SECS 0,836 wobec 0,785).
Wdrożenie
Kodek można załadować za pomocą Hugging Face Transformers, aktywując trust_remote_code=True. Funkcja encode() generuje kody audio, a decode() odtwarza przebieg fali. Natywna klasa, LiquidCodecStreamingCache, umożliwia dekodowanie fragment po fragmencie. Przykłady w karcie wykorzystują procesory graficzne (GPU) CUDA w bfloat16.
Dla urządzeń wbudowanych Liquid AI proponuje wersje GGUF Q4_0, Q4_K_M i Q8_0 przeznaczone dla llama.cpp, a także repozytoria GGUF dla LFM3-Audio-2B i LFM3-Omni-2B. Według firmy połączenie Q4_0 i QAT dekodera zmniejsza jego ślad o współczynnik 3,5. Wynik ViSQOL na LibriSpeech spada wtedy z 4,319 do 4,292.
