Slušanje dok se govori i šta agent radi s otvorenim kanalom pozivaoca

Kako Dialogist agent nastavlja slušati dok govori, počinje odgovor unutar pauze i razlikuje upad u riječ od kašlja.

Istraživanja

98%odgovora pokreće jezični model prije kraja pauze

Na telefonskoj liniji oboje mogu govoriti istovremeno. Glasovni agent koji odgovara samo kad pozivalac šuti i gluh je dok govori jeste poludupleks, i zvuči kao voki-toki. Ova bilješka opisuje kako Dialogist agent nastavlja slušati dok govori. Nadovezuje se na raniju bilješku, Kako znamo da je pozivalac završio.

Brojke o latenciji potiču iz stvarnih telefonskih poziva (model kraja replike) i s test-standa za opterećenje s agentom za regrutaciju (rani start).

Brojke o latenciji iza ove bilješke.
Mjera Vrijednost
Replike pozivalaca u stvarnim pozivima koje je intonacija zatvorila prije tajmera 87%
Vrijeme vraćeno po replici tim ranim zatvaranjima, u prosjeku ≈ 0,3 s
Odgovori koji pokreću jezični model prije kraja pauze 98%
Ušteda vremena odgovora zahvaljujući ranom startu, od jednog poziva do 128 razgovora 89 do 235 ms
Isječci „aha“ reproducirani pozivaocu bez odobrenja osobe 0

Šta podrazumijevamo pod punim dupleksom

Agent je strujni pipeline, a svojstvo do kojeg nam je stalo je da kanal pozivaoca ostaje otvoren. Dok agent govori:

  • detekcija glasa nastavlja raditi na zvuku pozivaoca;
  • prepoznavanje ga nastavlja strujno obrađivati u okvirima od 20 ms;
  • agentov izlazni zvuk prolazi kroz mikser koji ga može stišati, zamutiti, pauzirati i nastaviti te miješati druge zvukove.

Odjeljci ispod opisuju šta agent radi s tim otvorenim kanalom.

Odlučivanje da je replika gotova

Tajmer tišine bira između dvije loše mogućnosti: čekati dovoljno dugo da bude siguran, pa svaki odgovor počinje kasno, ili reagovati na kratku pauzu i prekinuti ljude usred broja.

Agent čeka 192 ms, a zatim pita mali model je li rečenica zvučala završeno. Ako je model siguran, replika se odmah zatvara. Ako nije, agent nastavlja slušati, a duža tišina svejedno zatvara repliku da niko ne čeka beskonačno.

  • Presuda modela vrijedi od sljedećeg okvira zvuka od 32 ms.
  • U stvarnim pozivima (1.468 replika pozivalaca) model je rano zatvorio 87% replika, 95% njih na prvi pogled, i u prosjeku vratio oko 0,3 s po replici. U 96% pauza u kojima je pozivalac samo razmišljao, sačekao je.
  • Prvo posmatranje. Model ima tri režima po agentu: off, observe i commit. U režimu observe bilježi šta bi odlučio i ne mijenja ništa. Pragove podešavamo na stvarnim pozivima u režimu observe, a na commit prelazimo kad se zapis slaže s onim što su pozivaoci uradili.
  • Liste i brojevi su mjesta gdje najpažljivije tražimo prerana zatvaranja. Pozivalac koji diktira broj kartice zvuči završeno između grupa cifara.

Početak odgovora prije kraja pauze

Između posljednje riječi pozivaoca i zatvaranja replike postoji prozor od 200 do 400 ms. Prepoznavanje u pauzi napravi probni prolaz, pa je tekst obično već poznat.

Rani start koristi taj prozor. Kad je pauza dovoljno duga, a probni tekst dovoljno pouzdan, agent sastavi prompt koji bi sastavio nakon zatvaranja replike, s očekivanim odgovorom pozivaoca na vrhu, i pošalje ga jezičnom modelu. Model napiše prvu rečenicu dok je replika formalno još otvorena.

Rani zahtjev može samo čitati, što ga čini sigurnim:

  • ne upisuje ništa u historiju razgovora;
  • ne poziva sintezu govora;
  • ne izvršava alat i ne može završiti niti prespojiti poziv;
  • ako se replika zatvori istim tekstom, istim promptom i istom historijom, agent preuzima pripremljene rečenice. Ako se bilo šta razlikuje, agent odbacuje zahtjev i pokreće se uobičajeni put;
  • ako pozivalac ponovo počne govoriti ili upadne u riječ, agent otkazuje zahtjev i zatvara HTTP tok.

U testu opterećenja zahtjev je otišao prije odluke u 98% odgovora, u prosjeku 225 ms ranije pri 50 razgovora i 508 ms ranije pri 128. Rani start je skratio prosječno vrijeme odgovora za 89 ms s jednim razgovorom, za 189 ms pri 96 i za 235 ms pri 128.

Ušteda raste s opterećenjem: pod opterećenjem replika duže traje do zatvaranja, pa pripremljeni odgovor ima više vremena da bude spreman.

Upadi u riječ

Pozivaoci govore preko agenata. Agent u nekoliko desetina milisekundi odlučuje o dvije stvari: je li ovo uopće upad u riječ i je li dovoljno važan da se stane.

Dva načina otkrivanja

Upad potvrđen tekstom traži da je prepoznavanje proizvelo najmanje četiri slova teksta. Akustički upad traži da detekcija glasa čuje neprekinut govor, što je brže. Akustički režim ima vlastiti prag, odvojen od onoga koji otvara običnu repliku, jer je greška skuplja: pogrešno „replika otvorena“ košta prazan bafer, a pogrešan upad prekida agenta usred riječi.

