Przejdź do treści
megapromotingPorozmawiajmy

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.

Co obejmuje

Praca, komponent po komponencie

Zgoda, zweryfikowana przed audio

Brama zgody wymaga nieodwołanego wpisu w rejestrze zgód dla bieżącej sesji. Bez niego: 451, z komunikatem w języku rumuńskim. Przy niedostępnej bazie danych: 503, czyli odmowa, nie przejście. Sesje już zweryfikowane przechodzą przez cache na 10 minut, aby weryfikacja nie uderzała w bazę przy każdym fragmencie audio.

Jednorazowy token, klucz pozostaje na serwerze

Strona prosi backend o token do transkrypcji w czasie rzeczywistym, domyślnie ważny przez 900 sekund, i z nim otwiera połączenie do dostawcy. Klucz konta nigdy nie trafia do przeglądarki. Żądanie do dostawcy ma timeout 30 sekund, a jego przekroczenie zwraca jawny błąd, nie nieskończone oczekiwanie.

Transkrypcja strumieniowa, z językiem wybranym z kontekstu

W produkcji, na kanałach komunikacyjnych, język wiadomości głosowej jest wybierany przez głosowanie na podstawie ostatnich ośmiu wiadomości rozmowy — rosyjski, jeśli dominuje, w przeciwnym razie rumuński — i dopiero potem uruchamiane jest rozpoznawanie, z jawnie przekazanym wskazaniem języka. Format pliku jest rozpoznawany z pierwszych 12 bajtów, a nie z rozszerzenia, ponieważ wiadomości głosowe na kanałach Meta przychodzą jako `ogg` niezależnie od tego, jak są nazwane.

Tłumaczenie operator → klient, z granicami zapisanymi w promptcie

Gdy koleżanka lub kolega odpowiada po rumuńsku w wewnętrznym wątku, wiadomość do klienta jest przepisywana na język klienta. Zasady są jawne w kodzie: nie dodaje informacji, nie wymyśla szczegółów, cen, godzin ani obietnic, nie sprzeciwia się operatorowi, a tekst operatora jest traktowany wyłącznie jako dane do przekazania, nigdy jako instrukcje dla modelu — środek przeciw wstrzyknięciu poleceń, nie sformułowanie stylu.

Analiza nad transcriptem, z modelami zapasowymi w kolejności

Nad otrzymanym tekstem uruchamiana jest analiza na modelu językowym, z uporządkowaną listą alternatywnych modeli w kodzie, tak aby niedostępność obniżała jakość, a nie zatrzymywała sesji. Model analizy można zmienić z konfiguracji, bez ponownego uruchamiania.

Eksport audio w trzech formatach, z jawnie sygnalizowanym błędem

WAV jest tworzony bez zewnętrznych narzędzi. FLAC i MP3 wymagają `ffmpeg`; jeśli go brakuje, serwer odpowiada 501 z powodem, a jeśli proces się zawiesi, jest zatrzymywany po 60 sekundach i zwraca 504 z pierwszymi dwoma tysiącami znaków błędu. Nieudany eksport podaje przyczynę.

Oddzielne naliczanie limitu i kosztu

Zużyte minuty są odejmowane atomowo przez procedurę w bazie danych, a koszt jest zapisywany w osobnym rejestrze, po dostawcy. To są dwie różne rzeczy i psują się inaczej: jeśli wiersza kosztu nie da się powiązać z sesją, jest zapisywany niepowiązany, aby informacja o koszcie nie została utracona.

Trzy progi ruchu, na użytkownika, a nie na adres

Wydawanie tokenów, analiza i eksport mają osobne limity, a kluczem zliczania jest uwierzytelniony użytkownik, gdy istnieje, a nie adres IP — inaczej jeden agresywny użytkownik zza wspólnej sieci wyczerpałby limit wszystkich współpracowników.

Transkrypcja na kanałach komunikacyjnych, w istniejącym przepływie

