Detektor języka zawsze daje odpowiedź, nawet na kaszlnięcie. Zostaw wykrywanie włączone przy czystym lub wielojęzycznym nagraniu, a język podaj wtedy, gdy jeden język jest mówiony w hałasie lub z mocnym akcentem.
Każda transkrypcja zaczyna się od pytania, którego czytelnik nigdy nie widzi: jaki to język? Jeśli odpowiedź jest błędna, reszta potoku ciężko pracuje nad wytwarzaniem płynnych bzdur. Ten artykuł wyjaśnia, czego słucha detektor języka, jak wykrywanie zachowuje się przy dźwięku na żywo i w plikach oraz kiedy lepiej podać język samemu.
Detektor języka nie rozumie tego, co zostało powiedziane. Patrzy na sam dźwięk: zestaw spółgłosek i samogłosek, sposób akcentowania sylab, rytm fraz oraz krótkie, częste słowa, na których opiera się każdy język. Hiszpański ma własny zestaw samogłosek i rytm; holenderski i niemiecki mają wiele wspólnego, ale rozchodzą się w kilku dźwiękach. Kilka sekund wyraźnej mowy zwykle wystarcza, by je rozróżnić.
Wiele systemów rozpoznawania mowy robi to jako produkt uboczny rozpoznawania słów. Decydują o języku na podstawie początku nagrania, podając prawdopodobieństwo dla każdego znanego sobie języka. Z takiej konstrukcji wynikają dwie rzeczy. Prawdopodobieństwa zawsze sumują się do jedności, więc nie ma odpowiedzi „brak języka”: cisza, kaszlnięcie czy dźwięk muzyki również dostaną język, często z pewnym wynikiem. A decyzja zapada na podstawie początku, czyli najgorszej próbki, jaką można wybrać. Wiele nagrań zaczyna się od powitań, imion i nazw miejscowości, które niosą bardzo niewiele informacji o języku: „Good morning, Maria, welcome to Berlin” jest prawie tak samo niemieckie, jak angielskie. Inne zaczynają się od ciszy lub kaszlnięcia, a detektor poproszony o decyzję na tej podstawie i tak ją podejmie, z pewnością, na zupełnie niczym. Dzieje się tak także w prawdziwym materiale: rumuńskie kazanie, które zaczyna się od szumu pomieszczenia i od „Bună dimineața”, może zostać bez wahania usłyszane jako włoskie „Buona domenica”.
Koszt błędnej odpowiedzi też jest gorszy, niż się wydaje. Rozpoznawacz dekodujący w złym języku nie tylko źle pisze; on przepisuje na nowo. „For God so loved the world”, zdekodowane jako rumuński, dało „Forgot to love the world”. Rumuńskie „mândria slujește”, zdekodowane jako angielski, dało „Pride serves”, co jest trafnym tłumaczeniem zdania, o którego przetłumaczenie nikt nie prosił. Słowa są płynne, a transkrypcja nie daje żadnego znaku, że coś jest nie tak, i właśnie dlatego ten błąd jest kosztowny.
Pięć rzeczy najczęściej myli detektory:
To, które z tych zjawisk nas dotyka, zależy od tego, czy dźwięk przychodzi na żywo, czy już leży w pliku.
Przy transkrypcji na żywo nie ma całego nagrania, na które można by spojrzeć. Dźwięk dociera wraz z mową, a transkrypcja musi dotrzeć razem z nim. Dlatego język jest wykrywany w trakcie mówienia i śledzony, jeśli mówca przełączy się na inny. To właśnie oznacza notatka przy przełączniku Spoken language po rozpoczęciu transkrypcji na żywo w panelu: język mówcy jest wykrywany automatycznie, a mówca może go zmienić w dowolnej chwili.
Zmiana języka jest potwierdzana, zanim zostanie zastosowana, więc jeden zakłócony fragment nie wciąga transkrypcji w inny język. Słabym punktem jest początek: jeśli pierwsze słowa to szumne powitanie, pierwsza linia może wyjść w złym języku. Podanie języka tego unika.
Pliki działają inaczej, bo całe nagranie jest już dostępne.
Plik to łatwiejszy problem: nie trzeba ufać pierwszym sekundom. Dla pliku język ustalany jest na podstawie całego nagrania, więc hałaśliwe powitanie na początku nie może go przesądzić.
Język pliku wciąż jest roboczym założeniem, a nie werdyktem. Nagranie, które naprawdę zmienia język w połowie, na przykład wywiad przechodzący z angielskiego na rumuński w swojej drugiej połowie, jest śledzone, a nie wymuszane. Nagranie, które przeplata języki przez cały czas, także jest obsługiwane.
Detektor, który rozstrzyga raz i nigdy do tego nie wraca, jest pewny siebie w złym miejscu.
Żaden detektor nie pomaga zbytnio, gdy całe nagranie jest zaszumione. Wykrywanie jest domyślne, bo w większości przypadków trafia, a nic nie kosztuje. Przy niektórych nagraniach warto jednak podać język, a panel mówi, które to są: podanie języka mówionego poprawia dokładność przy zaszumionych nagraniach i silnych akcentach.
To są przypadki, w których detekcja ma najmniej do pracy. Szum usuwa wskazówki, na których polega detektor; silny akcent przesuwa je w stronę innego języka; blisko spokrewniona para daje mało wskazówek już na wstępie. Angielski mówca z silnym portugalskim akcentem w pogłosowej sali jest trudny do rozpoznania samym dźwiękiem, a jeśli detektor się pomyli, transkrypcja zamienia angielską mowę w portugalską przez cały czas trwania błędu. Podanie języka usuwa to pytanie, więc cały wysiłek idzie w same słowa.
Krótka lista kontrolna:
Podanie języka to ustawienie transkrypcji, a nie konta, więc możesz decydować dla każdego nagrania osobno. Wszystko powyżej sprowadza się do jednej opcji API.
spokenLanguage oznacza wykrywanie; session.update w trakcie strumieniaW API spokenLanguage to kod języka, taki jak en; jeśli go pominąć, język jest wykrywany. Pojawia się w settings transkrypcji pliku lub linku oraz w opcjach sesji realtime. Wykrywanie i podawanie obejmują te same 100 języków. Tłumaczenie na do 10 z nich to osobny wybór i nie zależy od tego, który język wykryto lub podano. O tym, jak tłumaczenie nadąża za mową, jest mowa w Opóźnienie tłumaczenia na żywo, wyjaśnione.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Sesja realtime przyjmuje tę samą opcję przy utworzeniu, a zmienić ją można w trakcie przepływu dźwięku. Ramka tekstowa session.update z nowym spokenLanguage obowiązuje od tej chwili dla mowy; ustawienie jej na "" lub "auto" przywraca wykrywanie, a nieobsługiwany kod jest ignorowany. Widok napisów z przyciskiem języka może pozwolić operatorowi podać język w chwili, gdy zobaczy błędną pierwszą linię, bez ponownego połączenia.
{ "type": "session.update", "spokenLanguage": "ro" }
Listę kodów z ich nazwami znajdziesz pod GET /v1/languages, który nie wymaga klucza. Pełny przepływ realtime, od utworzenia sesji na serwerze po odczyt szkiców i zatwierdzonych fragmentów, opisano w Transkrypcja w czasie rzeczywistym przez WebSocket, a interaktywna dokumentacja znajduje się pod adresem {{api}}/docs. W panelu ten sam wybór to przełącznik Spoken language przy rozpoczynaniu nowej transkrypcji, a klucze API znajdują się w sekcji Developers.