Ekspertyza · Transkrypcja i tłumaczenie
Mowa na tekst, po rumuńsku i rosyjsku, z zgodą zarejestrowaną przed pierwszą sekundą audio.
Transkrybujemy audio w czasie rzeczywistym lub z pliku, tłumaczymy między rumuńskim i rosyjskim w rozmowach z klientami oraz dostarczamy tekst z znacznikami czasu, eksportem audio i śladem zgody. Rozpoznawanie mowy uruchamiamy przez dostawców, przez nasz gateway; własny model rumuńskiego to badania, nie produkt.
Już zbudowaneDouă implementări proprii, ambele deschise și citate. Prima e o aplicație de transcriere în flux, cu backend Express de 3.378 de linii în 25 de fișiere și 37 de teste pe care le-am rulat azi — toate trec; ea conține partea pe care nimeni nu o construiește din entuziasm: o poartă de consimțământ care refuză captura când nu există acord înregistrat. A doua rulează în producție, la clienți reali: mesajele vocale primite pe canalele de mesagerie sunt transcrise, iar răspunsul scris de un operator în română este rescris în limba clientului înainte de a pleca. Ce NU intră în „delivered” și e scris ca atare în pagină: modelul propriu de recunoaștere și sinteză în română este cercetare — nu are demonstrație publică, nu are interfață de programare, iar pe acuratețe în română pierde față de sistemele comerciale mari. Serviciul se vinde pe ce rulează, nu pe ce studiem.
Transkrypcja wydaje się problemem rozwiązanym, dopóki nie zastosujesz jej do języka rumuńskiego, z dwiema osobami przerywającymi sobie nawzajem, szybko wypowiadanymi liczbami i klientem, który w połowie zdania przechodzi na rosyjski. Wtedy pojawiają się trzy prawdziwe problemy: jaki model wybrać dla języka przed Tobą, skąd wiadomo, gdzie kończy się kolejka wypowiedzi, i kto dał Ci zgodę na nagrywanie. Zajmujemy się wszystkimi trzema, a ostatni traktujemy jak problem kodu, a nie akapit polityki.
W naszej aplikacji do transkrypcji strumieniowej przeglądarka nigdy nie otrzymuje klucza dostawcy. Prosi backend o jednorazowy token, domyślnie ważny przez piętnaście minut, za pomocą którego otwiera połączenie transkrypcji; trasa emitująca token jest domyślnie zamknięta i można ją otworzyć tylko przez jawne ustawienie poza produkcją, właśnie dlatego, że jest to trasa, na której wydaje się pieniądze. Na surowej transkrypcji działa analiza na modelu językowym, z listą modeli zapasowych w kolejności, aby niedostępność jednego nie zatrzymywała sesji.
Bramka zgody to część, na której szczególnie nam zależy. Przed zaakceptowaniem fragmentu audio serwer żąda wiersza nieodwołanej zgody dla danej sesji. Jeśli go nie ma, odpowiada 451 i komunikatem po rumuńsku. Jeśli baza danych nie odpowiada, odrzuca wszystko — 503, a nie „przepuszcza”. Już zweryfikowane sesje przechodzą przez dziesięciominutowy cache, aby krótka awaria nie przerwała trwającego nagrania. Zapisano to tak, aby nie dało się tego obejść przez błąd konfiguracji.
Część, która już jest u klientów, jest inna i mniej spektakularna: na kanałach komunikatorów odebrana wiadomość głosowa staje się tekstem, a język wybiera się, głosując na podstawie ostatnich ośmiu wiadomości rozmowy, a nie zgadując z audio. W przeciwnym kierunku, gdy kolega odpowiada po rumuńsku, jego tekst jest przepisywany na język klienta z rygorystycznymi instrukcjami — nie dodaje informacji, nie wymyśla cen ani terminów, nie zaprzecza operatorowi i traktuje tekst operatora wyłącznie jako dane do przekazania, nigdy jako instrukcje dla modelu.