Otrzymana od klienta wiadomość głosowa staje się tekstem w tej samej rozmowie, bez otwierania przez kogokolwiek innego narzędzia. Rozpoznawanie i synteza przechodzą przez nasz gateway, nie bezpośrednio do dostawcy, więc zużycie pojawia się w tym samym miejscu co reszta.

Jak to wygląda

Trasa, krok po kroku.

01

Ustalamy prawo do nagrywania, przed jakimkolwiek kodem

Kto mówi, kto jest informowany, kto wyraża zgodę, kto przechowuje nagranie i jak długo. Wynik nie jest dokumentem, który leży w szufladzie, lecz konfiguracją bramki: co dokładnie znaczy „istniejąca zgoda” w sytuacji klienta i co dzieje się, gdy jej brakuje.

02

Wybieramy łańcuch pod kątem języka i warunków dźwięku

Rumuński i rosyjski zachowują się inaczej, podobnie jak mikrofon biurkowy w porównaniu ze skompresowanym połączeniem telefonicznym. Wybór modelu, identyfikatora języka i strategii segmentacji odbywa się na próbkach z rzeczywistego materiału klienta, a nie na czystej demonstracji.

03

Składamy przepływ w całość i celowo go rozbijamy

Token, połączenie, transkrypcja, analiza, eksport. Potem sprawdzamy przypadki, które naprawdę się zdarzają: brak zgody, padnięta baza danych w połowie sesji, wygasły token, brak `ffmpeg`, niedostępny dostawca. Każdy musi dać komunikat, który mówi, co się zepsuło.

04

Przekazujemy z licznikami i limitami włączonymi

Zliczanie minut, rejestr kosztów, progi ruchu na użytkowniczkę lub użytkownika i logi. Bez nich pierwszy incydent omawia się z pamięci.

IntrareVerificareDeciziePublicareNimic nu trece mai departe neverificat.ORDINEA E ARGUMENTUL
Cinci pași, în ordinea în care se execută: acordul verificat în registru (fără el, drumul se oprește aici); jetonul de unică folosință emis de server, cu cheia rămasă pe server; transcrierea în flux la furnizor; analiza peste transcript, cu modele de rezervă în ordine; exportul textului și al audio-ului. Primul pas e singurul care poate opri tot restul, și e desenat ca poartă, nu ca etapă.

Dane

Czego dotykamy, gdzie to leży i jak długo zostaje

Pytania, które zadaje każdy, kto ma inspektora ochrony danych — postawione tutaj, zanim on je zada.

Rejestr zgód
Jeden wiersz na sesję, ze przestrzenią roboczą, identyfikatorem sesji i momentem cofnięcia, pusty tak długo, jak zgoda jest ważna. Weryfikacja szuka dokładnie braku cofnięcia. To jedyne źródło prawdy dla prawa do przechwytywania audio i jest odpytywane przed każdą sesją, nie tylko przy rejestracji.
Audio, transkrypt i analiza
Surowe audio przechodzi przez połączenie do transkrypcji u dostawczyni lub dostawcy; u nas przechowywany jest transkrypt, znaczniki czasu i wynik analizy, a także eksporty, których żąda użytkowniczka lub użytkownik. To, co dokładnie jest przechowywane i jak długo, ustala się dla projektu przed pierwszym nagraniem — dla rady, spotkania medycznego i rozmowy handlowej odpowiedzi nie są takie same.
Dokąd trafia audio i do kogo
Do dostawczyń i dostawców rozpoznawania mowy oraz do modelu analizy, przez naszą bramkę. Lista ich jest wpisywana do umowy przed uruchomieniem, z nazwą każdej i każdego, ponieważ nieujawniony podprzetwarzający jest problemem prawnym, a nie przeoczeniem technicznym.
Rejestr zużycia
Zużyte minuty są odejmowane atomowo w bazie danych, a koszt zapisywany oddzielnie, na sesję i na dostawczynię lub dostawcę. To dwa odrębne rejestry właśnie po to, aby błąd w jednym nie fałszował drugiego.
Czego nie dotykamy
Nie trenujemy modeli na nagraniach klienta i nie wykorzystujemy wyjścia dostawczyni lub dostawcy usługi głosowej do budowy ani testowania modelu konkurencyjnego — jest to wyraźnie zabronione w warunkach dostawczyni lub dostawcy, z którego korzystamy, i jest to ograniczenie, którego przestrzegamy nawet tam, gdzie technicznie byłoby to wygodne.

