Skip to main content
Diaryzacja mówców w czasie rzeczywistym na dużą skalę

Diaryzacja mówców w czasie rzeczywistym na dużą skalę

July 20, 2025

9

min read

Inżynieria

Przebieg diaryzacji mówców
Rysunek 1: rozdzielanie strumieni audio w czasie rzeczywistym

Problem „cocktail party”

Ludzie świetnie skupiają się na jednym głosie w hałaśliwym pomieszczeniu. Komputery mają z tym trudność.
W jednokanałowym połączeniu VoIP (typowym dla starszej telefonii) konsultant i klient są zmieszani w jeden strumień.

Aby zbudować agenta AI, który wie, kiedy przerwać, musisz wiedzieć, kto mówi.

Architektura

1. Embedding na poziomie ramki

Dzielimy dźwięk na okna po 500 ms i przepuszczamy je przez lekki koder (SpeechBrain ECAPA-TDNN).
Wynik: wektor 192-wymiarowy opisujący „barwę” tego wycinka.

2. Architektura hybrydowa

Odeszliśmy od diaryzacji wykonywanej wyłącznie w aplikacji (Pyannote) na rzecz podejścia hybrydowego:

  1. Diaryzacja zewnętrzna: pobieramy wstępnie zdiaryzowane segmenty z wysokoprzepustowych API (takich jak Google speech-to-text lub OpenAI).
  2. Weryfikacja wewnętrzna: lokalnie uruchamiamy naszą 192-wymiarową weryfikację ECAPA-TDNN, aby „sprawdzić ponownie” i powiązać tożsamości ze znanymi profilami głosu.

3. Ograniczenia opóźnień

API w chmurze zajmują się mapą „kto i kiedy mówił?”.
IdentityCall zajmuje się weryfikacją „czy to konsultant X?”.

  • Budżet: 50ms czasu przetwarzania na ramkę na weryfikację.
  • Optymalizacja: uruchamiamy koder w ONNX Runtime na GPU, skwantyzowany do INT8.

Obsługa nakładania się mowy

Najtrudniejsza część to „nakładająca się mowa” (około 10-15% połączenia).
Standardowe modele wybierają „najgłośniejszego” mówcę.
Używamy diaryzacji wieloetykietowej, przypisując dwie etykiety mówców do jednego przedziału czasu, jeśli embedding sugeruje mieszaninę.

Podsumowanie

Dobra diaryzacja to warunek wstępny dobrej transkrypcji. Jeśli przypiszesz „Dzień dobry” konsultanta klientowi, cały Twój kontekst startuje z błędem.

Tags:

DiaryzacjaPrzetwarzanie dźwiękuUczenie maszynoweCzas rzeczywisty