Sehemu kubwa ya ucheleweshaji wa tafsiri mubashara ni kusubiri: mtiririko, neno linalofuata, sentensi. Sehemu moja unayoweza kuidhibiti ni hali ya ucheleweshaji: ucheleweshaji mdogo, au marekebisho machache.
Msikilizaji anayesoma tafsiri mubashara huona kila mstari sekunde chache baada ya msemaji kuutamka. Pengo hilo si ucheleweshaji mmoja bali kadhaa, yaliyojumlishwa kwenye mnyororo mmoja, na mengi yao ni aina fulani ya kusubiri. Kujua ni kusubiri gani ni kipi hufanya uchaguzi wa hali ya ucheleweshaji uwe rahisi, na humwambia msanidi anayejenga msomaji nini cha kuonyesha, na lini.
Kabla ya namba, kipimo kimoja muhimu: mkalimani wa binadamu wa wakati mmoja kwa kawaida huzungumza sekunde mbili hadi nne nyuma ya msemaji. Wakalimani huita pengo hilo pengo la sikio-sauti. Hawasubiri kitenzi kwa lugha zinazokiweka mwishoni; badala yake wanakitabiri, au wanagawanya sentensi kuwa vipande vinavyosimama vyenyewe. Sekunde moja au mbili za kuchelewa si kasoro ya programu; ni takriban kile ambacho mzungumzaji mzuri sana wa binadamu hufanya.
Kila unukuzi mubashara kwenye VocalStack hupitia hatua zilezile, kwa mpangilio uleule, na kila hatua husubiri ile iliyoitangulia.
Maandishi ya lugha asilia hufika kwa msomaji karibu wakati yanaposemwa. Tafsiri hufuata sekunde moja au mbili baadaye, na sentensi inayosomwa kwa sauti huja baada ya tafsiri yake, ndiyo maana klipu ya sauti huwasili mwisho kila wakati. Athari ya kwanza inayoonekana ya mnyororo, hata hivyo, hutokea muda mrefu kabla ya sauti yoyote: maandishi yenyewe yanasogea.
Jambo la kwanza ambalo watu huliona kwenye nakala mubashara ni kwamba maneno ya hivi punde yanasogea. Neno huonekana, hubadilika, kisha hutulia. Hiyo ni hatua ya rasimu ikifanya kazi, na ipo kwa sababu inayotumika kwa kila kitambuzi cha usemi.
Kitambuzi cha usemi huamua neno kwa kuangalia kinachofuata. Maneno "I scream" na "ice cream" hutamkwa sawa hadi neno linalofuata lifike; herufi "s" ya mwisho inaweza kuwa ya neno hili au la pili. Hadi kuwe na sauti upande wa kulia wa neno, tahajia yake ni makisio, kwa hiyo maneno ya hivi punde kwenye nakala yoyote mubashara daima ndiyo yasiyo na uhakika zaidi. Rasimu ni makisio hayo tu, yanayoonyeshwa mapema badala ya kufichwa.
Kila rasimu hubadilisha kabisa mkia hai: maneno yaliyosikika tangu commit ya mwisho, ambayo bado yanabadilika. Commit ni ya mwisho. Haibadiliki kamwe, hubeba muda wa kila neno, na commit zinahesabiwa bila mapengo ili msomaji aweze kujua kama amekosa moja.
Kwa msanidi, hii ndiyo kanuni moja ambayo API ya wakati halisi inasisitiza: onyesha kila sehemu iliyothibitishwa, kisha rasimu ya hivi punde baada yake, na ufute rasimu commit inapofika. Kuongeza rasimu badala ya kuzibadilisha hutoa maandishi yaliyorudiwa na yanayomulika; commit humaliza mkia wenyewe. Mafunzo ya WebSocket yanajenga msomaji kwa kutumia kanuni hii hasa.
Kwa mwenyeji, maandishi kusogea ndiyo gharama ya ucheleweshaji mdogo. Kuonyesha maneno kabla sentensi haijakamilika ndicho kinachofanya nakala ihisi mubashara. Tafsiri, hata hivyo, haiwezi kumudu hila hiyo, kwa sababu neno linaweza kukisiwa kutoka nusu ya sentensi, lakini tafsiri haiwezi.
Mpangilio wa maneno ndio sababu tafsiri haiwezi kwenda sambamba na rasimu. Kitenzi cha Kijerumani kinaweza kukaa mwishoni mwa kifungu, na Kijapani huweka kitenzi mwisho. Mtafsiri yeyote anahitaji kifungu kizima kabla ya kukitoa kwa uaminifu. Kutafsiri neno kwa neno humpa msikilizaji vipande ambavyo vingepaswa kusomwa upya kifungu kinapofungwa. Wakalimani wamekuwa wakisubiri kitenzi cha Kijerumani tangu muda mrefu kabla programu kujaribu jambo hilo.
Kwa hiyo VocalStack hutafsiri sentensi, si sehemu. Sentensi zimewashwa kwa chaguo-msingi, na zikiwa zimewashwa, seva hukusanya commit kuwa sentensi na kutafsiri sentensi nzima. Sentensi ikiwa wazi, tafsiri yake ni ya muda; ikishafungwa, tafsiri ni ya mwisho. Msomaji anashikilia ingizo moja kwa kila sentensi na kulibadilisha masasisho yanapofika.
Usemi unasubiri zaidi bado. Ni sentensi iliyofungwa pekee inayosemwa, kwa sababu sentensi bado inayobadilika ingetengenezwa upya kwa sauti kila inapobadilishwa. Sentensi ndefu hutamkwa kwa vipande, ili kipande cha kwanza kiweze kuchezwa huku vilivyobaki vikitengenezwa.
Sentensi zikizimwa, kila commit hupata fremu yake ya tafsiri. Njia hiyo haisubiri chochote, lakini sentensi kamili husomeka vizuri zaidi.
Ucheleweshaji wote huu hupimwa kuanzia wakati sauti inapofika VocalStack. Kwa matangazo mengi, sauti ilikuwa tayari imechelewa ilipofika.
Chanzo kinapokuwa mtiririko badala ya maikrofoni, sauti tayari iko nyuma kabla haijanukuliwa. Inachelewa nyuma ya ukingo wa moja kwa moja, yaani wakati mpya zaidi ambao mtiririko umeuchapisha.
Mtiririko wa sauti wa HTTP wa kawaida, aina ambayo vituo vingi vya redio mtandaoni huchapisha, kwa kawaida huchelewa sekunde moja hadi tatu nyuma. Seva huweka bafa ya mlipuko: sekunde chache za sauti ya hivi karibuni, zinazotumwa kwa mkupuo mmoja ili kicheza cha msikilizaji mpya kianze bila kukwama. Kila msikilizaji, pamoja na VocalStack, hujiunga umbali huo nyuma. HLS ni mbaya zaidi: orodha zake za kucheza humwanzishia mteja nyuma ya sehemu tatu kutoka ukingo wa moja kwa moja, jambo ambalo kwa vitendo linamaanisha sekunde kadhaa hadi nusu dakika, kutegemea urefu wa sehemu. DASH ya kawaida kwa kawaida huangukia katika safu sawa na HLS; ni toleo lake la ucheleweshaji mdogo pekee linalokaribia kuwa chini zaidi. Mtiririko wa "mubashara" wa kituo unaweza kuwa mubashara kwa namna ile ile ambayo barua inaweza kuwa "ya sasa".
Namba hizi ni makadirio, na zinahusu mtiririko, si unukuzi: hakuna mpangilio upande wa VocalStack unaoweza kuzirejesha. Ikiwa sekunde hizo zina umuhimu kwa tukio, lisha hatua hiyo sauti kutoka maikrofoni au kisimbaji badala ya mtiririko wa umma. Ucheleweshaji wa mtiririko huamuliwa kabla VocalStack haijasikia neno lolote; hali ya ucheleweshaji ndiyo unayoweza kuisogeza kweli.
Hali ya ucheleweshaji hufanya jambo moja: huweka usawa kati ya ucheleweshaji na usahihi. Inapatikana chini ya Advanced wakati unukuzi mubashara unapoundwa, na kwenye kichupo cha Speed wakati unaendelea. Hapo chip inasomeka AUTO, SPEED au ACCURACY (Fast huonekana kama SPEED). Kupitia API, session.update hubadilisha hali katikati ya mtiririko.
Biashara ni ile ambayo majina yanaashiria. Fast hutoa maandishi mapema zaidi lakini hurekebisha zaidi yake; Accuracy huchukua muda kidogo zaidi na hurekebisha kidogo. Hadhira iliyoketi ikisoma manukuu ya tafsiri mara chache huona sekunde ya ziada, lakini huona maneno yanayoendelea kubadilika. Kwa hiyo Accuracy mara nyingi ndiyo mpangilio mwema zaidi, mradi chati ya ucheleweshaji inabaki tambarare. Auto huonyesha hatua yake: mstari ulioharakishwa ili kuziba pengo hubeba beji ya FAST MODE kwenye nakala ya mwenyeji, pamoja na onyo kwamba usahihi unaweza kuwa chini hapo.
Kwa hali yoyote, unukuzi lazima uwe tayari kabla ya neno la kwanza, na kuutayarisha ndicho ucheleweshaji pekee ambao mnyororo unaulipa mara moja tu.
Kwenye baadhi ya mipango, unukuzi mubashara huchukua sekunde chache kuanza. Muda hutegemea mpango: safu ya Start-up speed kwenye ukurasa wa bei inaanzia kuanza kwa baridi kwa hadi sekunde 15 kwenye Lipa Unapotumia, hadi kuwa tayari daima kwenye Enterprise.
Kupitia API, kusubiri huonekana kama fremu za session.loading wakati kipindi kinaanza, kisha session.ready; mteja hutuma sauti baada ya hapo pekee. Msikilizaji anayefungua kiungo wakati huo anaona "Mubashara. Mstari wa kwanza utaonekana hivi punde." Mara unukuzi unapoendeshwa, ucheleweshaji huu umekwisha, na swali pekee lililobaki ni ni kiasi gani cha ucheleweshaji uliosalia unachobeba.
Unukuzi mubashara unapoendelea, kichupo cha Speed cha mwenyeji kinaonyesha jumla ya haya yote: pengo la sasa kati ya msemaji na maandishi, pamoja na chip ya hali kando yake, na chati ya pengo hilo kwenye rekodi nzima, pamoja na wastani wake na kilele. Katika nakala yenyewe, mstari uliowafikia wasikilizaji ukiwa umechelewa hubeba beji inayoonyesha idadi ya sekunde kati ya wakati ulipotamkwa na wakati ulipofika.
Chati inayobaki chini na tambarare inamaanisha hali inafaa sauti. Chati inayopanda inamaanisha mnyororo unazidi kuchelewa. Kwenye Accuracy, huo unaweza kuwa wakati wa kuhamia Auto, ambayo hubadilisha usahihi kidogo kwa kasi hadi pengo lifungwe.
Wasanidi hupata namba moja badala yake. Kipindi cha wakati halisi kinapomalizika, session.done hubeba stats.realtimeFactor, yaani sauti iliyonukuliwa ikigawanywa kwa muda uliotumika kuinukuu. Onyo moja la kanuni: katika fasihi ya utambuzi wa usemi, real-time factor kwa kawaida humaanisha kinyume chake, yaani muda wa usindikaji ukigawanywa kwa muda wa sauti, ambapo chini ni bora. VocalStack huripoti kinyume, kwa hiyo hapa juu ni bora zaidi: kipindi mubashara huwa karibu na 1, na chini ya 1 kunamaanisha sauti ilifika kwa kasi kuliko mnyororo ungeweza kuinukuu.
Hakuna hata moja ya sekunde hizi ni fumbo. Baadhi ni za mtiririko, baadhi ni za neno linalosubiri neno linalofuata, baadhi ni za sentensi ambayo tafsiri inaihitaji, na zilizobaki ni za hali ya ucheleweshaji uliyoichagua. Marejeo ya API yana maelezo ya fremu moja moja, na onyesho kwenye ukurasa wa nyumbani linaonyesha mnyororo mzima ukifanya kazi.