Šta se ne računa

Akustički režim traži neprekinut govor iznad praga. Tastatura proizvodi mnogo kratkih naleta; brojač se resetuje na svakom razmaku među njima i nikad ne dosegne granicu. Govor ga drži bez prekida. Kašalj i goli „aha“ također se ne računaju.

Eho

U pozivima iz preglednika eho agentovog vlastitog glasa može doći do mikrofona. Agent ga prepoznaje kao eho, bez akustičke potvrde i s niskom pouzdanošću prepoznavanja, te završava svoju rečenicu.

Šta agent pamti

Agent u sljedećem promptu označi prekinut odgovor, pa model zna da pozivalac nije čuo sve. Po želji agent dobija i neizgovoreni ostatak odgovora i može ga nastaviti ili odbaciti.

Prekidač

Agent se može podesiti da uopće ne ustupa riječ, za tekstove koji se moraju pročitati u cijelosti.

Korak unazad prije zaustavljanja

Prekinuti na prvi zvuk je neljubazno kad je taj zvuk „da, da“. Kad pozivalac počne govoriti, agentov glas prvo ustukne i staje tek ako se govor pokaže kao upad u riječ.

  • Kad pozivalac počne govoriti, jačina se spušta. Po zadanim postavkama pada 15 dB u 150 ms, a glas se i zamuti: visoke frekvencije se spuštaju i uključuje se niskopropusni filter, pa spuštanje zvuči kao da se neko odmakao od telefona.
  • U režimu hold agent pauzira nakon otprilike jednog sloga (200 ms). U režimu duck nastavlja govoriti tiše.
  • Ako se govor pozivaoca računa kao upad u riječ, agent staje uz utišavanje od 30 ms. Ako se ne računa, glas se vraća u 300 ms.
  • Nakon holda agent čeka pola sekunde u slučaju da pozivalac ponovo progovori, pa nastavlja od najbližeg razmaka među slogovima (do 400 ms unazad), od početka rečenice ili od tačne tačke, šta god odgovara. Ako je pauza bila duga (1,5 s), vraća se na početak rečenice.
  • Ako se ni jedno ni drugo ne desi u 2,5 s, agent odlučuje hoće li stati ili vratiti glas.

Za svaku od ovih postavki postoji podešavanje po agentu, a agent kojem se ne smije upadati u riječ ne spušta jačinu.

Izgovaranje „aha“

Dok pozivalac dugo govori, tišina s druge strane zvuči kao prekinut poziv. Ljudi je popunjavaju malim glasovima.

Agent radi isto, s bankom kratkih potvrda: „aha“, „tako je“, „mm“. Isječci su unaprijed napravljeni agentovim vlastitim glasom, a osoba ih sasluša i odobri prije nego što se ijedan smije koristiti. Ako glas nema odobrenu banku, funkcija se za taj poziv sama isključuje i agent ne reproducira nijedan nepregledan isječak.

Agent reproducira jedan isječak:

  • unutar pauze u govoru pozivaoca (250 do 600 ms tišine) ili po tajmeru;
  • tek nakon što pozivalac govori 2,5 s;
  • s vjerovatnoćom (zadano 0,6), najviše jednom u 3 s i 3 puta po replici;
  • nikad isti isječak kao jedan od posljednja četiri;
  • ne kad model kraja replike procijeni vjerovatnoću „završeno“ iznad 0,4.

Agent reproducirani isječak izostavlja iz historije razgovora, a kad se njegov eho vrati linijom iz pozivaočeve slušalice, uklanja ga iz transkripta. Sve ovo traži prozor pauze: replika mora ostati otvorena duže od pauza koje agent traži. Ako postavke ne ostavljaju mjesta, funkcija se za taj poziv sama isključuje, a agentova kartica u Prompt Studiju prikazuje upozorenje.

Ostatak sobe

  • Pozadina. Opcioni zvuk ureda ili sale za sastanke, ekvalizovan, miješa se od prve sekunde poziva. Agent ga ne računa kao svoj glas za tajmere tišine i upade u riječ.
  • Tišina. Ponovni upit, a zatim ljubazan pozdrav, mjereno od kraja reprodukcije na liniji, a ne od kraja sinteze.
  • Pouzdanost. Agent prosljeđuje nesigurnost prepoznavača jezičnom modelu kao napomenu uz repliku, broj ili oznake na pojedinim riječima. Prompt modelu kaže da pita ponovo umjesto da pogađa ime ili cifru.
  • Pozdrav. Agent generiše pozdrav i šalje ga strujno po rečenicama tokom kašnjenja zvonjenja, pa počinje čim se linija javi.

Kako to testiramo

  • Observe prije commita za model kraja replike, kao gore.
  • Prompt Studio ima karticu poziva: pozovete agenta iz preglednika i čujete isti pozdrav, postupanje s tišinom i prespajanja kao na telefonu.
  • Polygon probe provjeravaju ponašanje u simuliranim razgovorima („je li agent pitao ponovo nakon čudnog odgovora?“). Kako ocjenjujemo razgovor opisuje metodu, a stranica Tehnologije opisuje Polygon.
  • Test opterećenja provjerava da sve ovo drži kad radi 100 poziva: pogledajte Jedan Server Unit pod opterećenjem.

Nastavite čitati

Sljedeći korak

Osigurajte rani pristup Dialogist glasovnim agentima: timove s liste čekanja pozivamo kako se oslobađa kapacitet.

Pridružite se listi čekanja

Timove uključujemo postepeno. Poslat ćemo vam e-mail kada se vaše mjesto oslobodi.