Skip to main content
Kalbėtojų diarizacija realiu laiku dideliu mastu

Kalbėtojų diarizacija realiu laiku dideliu mastu

July 20, 2025

9

min read

Engineering

Kalbėtojų diarizacijos garso banga
1 pav.: garso srautų atskyrimas realiu laiku

„Kokteilių vakarėlio” problema

Žmonės puikiai geba susikoncentruoti į vieną balsą triukšmingoje patalpoje. Kompiuteriams tai sunku.
Vienkanaliame VoIP skambutyje (įprastame senesnėje telefonijoje) agentas ir klientas sumaišomi į vieną srautą.

Kad sukurtumėte DI agentą, kuris žinotų, kada pertraukti, turite žinoti, kas kalba.

Architektūra

1. Kadro lygmens embeddingas

Garsą suskaidome į 500 ms langus ir juos leidžiame per lengvą koduotoją (SpeechBrain ECAPA-TDNN).
Rezultatas: 192 dimensijų vektorius, apibūdinantis to fragmento „tembrą”.

2. Hibridinė architektūra

Nutolome nuo grynai vidinės diarizacijos (Pyannote) link hibridinio požiūrio:

  1. Išorinė diarizacija: priimame iš anksto diarizuotus segmentus iš didelio pralaidumo API (pvz., Google speech-to-text ar OpenAI).
  2. Vidinė verifikacija: lokaliai vykdome savo 192 dimensijų ECAPA-TDNN verifikaciją, kad „dar kartą patikrintume” ir susietume tapatybes su žinomais balso profiliais.

3. Delsos apribojimai

Debesijos API tvarko „kas kada kalbėjo?” žemėlapį.
„IdentityCall” tvarko „ar tai agentas X?” verifikaciją.

  • Biudžetas: 50 ms apdorojimo laiko vienam kadrui verifikacijai.
  • Optimizavimas: koduotoją vykdome ONNX Runtime aplinkoje GPU, kvantuotą iki INT8.

Persidengimo tvarkymas

Sunkiausia dalis yra „persidengianti kalba” (maždaug 10–15 % skambučio).
Standartiniai modeliai renkasi „garsiausią” kalbėtoją.
Mes naudojame daugiaženklę diarizaciją, priskiriančią dvi kalbėtojų žymes tam pačiam laiko intervalui, jei embeddingas rodo mišinį.

Išvada

Gera diarizacija yra geros transkripcijos prielaida. Jei agento „Labas” priskirsite klientui, visas jūsų kontekstas pradeda griūti.

Tags:

DiarizationAudio ProcessingMachine LearningReal-time