Przykład

Sesja, która nie startuje, i dlaczego to jest poprawne zachowanie

Sytuacja

Scenariusz spotkania z wieloma uczestniczkami i uczestnikami, w którym transkrypcja miała wystartować z przeglądarki, a nagranie miało zostać zachowane. Sytuacja, w której psuje się większość narzędzi do transkrypcji: ktoś naciska „nagrywaj” zanim zgoda uczestniczek i uczestników zostanie gdziekolwiek odnotowana.

Co zbudowaliśmy

Umieściliśmy sprawdzanie zgody na ścieżce żądania, a nie na ekranie ostrzeżenia. Serwer szuka niewycofanego wiersza zgody dla bieżącej sesji, zanim przyjmie pierwszy fragment audio. Celowo opisałem też zachowanie awaryjne: jeśli baza danych przechowująca zgody nie odpowiada, żądanie jest odrzucane z 503, a nie przepuszczane. Sesje już zweryfikowane pozostają przez dziesięć minut w pamięci podręcznej, aby krótka awaria nie przerwała trwającego nagrania. Trasa emitująca tokeny do dostawcy została domyślnie zamknięta, z możliwością otwarcia tylko przez jawne ustawienie poza produkcją.

Co z tego wyszło

Bez odnotowanej zgody przechwycenie zwraca 451 z komunikatem po rumuńsku, a zdarzenie jest logowane wraz z sesją i przestrzenią roboczą. Zachowanie jest objęte testami uruchamianymi bez bazy danych, przez wstrzyknięcie sprawdzania. Zestaw backendu ma 37 testów; przy dzisiejszym uruchomieniu wszystkie przechodzą.

Czego nie mówi ten przypadek

Aplikacja nie jest opublikowana — działa u nas, nie ma strony, na której można się zapisać, a prawo do nagrywania konkretnej rozmowy pozostaje po stronie klienta: my wymuszamy je technicznie, nie nadajemy go. I jeszcze jedno ograniczenie: bramka sprawdza istnienie zgody, a nie jej jakość prawną. Jeśli tekst zgody jest źle napisany, kod zastosuje go wiernie.

Pytania

O co pytają ludzie, zanim zadzwonią

W jakich językach transkrybujecie?

Pracujemy z rumuńskim i rosyjskim, bo to są języki, w których pojawiają się nasze rzeczywiste problemy i które możemy sprawdzać na własnym materiale. Inne języki są technicznie możliwe przez tych samych dostawców, ale zanim coś obiecujemy, robimy próbę na Twoich nagraniach — język działa albo nie działa w zależności od audio, a nie od listy na stronie dostawcy.

Czy macie własny model rozpoznawania mowy w języku rumuńskim?

W badaniach, nie w produkcie, i ważne jest, by nie mylić tych dwóch rzeczy. Własny kierunek nie ma publicznej demonstracji, nie ma interfejsu programowania i nie ma telefonii, a pod względem dokładności rozpoznawania w rumuńskim nasze pomiary pokazują, że ustępujemy dużym komercyjnym systemom. Publikujemy to, bo to nasz wniosek, uzyskany na własnym zestawie testowym. Usługa, którą dziś sprzedajemy, działa na dostawcach, przez naszą bramkę.

Kto ma prawo nagrywać rozmowę i co robicie, jeśli go nie ma?

Prawo ustala się dla danej sytuacji, z klientem, przed instalacją — to nie jest coś, co możemy przenieść my. My je wymuszamy w kodzie: bez zarejestrowanej zgody dla bieżącej sesji serwer odrzuca przechwycenie z 451 i komunikatem po rumuńsku. Jeśli baza danych przechowująca zgody nie odpowiada, odrzuca także wtedy, z 503. Nie ma konfiguracji, która zamieni brak zgody w ciche przejście.

