Wyszukiwanie wiązkowe może poprawić dokładność lokalnego rozpoznawania mowy, zachowując kilka prawdopodobnych transkrypcji, ale szersze wiązki zwiększają obciążenie dekodera, zużycie pamięci i opóźnienie odpowiedzi.
Kompromis ten ujawnia się, gdy czysta mowa jest poprawnie dekodowana przy użyciu małej wiązki, natomiast zaszumione nagrania, nazwy lub niejednoznaczne frazy zyskują na utrzymywaniu większej liczby hipotez.
Dekodowanie zachłanne zbyt wcześnie wybiera jedną ścieżkę
Rozpoznawarka mowy generuje prawdopodobieństwa dla tokenów lub symboli. Dekodowanie zachłanne zachowuje tylko lokalnie najlepszą opcję. Jest szybkie, ale może odrzucić alternatywę, która później okazałaby się lepsza.
Samouczek dekodowania CTC w PyTorch demonstruje wyszukiwanie wiązkowe ze wsparciem słownika i modelu językowego, zachowując wiele częściowych hipotez zamiast jednej ścieżki. PyTorch porównuje wiązkowe dekodowanie CTC z prostszymi ścieżkami dekodowania, pokazując, dlaczego utrzymywanie kilku hipotez może zapobiec zbyt wczesnemu wyborowi w dekodowaniu zachłannym; zobacz dekoder wyszukiwania wiązkowego CTC w PyTorch.
Ma to znaczenie, gdy dane akustyczne są niejednoznaczne. Sekwencja tokenów, która tymczasowo zajmuje drugie miejsce, może później stać się najbardziej prawdopodobną pełną transkrypcją.
Szerokość wiązki określa budżet wyszukiwania
Szerokość wiązki określa, ile kandydujących sekwencji przetrwa każde rozszerzenie.
Szersza wiązka daje dekoderowi więcej możliwości skorygowania wcześniejszego lokalnego błędu.
Torchaudio udostępnia parametr beam_width określający rozmiar wiązki używany podczas wyszukiwania. Większa liczba zachowywanych hipotez wymaga większej liczby operacji oceniania, większej ilości pamięci i większej liczby porównań. NVIDIA Riva udostępnia opcje dekodowania oparte na wiązce, co odzwierciedla fakt, że szerokość wiązki jest konfigurowalnym budżetem wyszukiwania, a nie właściwością samego enkodera akustycznego; zobacz dokumentację dekodera wiązkowego NVIDIA.
Jeśli poprawna sekwencja już utrzymuje się wysoko w małej wiązce, większa wiązka zwiększa obciążenie bez istotnej poprawy dokładności. Korzyść zależy od rozkładu błędów.
Przycinanie zapobiega eksplozji kombinatorycznej
Bez przycinania każda hipoteza mogłaby rozgałęziać się na wiele tokenów przy każdym kroku.
Wyszukiwanie wiązkowe wielokrotnie usuwa gałęzie o niskiej punktacji, dzięki czemu zbiór kandydatów pozostaje ograniczony.
PyTorch udostępnia dedykowany dekoder wyszukiwania wiązkowego CTC, oddzielając logikę wyszukiwania od samego modelu akustycznego. SpeechBrain udostępnia parametry wyszukiwania wiązkowego CTC, które przycinają kandydujące sekwencje podczas dekodowania, wspierając mechanizm kontroli wyszukiwania opisany w dekoderze wiązkowym CTC SpeechBrain.
Koszt opóźnienia wynika zatem z dodatkowego zarządzania hipotezami i ich oceniania, a nie z wyliczania każdej możliwej transkrypcji.
Modele językowe mogą zmienić zwycięską hipotezę
Same wyniki akustyczne mogą nie wystarczyć do rozróżnienia dwóch prawdopodobnych fraz. Dekoder może dodać wyniki słownika lub modelu językowego, dzięki czemu ścieżka o nieco słabszym wyniku akustycznym zajmie wyższą pozycję, jeśli fraza jest bardziej prawdopodobna pod względem językowym.
Przykład w PyTorch wyraźnie obsługuje KenLM i ograniczenia słownikowe podczas dekodowania wiązkowego. Badania nad wspólnym dekodowaniem CTC i mechanizmu uwagi pokazują, że wiele wyników modeli może uczestniczyć w ustalaniu rankingu podczas wyszukiwania wiązkowego, co wspiera omówienie modelu językowego i ponownego oceniania w wspólnym wyszukiwaniu wiązkowym CTC i mechanizmu uwagi.
Może to pomóc w rozpoznawaniu nazw domowych i powtarzających się fraz, jeśli model językowy je reprezentuje, ale może też kierować nietypowe, choć poprawnie wypowiedziane terminy w stronę popularniejszych alternatyw.
Wyszukiwanie wiązkowe zwiększa opóźnienie dekodera, ale niekoniecznie obciążenie enkodera
Wyszukiwanie wiązkowe zwykle zwiększa obciążenie po wygenerowaniu cech akustycznych.
Enkoder może działać z tą samą szybkością, podczas gdy całkowite opóźnienie transkrypcji rośnie, ponieważ rozszerzanych jest więcej hipotez.
PyTorch opisuje również dekoder wyszukiwania wiązkowego CTC oparty na CUDA, pokazując, że operacje wyszukiwania można przenieść na akcelerator. Prace nad wyszukiwaniem wiązkowym przyspieszanym przez GPU pokazują, że samo dekodowanie może stać się istotnym etapem obliczeniowym, co potwierdza rozróżnienie dotyczące opóźnienia przedstawione w wyszukiwaniu wiązkowym ASR przyspieszanym przez GPU.
Analiza opóźnienia lokalnego asystenta głosowego firmy ZimaSpace przedstawia szerszy kontekst: dekodowanie to tylko jeden z etapów interaktywnego żądania głosowego.
Użyteczna wiązka to najmniejsza wiązka zachowująca dokładność
Szerokość wiązki należy dostrajać względem współczynnika błędów słów i opóźnienia całościowego na rzeczywistych nagraniach z domu. Celem nie jest największa wiązka, jaką serwer może utrzymać.
Torchaudio obsługuje strumieniowe wyszukiwanie wiązkowe RNN-T, przez co opóźnienie ma szczególne znaczenie w przypadku interaktywnego sterowania głosowego. Badania nad zwektoryzowanym wyszukiwaniem wiązkowym koncentrują się na zmniejszeniu kosztu wyszukiwania przy zachowaniu użytecznych hipotez, wzmacniając praktyczną zasadę zatrzymania opisaną w badaniach nad zwektoryzowanym wyszukiwaniem wiązkowym.
Jakość dźwięku wejściowego nadal ogranicza możliwości odzyskania informacji. Analiza błędów rozpoznawania z dużej odległości firmy ZimaSpace opisuje utratę informacji, której wyszukiwanie nie jest w stanie odtworzyć.
FAQ
Czy większa wiązka zawsze zmniejsza współczynnik błędów słów?
Nie. Korzyści mogą się wypłaszczyć, a nieodpowiednie wagi modelu językowego lub przycinanie mogą zmienić rodzaj błędów zamiast je usuwać.
Czy wyszukiwanie wiązkowe jest przydatne bez zewnętrznego modelu językowego?
Tak. Nadal może zachowywać wiele akustycznie prawdopodobnych ścieżek tokenów; zewnętrzny model językowy jest dodatkowym sygnałem oceny.
Czy wyszukiwanie wiązkowe spowalnia sam model mowy?
Dodaje przede wszystkim operacje dekodowania i wyszukiwania. Enkoder akustyczny może działać z tą samą szybkością, podczas gdy całkowite opóźnienie transkrypcji wzrasta.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Stan bieżący a stan trwały w Home Assistant: co musi przetrwać ponowne uruchomienie?
Home Assistant nie zachowuje trwale każdej bieżącej wartości; konfiguracja, rejestry, wybrane przywracane stany, historia i dane wdrożeniowe pełnią różne funkcje podczas ponownego uruchamiania.

Jak Home Assistant uwierzytelnia sesje lokalne i zdalne?
Lokalne i zdalne sesje Home Assistant korzystają z tego samego modelu tożsamości po stronie serwera; zdalny dostęp zmienia trasę i granicę TLS, ale nie...

Dlaczego zapytania do historii Home Assistant mogą zwalniać w miarę przyrostu danych rejestratora?
Wzrost liczby rekordów może zwiększyć koszt zapytań do historii, gdy żądany zakres obejmuje więcej wierszy, rośnie liczba chybień pamięci podręcznej lub operacje na pamięci...

