Већина кашњења у живом преводу је чекање: на ток, на следећу реч, на реченицу. Један део на који можете да утичете јесте режим латенције: мање кашњења или мање ревизија.
Слушалац који прати живи превод види сваки ред неколико секунди након што га је говорник изговорио. Тај размак није једно кашњење него више њих, нанизаних један за другим дуж ланца, и већина њих је облик чекања. Кад знате које чекање је које, режим латенције је лак избор, а програмер који прави читач зна шта да прикаже и када.
Користан оквир за поређење пре бројки: људски симултани преводилац обично говори две до четири секунде иза говорника. Преводиоци тај размак зову распон уво–глас (ear-voice span), а с језицима у којима глагол стоји на крају не носе се тако што чекају глагол, него тако што га предвиђају или реченицу деле на делове који могу да стоје сами. Секунда или две кашњења нису мана софтвера; отприлике је то оно што уради врло добар човек.
Свака живе транскрипција на VocalStack-у пролази кроз исте фазе, истим редом, и свака чека ону пре себе.
Текст на изворном језику стиже до читаоца скоро онако како се говори. Превод касни секунду или две, а изговорена реченица долази после свог превода, зато гласовни клип увек стигне последњи. Први видљиви ефекат ланца, ипак, долази далеко пре било каквог гласа: сам текст се помера.
Прва ствар коју људи примете у живом транскрипту јесте да се најновије речи померају. Фраза се појави, промени и слегне. То је фаза нацрта на делу, а постоји из разлога који важи за сваки систем за препознавање говора.
Препознавач одређује реч гледајући шта долази после ње. „I scream” и „ice cream” звуче исто све док не стигне следећа реч; завршно „s” може припадати овој речи или следећој. Док са десне стране речи нема звука, њен правопис је погодак, па су најновије речи у сваком живом транскрипту уједно и најнесигурније. Нацрт је у суштини тај погодак приказан рано, уместо да буде скривен.
Сваки нацрт потпуно замењује живи реп: речи чуте од последње потврде, које се и даље мењају. Потврда је коначна. Никад се не мења, носи временске ознаке по речима, а потврде су нумерисане без празнина, па читач може да види да ли је нешто пропустио.
За програмера ово је једино правило на које realtime API инсистира: прикажи сваки потврђени сегмент, па онда најновији нацрт после њих, и очисти нацрт кад стигне потврда. Ако се нацрти дописују уместо да се замењују, добија се удвостручен, треперећи текст; потврда једноставно потроши реп. WebSocket tutorial гради читач управо на томе.
За домаћина померање текста је цена ниског кашњења. Приказивање речи пре него што је фраза завршена оно је што транскрипт чини живим. Превод, међутим, не може да приушти исти трик, јер реч може да се погоди из пола фразе, а превод не може.
Редослед речи је разлог зашто превод не може да прати нацрт. Немачки глагол може стајати на крају своје клаузе, а јапански ставља глагол на крај. Сваки преводилац треба цео исказ да би га верно превео. Превођење реч по реч читаоцу даје одломке које мора да одгонетне кад се клауза затвори. Немачки је преводиоце терао да чекају глагол давно пре него што је софтвер покушао исто.
Зато VocalStack преводи реченице, а не сегменте. Реченице су подразумевано укључене, и кад су укључене, сервер састави потврде у реченицу и преведе је целу. Док је реченица отворена, њен превод је привремен; кад се затвори, превод је коначан. Читач држи један унос по реченици и замењује га како стижу ажурирања.
Глас чека још дуже. Говори се само затворена реченица, јер би реченица која се још мења била поново синтетизована при свакој измени. Дуга реченица се изговара у деловима, па први може да се пусти док се остали праве.
Са искљученим реченицама свака потврда добија свој оквир превода. Тај пут ништа не чека, али целе реченице се много боље читају.
Сва ова чекања мере се од тренутка када звук стигне до VocalStack-а. За многе преносе звук је већ каснио кад је стигао.
Кад је извор ток, а не микрофон, звук већ касни пре него што се било шта транскрибује. Заостаје за живом ивицом, најновијим тренутком који је ток објавио.
Обичан HTTP аудио ток, какав објављује већина интернет радио станица, обично касни једну до три секунде. Сервер држи бафер за изненадне налете: неколико секунди недавног звука, послатог одједном да плејер новог слушаоца може да почне без застоја. Сваки слушалац, укључујући и VocalStack, почиње тако далеко у прошлости. HLS је гори: његове плејлисте стартују клијента три сегмента иза живе ивице, што у пракси значи неколико секунди до пола минута, у зависности од дужине сегмента. Стандардни DASH обично пада у исти опсег као HLS; само његова варијанта с малим кашњењем иде знатно испод. „Уживо” ток станице може бити уживо онако као што је писмо актуелно.
Ове цифре су приближне и припадају току, а не транскрипцији: ниједно подешавање на страни VocalStack-а не може да их врати. Ако те секунде за догађај значе нешто, прослеђујте звук са микрофона или енкодера, а не са јавног тока. Кашњење тока је фиксирано пре него што VocalStack чује и једну реч; режим латенције је оно што заиста можете да померите.
Режим латенције ради једну ствар: подешава равнотежу између кашњења и тачности. Подешавање се налази под Advanced кад се живе транскрипција креира, а на картици Speed док она ради. Тамо чип гласи AUTO, SPEED или ACCURACY (Fast се појављује као SPEED). Преко API-ја, session.update мења режим током тока.
Размена је онаква каква имена сугеришу. Fast извлачи текст раније, али ревидира више њега; Accuracy је мало спорији и ревидира мање. Публика која седи и чита преведене титлове ретко примети додатну секунду, али примети речи које се стално мењају. Зато је Accuracy често љубазнија поставка, све док график кашњења остаје раван. Auto показује шта ради: ред који је убрзао да затвори јаз носи значку FAST MODE у домаћиновом транскрипту, с напоменом да тачност тамо може бити нижа.
Ма који режим да је у питању, транскрипција мора бити спремна пре прве речи, а припрема је једно кашњење које ланац плаћа само једном.
На неким плановима живе транскрипције се покрећу неколико секунди. Колико траје зависи од плана: ред Start-up speed на страници цена иде од хладног старта до 15 секунди на pay as you go до увек топлог на Enterprise-у.
Преко API-ја чекање се види као session.loading оквири док сесија стартује, а затим session.ready; клијент шаље звук тек после тога. Слушалац који у међувремену отвори линк види „Live. The first line appears in a moment.” Кад транскрипција ради, ово кашњење је иза вас, а остаје само питање колико од преосталог кашњења носите.
Док живе транскрипције раде, картица Speed домаћина показује шта све то збраја: тренутни јаз између говорника и текста, са чипом режима поред њега, и график тог јаза кроз снимак, с просеком и врхом. У самој транскрипцији, ред који је стигао слушаоцима касно носи значку са бројем секунди између тренутка када је изговорен и тренутка када је стигао.
График који остаје низак и раван значи да режим одговара звуку. График који расте значи да цевовод заостаје. Код Accuracy-ја то може бити тренутак да пређете на Auto, који жртвује део тачности за брзину док јаз не нестане.
Програмери добијају један број. Кад се realtime сесија заврши, session.done носи stats.realtimeFactor, однос између пренесеног аудија и времена утрошеног на транскрибовање. Упозорење о конвенцији: у литератури о препознавању говора real-time factor обично значи обрнуто, време обраде подељено аудио временом, где је мања вредност боља. VocalStack га приказује обрнуто, тако да је овде већа вредност боља: жива сесија је у близини 1, а испод 1 значи да је звук стигао брже него што цевовод може да га транскрибује.
Ниједна од ових секунди није мистериозна. Неке припадају току, неке речи која чека реч после себе, неке реченици коју превод треба, а остатак режиму латенције који сте изабрали. API reference садржи детаљ оквир по оквир, а демо на почетној страници показује ланац у раду.