Czy mój klucz od dostawcy trafia do przeglądarki?

Nie. Strona prosi backend o jednorazowy token dla sesji transkrypcji, ważny domyślnie 900 sekund, i z nim otwiera połączenie. Klucz konta pozostaje na serwerze. Dodatkowo trasa emitująca tokeny jest domyślnie zamknięta i można ją otworzyć tylko przez jawne ustawienie poza produkcją, ponieważ to trasa, która zużywa pieniądze.

Jak dokładna jest transkrypcja?

To bardziej zależy od audio niż od modelu: mikrofon, nakładające się wypowiedzi, cyfry, nazwy własne, szum tła. Nie podajemy procentu, zanim nie usłyszymy Twojego materiału, bo procent wzięty z karty produktu nic nie mówi o Twoich spotkaniach. Robimy próbę na rzeczywistych nagraniach, z błędami wyłożonymi na stół — zwykle psują się cyfry i nazwy, nie zdania.

Czy tłumaczycie rozmowy w czasie rzeczywistym między operatorem a klientem?

Tak i już działa to produkcyjnie w jednym kierunku: kolega wpisuje odpowiedź po rumuńsku, a wiadomość trafia do klienta w jego języku. Zasady są w kodzie rygorystyczne — bez dodawania informacji, bez wymyślonych cen ani terminów, bez sprzeciwiania się operatorowi. Kierunek odwrotny, od klienta do operatora, dziś rozwiązuje się przez transkrypcję wiadomości głosowych; automatyczne tłumaczenie tekstu klienta do operatora nie jest wszędzie włączone i mówimy to przed, nie po.

Jakie formaty audio akceptujecie i co dostaję z powrotem?

Format jest rozpoznawany po zawartości pliku, a nie po rozszerzeniu — WAV, OGG, MP3 i M4A są obsługiwane jawnie, a wiadomości głosowe z kanałów komunikatorów zwykle trafiają jako OGG. Otrzymujesz transkrypt, analizę, jeśli jest wymagana, oraz wyeksportowane audio: WAV bez zależności, FLAC i MP3, jeśli `ffmpeg` istnieje na serwerze. Jeśli nie istnieje, serwer mówi to za pomocą dedykowanego kodu, a nie kończy się błędem ogólnym.

Czy używacie naszych nagrań do trenowania swoich modeli?

Nie. Ponadto nie używamy też wyjścia dostawców głosu do trenowania ani testowania konkurencyjnego modelu — ich warunki korzystania wyraźnie tego zabraniają, a my respektujemy je również w naszym własnym kierunku badawczym, tam, gdzie wygodnie byłoby tego nie robić.

Co się dzieje, gdy dostawca transkrypcji przestaje działać w środku spotkania?

Sesja zatrzymuje się z błędem, który nazywa przyczynę, a nie z pustym ekranem. Do analizy istnieje w kodzie uporządkowana lista zapasowych modeli, więc w tym przypadku niedostępność pogarsza jakość zamiast zatrzymywać przepływ. Dla rozpoznawania mowy w czasie rzeczywistym nie mamy automatycznej redundancji między dostawcami i to jest realne ograniczenie, a nie przeoczenie.

Na czym opierają się powyższe stwierdzenia (14 źródeł)
  1. Termenii furnizorului de voce interzic antrenarea sau testarea unui model concurent pe ieșirea lorhttps://elevenlabs.io/use-policy · 2026-09-06

13 z nich to kod i pliki z naszych repozytoriów. Nie publikujemy ich nazw ani numerów linii: razem, na jednej stronie, opisałoby to zbyt dokładnie, jak zbudowane są systemy, które nie należą tylko do nas. Przechodzimy je razem z Tobą, w repozytorium, na życzenie — weryfikacja pozostaje możliwa, tylko odbywa się w rozmowie.

Co chcesz, żeby działało lepiej?

Opowiedz nam o swoim procesie. Wspólnie ustalimy, co warto zbudować, co da się połączyć i jak sprawdzimy wynik.

Porozmawiajmy