Kebanyakan kelewatan dalam terjemahan langsung ialah tempoh menunggu: untuk strim, untuk perkataan seterusnya, untuk ayat. Satu-satunya bahagian yang anda kawal ialah mod kelewatan: kelewatan yang lebih rendah, atau revisi yang kurang.
Pendengar yang membaca terjemahan langsung melihat setiap baris beberapa saat selepas penceramah menuturkannya. Jurang itu bukan satu kelewatan sahaja, tetapi beberapa kelewatan yang terkumpul sepanjang satu rantaian, dan kebanyakannya ialah satu bentuk menunggu. Dengan memahami kelewatan mana yang mana, pilihan mod kelewatan menjadi mudah, dan pembangun yang membina pembaca tahu apa yang perlu dipaparkan, dan bila.
Sebagai penanda aras sebelum melihat nombor: jurukalam serentak manusia biasanya bercakap dua hingga empat saat di belakang penceramah. Jurukalam memanggil jurang ini ear-voice span, dan mereka mengendalikan bahasa yang kata kerjanya di hujung ayat bukan dengan menunggu kata kerja itu, tetapi dengan menjangkakannya, atau dengan memecahkan ayat kepada bahagian yang boleh berdiri sendiri. Kelewatan satu atau dua saat bukanlah kecacatan perisian; ia kira-kira apa yang dilakukan oleh jurukalam manusia yang sangat baik.
Setiap transkripsi langsung di VocalStack melalui peringkat yang sama, dalam susunan yang sama, dan setiap peringkat menunggu peringkat sebelumnya.
Teks bahasa asal sampai kepada pembaca hampir seiring dengan tuturan. Terjemahan mengekori satu atau dua saat kemudian, dan ayat yang dituturkan tiba selepas terjemahannya, itulah sebabnya klip suara sentiasa tiba paling akhir. Namun kesan paling awal rantaian ini kelihatan jauh sebelum sebarang suara: teks itu sendiri bergerak.
Perkara pertama yang disedari orang dalam transkrip langsung ialah perkataan terbaru bergerak. Satu frasa muncul, berubah, dan kemudian stabil. Itulah kerja peringkat draf, dan ia wujud atas sebab yang terpakai kepada setiap pengecam pertuturan.
Pengecam pertuturan menentukan satu perkataan dengan melihat apa yang datang selepasnya. "I scream" dan "ice cream" berbunyi sama sehingga perkataan seterusnya tiba, dan huruf "s" di hujung boleh tergolong pada perkataan ini atau yang berikutnya. Selagi tiada audio di sebelah kanan sesuatu perkataan, ejaannya ialah tekaan, maka perkataan terbaru dalam mana-mana transkrip langsung sentiasa yang paling kurang pasti. Draf hanyalah tekaan itu ditunjukkan lebih awal dan bukannya disembunyikan.
Setiap draf menggantikan sepenuhnya ekor langsung: perkataan yang didengar sejak komit terakhir, yang masih berubah. Komit adalah muktamad. Ia tidak pernah berubah, membawa masa pada peringkat perkataan, dan komit dinomborkan tanpa jurang supaya pembaca dapat tahu jika ada yang tertinggal.
Untuk pembangun, ini ialah satu peraturan yang API masa nyata tegaskan: paparkan setiap segmen yang telah dikomit, kemudian draf terkini selepasnya, dan kosongkan draf apabila komit tiba. Menambah draf dan bukannya menggantikannya menghasilkan teks yang berganda dan berkelip; komit hanya menghabiskan ekor itu. Tutorial WebSocket membina pembaca berdasarkan tepat-tepat perkara ini.
Bagi hos, teks yang bergerak ialah harga kelewatan yang rendah. Menunjukkan perkataan sebelum frasa selesai ialah yang menjadikan transkrip terasa langsung. Terjemahan pula tidak mampu mengambil helah itu, kerana sesuatu perkataan boleh ditekakan daripada separuh frasa, tetapi terjemahan tidak boleh.
Susunan perkataan ialah sebab terjemahan tidak dapat mengikuti draf. Kata kerja dalam bahasa Jerman mungkin berada di hujung klausanya, dan bahasa Jepun meletakkan kata kerja di akhir. Mana-mana penterjemah memerlukan keseluruhan klausa sebelum dapat menterjemahkannya dengan setia. Menterjemah perkataan demi perkataan memberi pendengar serpihan yang perlu dibaca semula apabila klausa tamat. Jurukalam sudah lama menunggu kata kerja dalam bahasa Jerman jauh sebelum perisian cuba melakukannya.
Oleh itu VocalStack menterjemah ayat, bukan segmen. Ayat dihidupkan secara lalai, dan dengan itu dihidupkan, pelayan menghimpunkan komit menjadi ayat dan menterjemah keseluruhannya. Semasa ayat masih terbuka, terjemahannya bersifat sementara; setelah ayat tertutup, terjemahan menjadi muktamad. Pembaca menyimpan satu entri bagi setiap ayat dan menggantikannya apabila kemas kini tiba.
Suara menunggu lebih lama lagi. Hanya ayat yang tertutup dituturkan, kerana ayat yang masih berubah akan disintesis semula pada setiap revisi. Ayat yang panjang dituturkan secara berkeping, supaya bahagian pertama boleh dimainkan sementara bahagian yang lain sedang disediakan.
Dengan ayat dimatikan, setiap komit mendapat bingkai terjemahannya sendiri. Laluan itu tidak menunggu apa-apa, tetapi ayat penuh jauh lebih mudah dibaca.
Semua tempoh menunggu ini diukur dari saat audio sampai ke VocalStack. Bagi banyak siaran, audio sudah pun lewat ketika ia tiba.
Apabila sumbernya ialah strim dan bukan mikrofon, audio sudah pun ketinggalan sebelum apa-apa ditranskripsikan. Ia tertinggal daripada tepi langsung, iaitu detik terbaru yang telah diterbitkan oleh strim.
Strim audio HTTP biasa, jenis yang kebanyakan stesen radio internet terbitkan, biasanya tertinggal satu hingga tiga saat. Pelayan menyimpan penimbal letupan: beberapa saat audio terkini, dihantar sekaligus supaya pemain pendengar baharu boleh bermula tanpa tersekat. Setiap pendengar, termasuk VocalStack, menyertai sejauh itu ke belakang. HLS lebih teruk: senarai main permulaannya meletakkan klien tiga segmen di belakang tepi langsung, yang dalam amalan bermakna beberapa saat hingga setengah minit bergantung pada panjang segmen. DASH piawai biasanya berada dalam julat yang sama dengan HLS; hanya varian kelewatan rendahnya yang jauh lebih pantas. Strim "langsung" sesebuah stesen mungkin boleh dikatakan langsung seperti sepucuk surat yang dikatakan terkini.
Angka-angka ini anggaran, dan ia milik strim, bukan transkripsi: tiada tetapan di pihak VocalStack yang dapat mengurangkannya. Jika saat-saat ini penting untuk sesuatu acara, suapkan audio ke peringkat itu daripada mikrofon atau pengekod dan bukannya strim awam. Kelewatan strim ditetapkan sebelum VocalStack mendengar sepatah perkataan; mod kelewatan ialah perkara yang sebenarnya boleh anda ubah.
Mod kelewatan melakukan satu perkara sahaja: ia menetapkan keseimbangan antara kelewatan dan ketepatan. Tetapan ini terletak di bawah Advanced apabila transkripsi langsung dicipta, dan pada tab Speed semasa ia berjalan. Di situ cip berbunyi AUTO, SPEED atau ACCURACY (Fast dipaparkan sebagai SPEED). Melalui API, session.update menukarnya di tengah strim.
Pertukarannya sama seperti yang dinyatakan oleh namanya. Fast menghantar teks lebih awal tetapi lebih banyak revisi; Accuracy mengambil sedikit masa lebih dan merevisi lebih sedikit. Penonton yang duduk dan membaca sari kata terjemahan jarang perasan satu saat tambahan, tetapi perasan perkataan yang terus berubah. Oleh itu Accuracy sering menjadi tetapan yang lebih mesra, selagi carta kelewatan kekal rata. Auto mendedahkan caranya: baris yang dipercepatkan untuk menutup jurang membawa lencana FAST MODE dalam transkrip hos, dengan nota bahawa ketepatan mungkin lebih rendah di situ.
Apa pun modnya, transkripsi mesti sudah sedia sebelum perkataan pertama, dan persediaan itu ialah satu-satunya kelewatan yang dibayar oleh rantaian ini hanya sekali.
Pada sesetengah pelan, transkripsi langsung mengambil masa beberapa saat untuk bermula. Berapa lama bergantung pada pelan: baris Start-up speed pada halaman harga meliputi permulaan sejuk sehingga 15 saat pada Bayar Ikut Guna hingga sentiasa panas pada Enterprise.
Melalui API, menunggu itu kelihatan sebagai bingkai session.loading semasa sesi bermula, kemudian session.ready; klien hanya menghantar audio selepas itu. Pendengar yang membuka pautan pada masa itu melihat "Live. The first line appears in a moment." Apabila transkripsi sudah berjalan, kelewatan ini sudah berlalu, dan satu-satunya soalan yang tinggal ialah berapa banyak kelewatan yang berbaki yang anda bawa.
Semasa transkripsi langsung berjalan, tab Speed hos menunjukkan hasil semua ini: jurang semasa antara penceramah dan teks, dengan cip mod di sebelahnya, dan carta jurang itu sepanjang rakaman dengan purata dan puncaknya. Dalam transkrip itu sendiri, baris yang sampai kepada pendengar lewat membawa lencana yang menyatakan bilangan saat antara masa ia dituturkan dan masa ia tiba.
Carta yang kekal rendah dan rata bermakna mod itu sesuai dengan audio. Carta yang menaik bermakna saluran paip semakin ketinggalan. Pada Accuracy, itu mungkin masanya untuk beralih ke Auto, yang menukarkan sedikit ketepatan dengan kelajuan sehingga jurang itu mengecil.
Pembangun mendapat satu nombor sebagai gantinya. Apabila sesi masa nyata berakhir, session.done membawa stats.realtimeFactor, iaitu jumlah audio yang ditranskripsikan dibahagi dengan masa yang digunakan untuk menranskripsikannya. Satu amaran tentang konvensyen: dalam literatur pengecaman pertuturan, real-time factor biasanya bermaksud sebaliknya, masa pemprosesan berbanding masa audio, dengan nilai yang lebih rendah lebih baik. VocalStack melaporkannya secara terbalik, jadi di sini nilai yang lebih tinggi lebih baik: sesi langsung berada hampir 1, dan di bawah 1 bermakna audio tiba lebih pantas daripada yang mampu ditranskripsikan oleh saluran paip.
Tiada satu pun saat ini misteri. Sebahagiannya milik strim, sebahagian lagi milik perkataan yang menunggu perkataan selepasnya, sebahagian milik ayat yang diperlukan oleh terjemahan, dan selebihnya milik mod kelewatan yang anda pilih. Rujukan API mempunyai butiran bingkai demi bingkai, dan demo di halaman utama menunjukkan rantaian ini berjalan.