Firma Google wprowadziła kodek audio Lyra V2, który wykorzystuje metody uczenia maszynowego, aby osiągnąć maksymalną jakość przesyłania głosu przy użyciu bardzo wolnych łączy. Nowa wersja różni się przejściem na nową architekturę sieci neuronowej, obsługą dodatkowych platform, rozszerzonymi możliwościami zarządzania bitrate'em, zwiększoną wydajnością i osiągnięciem wyższej jakości dźwięku. Referencyjna implementacja kodu napisana jest w C++ i jest rozpowszechniana na licencji Apache 2.0.
Pod względem jakości przesyłanych danych głosowych przy niskich prędkościach Lyra znacznie przewyższa tradycyjne kodeki, które wykorzystują metody cyfrowego przetwarzania sygnałów. Aby osiągnąć wysoką jakość przesyłania głosu w warunkach ograniczonej ilości przesyłanych informacji, oprócz standardowych metod kompresji dźwięku i przetwarzania sygnałów, w Lyra zastosowano model mowy oparty na systemie uczenia maszynowego, który pozwala odtworzyć brakujące informacje na podstawie typowych cech mowy.
Kodek składa się z kodera i dekodera. Algorytm działania kodera sprowadza się do wyodrębniania parametrów danych głosowych co 20 milisekund, ich kompresji i przesyłania do odbiorcy przez sieć z bitrate'em od 3,2 kbps do 9,2 kbps. Po stronie odbiorcy dekoder wykorzystuje generatywny model do odtworzenia pierwotnego sygnału głosowego na podstawie przekazanych parametrów dźwiękowych, które obejmują logarytmiczne mel-spektrogramy uwzględniające cechy energii mowy w różnych pasmach częstotliwości i przygotowane z uwzględnieniem modelu postrzegania słuchu przez człowieka.
W Lyra V2 zastosowano nowy model generatywny oparty na konwolucyjnej sieci neuronowej SoundStream, który charakteryzuje się niskimi wymaganiami w zakresie zasobów obliczeniowych, co pozwala na dekodowanie w czasie rzeczywistym nawet na słabszych systemach. Model używany do generacji dźwięku był szkolony na podstawie kilku tysięcy godzin nagrań głosowych w ponad 90 językach. Do działania modelu używany jest TensorFlow Lite. Wydajność oferowanej implementacji jest wystarczająca do kodowania i dekodowania mowy na smartfonach z niższej półki cenowej.
Oprócz wykorzystania innego modelu generatywnego, nowa wersja wyróżnia się także włączeniem w architekturę kodeka elementów z kwantyzatorem RVQ (Residual Vector Quantizer), wykonywanym po stronie nadawcy przed przesłaniem danych, a po stronie odbiorcy po odebraniu danych. Kwantyzator przekształca parametry wydawane przez kodek na zestawy pakietów, kodując informacje w oparciu o wybrany bitrate. W celu zapewnienia różnych poziomów jakości przewidziano kwantyzatory dla trzech bitrate'ów (3,2 kps, 6 kbps i 9,2 kbps); im wyższy bitrate, tym lepsza jakość, ale wyższe wymagania dotyczące przepustowości.

Nowa architektura pozwoliła na zmniejszenie opóźnień przesyłania sygnału z 100 do 20 milisekund. Dla porównania kodek Opus dla WebRTC wykazał na testowanych bitrate'ach opóźnienia wynoszące odpowiednio 26,5 ms, 46,5 ms oraz 66,5 ms. Znacznie zwiększyła się również wydajność enkodera i dekodera — w porównaniu do poprzedniej wersji zauważono przyspieszenie do 5 razy. Na przykład na smartfonie Pixel 6 Pro nowy kodek koduje i dekoduje 20-milisekundową próbkę w zaledwie 0,57 ms, co jest 35 razy szybsze, niż wymagane do przesyłu w czasie rzeczywistym.
Oprócz wydajności udało się również poprawić jakość odtwarzania dźwięku — w skali MUSHRA jakość mowy przy bitrate'ach 3,2 kbps, 6 kbps i 9,2 kbps przy użyciu kodeka Lyra V2 odpowiada bitrate'om 10 kbps, 13 kbps i 14 kbps przy użyciu kodeka Opus.
Źródło: opennet.ru
