நேரலை மொழிபெயர்ப்பின் தாமதத்தில் பெரும்பகுதி காத்திருப்புதான்: ஸ்ட்ரீமுக்காக, அடுத்த சொல்லுக்காக, வாக்கியத்துக்காக. உங்கள் கட்டுப்பாட்டில் உள்ள ஒரே பகுதி தாமத முறை: குறைந்த தாமதம், அல்லது குறைந்த திருத்தங்கள்.
பார்வையாளர் ஒருவர் நேரலை மொழிபெயர்ப்பைப் படிக்கும்போது, பேச்சாளர் சொன்ன ஒவ்வொரு வரியையும் சில நொடிகள் கழித்தே பார்க்கிறார். அந்த இடைவெளி ஒரே தாமதம் அல்ல; ஒரு சங்கிலியில் ஒன்றன் பின் ஒன்றாகச் சேர்ந்த பல தாமதங்கள், அவற்றில் பெரும்பாலானவை ஒருவகைக் காத்திருப்பே. எந்தக் காத்திருப்பு எது என்பதைத் தெரிந்துகொண்டால் தாமத முறையைத் தேர்ந்தெடுப்பது எளிது; வாசகரை உருவாக்கும் டெவலப்பர் எதை, எப்போது காட்ட வேண்டும் என்பதையும் அது காட்டும்.
எண்களுக்கு முன் ஒரு அளவுகோல்: மனித நேர்முக மொழிபெயர்ப்பாளர் பொதுவாகப் பேச்சாளரை விட இரண்டு முதல் நான்கு வினாடிகள் பின்னால் பேசுவார். மொழிபெயர்ப்பாளர்கள் இந்த இடைவெளியை "காது-குரல் இடைவெளி" என்று அழைக்கிறார்கள். வினைச்சொல் இறுதியில் வரும் மொழிகளில் அவர்கள் வினைச்சொல் வரும் வரை காத்திருப்பதில்லை; அதை முன்கூட்டியே ஊகிப்பார்கள், அல்லது வாக்கியத்தைத் தனித்து நிற்கக்கூடிய துண்டுகளாகப் பிரிப்பார்கள். ஒன்று அல்லது இரண்டு வினாடி தாமதம் மென்பொருளின் குறை அல்ல; ஒரு மிகச் சிறந்த மனிதர் செய்வதும் அதுதான்.
VocalStack-இல் நடக்கும் ஒவ்வொரு நேரலை டிரான்ஸ்கிரிப்ஷனும் ஒரே நிலைகளைக் கடந்து, அதே வரிசையில் செல்கிறது; ஒவ்வொரு நிலையும் அதற்கு முந்தையதற்காகக் காத்திருக்கிறது.
மூல மொழி உரை பேசப்படும்போதே வாசகரைச் சென்றடைகிறது. மொழிபெயர்ப்பு ஒன்று அல்லது இரண்டு வினாடி பின்னால் வருகிறது; பேசப்பட்ட வாக்கியம் அதன் மொழிபெயர்ப்புக்குப் பின்னரே வருகிறது. அதனால்தான் குரல் கிளிப் எப்போதும் கடைசியில் வருகிறது. ஆனால் சங்கிலியின் முதல் தெரியும் விளைவு குரலுக்கு வெகு முன்னதாகவே வருகிறது: உரையே நகர்கிறது.
நேரலைப் படியெடுப்பில் மக்கள் முதலில் கவனிப்பது புதிய சொற்கள் நகர்வதை. ஒரு சொற்றொடர் தோன்றி, மாறி, பின்னர் நிலைபெறுகிறது. இது வரைவு நிலையின் வேலை; எல்லா பேச்சு அறிதல் கருவிகளுக்கும் பொருந்தும் ஒரு காரணத்துக்காக அது உள்ளது.
ஒரு பேச்சு அறிதல் கருவி ஒரு சொல்லை, அதற்குப் பின் வருவதைப் பார்த்தே உறுதிசெய்கிறது. "I scream" மற்றும் "ice cream" அடுத்த சொல் வரும் வரை ஒரே மாதிரி ஒலிக்கும்; ஒரு பின்னொட்டு "s" இந்தச் சொல்லுக்கு உரியதா அடுத்ததுக்கு உரியதா என்பது தெரியாது. ஒரு சொல்லின் வலப்புறம் ஒலி வரும் வரை அதன் எழுத்துவடிவம் ஊகம்தான்; எனவே எந்த நேரலைப் படியெடுப்பிலும் புதிய சொற்களே மிகக் குறைவாக உறுதியானவை. வரைவு என்பது அந்த ஊகத்தை மறைக்காமல் முன்கூட்டியே காட்டுவதே.
ஒவ்வொரு வரைவும் கடைசி உறுதிசெய்தலுக்குப் பிறகு கேட்கப்பட்ட சொற்களான நேரலை வாலை முழுவதுமாக மாற்றுகிறது; அவை இன்னும் மாறிக்கொண்டிருக்கின்றன. உறுதிசெய்தல் நிரந்தரமானது. அது ஒருபோதும் மாறாது, சொல்-நிலை நேரக்குறிகளைக் கொண்டிருக்கும், மேலும் உறுதிசெய்தல்கள் இடைவெளியின்றி எண்ணப்படுவதால் ஒரு வாசகர் ஒன்றைத் தவறவிட்டால் அதைக் கண்டறிய முடியும்.
டெவலப்பருக்கு, realtime API வலியுறுத்தும் ஒரே விதி இதுதான்: ஒவ்வொரு உறுதிசெய்யப்பட்ட பகுதியையும் காட்டு, அவற்றுக்குப் பின் கடைசி வரைவைக் காட்டு, உறுதிசெய்தல் வரும்போது வரைவை அழித்துவிடு. வரைவுகளை இணைத்துக்கொண்டே போனால் நகல் உரை, மின்னும் உரை உருவாகும்; உறுதிசெய்தல் வால் பகுதியை உட்கொண்டுவிடும். WebSocket பயிற்சி இதே விதியைப் பின்பற்றி ஒரு வாசகரை உருவாக்குகிறது.
ஒரு ஹோஸ்டைப் பொறுத்தவரை, உரை நகர்வது குறைந்த தாமதத்தின் விலை. வாக்கியம் முடிவதற்கு முன்பே சொற்களைக் காட்டுவதுதான் படியெடுப்பை நேரலையாக உணர வைக்கிறது. ஆனால் மொழிபெயர்ப்பால் அந்த தந்திரத்தைச் செய்ய முடியாது, ஏனெனில் பாதி வாக்கியத்திலிருந்து ஒரு சொல்லை ஊகிக்கலாம்; ஆனால் மொழிபெயர்ப்பை ஊகிக்க முடியாது.
சொல் வரிசையே மொழிபெயர்ப்பு வரைவின் வேகத்துக்கு ஈடுகொடுக்க முடியாததற்குக் காரணம். ஜெர்மன் மொழியில் வினைச்சொல் உட்பிரிவின் இறுதியில் இருக்கலாம்; ஜப்பானிய மொழி வினைச்சொல்லை இறுதியில் வைக்கிறது. எந்த மொழிபெயர்ப்பாளருக்கும் உட்பிரிவு முழுவதும் தேவை, அதை உண்மையாக மொழிபெயர்க்க. சொல்லுக்குச் சொல் மொழிபெயர்த்தால் உட்பிரிவு முடியும்போது கேட்பவருக்குத் துண்டுத் துண்டான வாக்கியங்கள் கிடைக்கும், அவற்றை மீண்டும் அர்த்தப்படுத்த வேண்டும். மென்பொருள் முயல்வதற்கு வெகு காலம் முன்பிருந்தே ஜெர்மன் மொழிபெயர்ப்பாளர்கள் வினைச்சொல்லுக்காகக் காத்திருந்திருக்கிறார்கள்.
அதனால் VocalStack பிரிவுகளை அல்ல, வாக்கியங்களையே மொழிபெயர்க்கிறது. வாக்கியங்கள் இயல்பாகவே இயக்கத்தில் உள்ளன; அவை இயங்கும்போது, சேவையகம் உறுதிசெய்தல்களை ஒரு வாக்கியமாக இணைத்து முழு வாக்கியத்தையும் மொழிபெயர்க்கிறது. வாக்கியம் திறந்திருக்கும்போது அதன் மொழிபெயர்ப்பு தற்காலிகமானது; அது மூடியதும் மொழிபெயர்ப்பு இறுதியாகிறது. வாசகர் ஒவ்வொரு வாக்கியத்துக்கும் ஒரு உள்ளீட்டை வைத்திருந்து, புதுப்பிப்புகள் வரும்போது அதை மாற்றுகிறார்.
பேச்சு இன்னும் அதிக நேரம் காத்திருக்கும். மூடிய வாக்கியம் மட்டுமே பேசப்படும்; இன்னும் மாறிக்கொண்டிருக்கும் வாக்கியம் ஒவ்வொரு திருத்தத்திலும் மீண்டும் செயற்கையாக உருவாக்கப்படும். நீண்ட வாக்கியம் துண்டுகளாக வாசிக்கப்படும், அதனால் மற்றவை உருவாகும்போதே முதல் துண்டு இயங்கத் தொடங்கலாம்.
வாக்கியங்கள் அணைக்கப்பட்டிருந்தால், ஒவ்வொரு உறுதிசெய்தலுக்கும் அதற்கே உரிய மொழிபெயர்ப்புச் சட்டம் கிடைக்கும். அந்தப் பாதை எதற்காகவும் காத்திருப்பதில்லை; ஆனால் முழு வாக்கியங்கள் படிக்க மிகச் சிறந்தவை.
இந்த எல்லாக் காத்திருப்புகளும் ஆடியோ VocalStack-ஐ அடைந்த கணத்திலிருந்து அளவிடப்படுகின்றன. பல ஒளிபரப்புகளுக்கு, அது அங்கே சேரும்போதே ஆடியோ ஏற்கனவே தாமதமாகியிருந்தது.
ஒலிவாங்கிக்குப் பதிலாக ஒரு ஸ்ட்ரீம் மூலமாக இருக்கும்போது, எதுவும் படியெடுக்கப்படுவதற்கு முன்பே ஆடியோ ஏற்கனவே பின்தங்கியிருக்கும். அது ஸ்ட்ரீம் வெளியிட்ட புதிய கணமான நேரடி விளிம்பை விட பின்னால் இருக்கும்.
பெரும்பாலான இணைய வானொலி நிலையங்கள் வெளியிடும் சாதாரண HTTP ஆடியோ ஸ்ட்ரீம் பொதுவாக ஒன்று முதல் மூன்று வினாடி பின்னால் ஓடும். சேவையகம் ஒரு burst buffer வைத்திருக்கும்: சில வினாடி சமீபத்திய ஆடியோ, ஒரே தடவையில் அனுப்பப்படும், அதனால் புதிய கேட்பவரின் பிளேயர் தடையின்றித் தொடங்க முடியும். VocalStack உட்பட ஒவ்வொரு கேட்பவரும் அவ்வளவு பின்னால் இணைகிறார். HLS இன்னும் மோசம்: அதன் playlist ஒரு கிளையண்டை நேரடி விளிம்பிலிருந்து மூன்று segment பின்னால் தொடங்க வைக்கும்; நடைமுறையில் அது segment நீளத்தைப் பொறுத்து பல வினாடிகள் முதல் அரை நிமிடம் வரை ஆகும். நிலையான DASH பொதுவாக HLS போன்ற வரம்பிலேயே இருக்கும்; அதன் குறைந்த-தாமத வகை மட்டுமே அதை விடக் குறைவாக வரும். ஒரு நிலையத்தின் "நேரலை" ஸ்ட்ரீம், கடிதம் "தற்போதையது" என்பது போலத்தான் நேரலையாக இருக்கிறது.
இந்த எண்கள் தோராயமானவை, அவை ஸ்ட்ரீமுக்குச் சொந்தமானவை, படியெடுப்புக்கு அல்ல: VocalStack-இன் பக்கத்திலுள்ள எந்த அமைப்பும் அவற்றை மீட்க முடியாது. அந்த வினாடிகள் ஒரு நிகழ்வுக்கு முக்கியமாக இருந்தால், பொது ஸ்ட்ரீமுக்குப் பதிலாக ஒரு ஒலிவாங்கியிலிருந்தோ ஒரு என்கோடரிலிருந்தோ ஆடியோவை அளியுங்கள். ஸ்ட்ரீம் தாமதம் VocalStack ஒரு சொல்லைக் கேட்பதற்கு முன்பே நிர்ணயிக்கப்படுகிறது; நீங்கள் உண்மையில் நகர்த்தக்கூடியது தாமத முறை மட்டுமே.
தாமத முறை ஒரே ஒரு வேலை செய்கிறது: தாமதத்துக்கும் துல்லியத்துக்கும் இடையிலான சமநிலையை அமைக்கிறது. நேரலை டிரான்ஸ்கிரிப்ஷன் உருவாக்கும்போது அமைப்பு Advanced-இன் கீழ் இருக்கிறது; அது இயங்கும்போது Speed தாவலில் இருக்கிறது. அங்கே சிப் AUTO, SPEED அல்லது ACCURACY என்று காட்டும் (Fast, SPEED ஆகத் தோன்றும்). API வழியாக session.update ஓடும் ஸ்ட்ரீமின் நடுவில் அதை மாற்றும்.
பெயர்கள் சுட்டும் வர்த்தகம்தான் இது. Fast உரையை விரைவில் வெளியே கொண்டுவரும், ஆனால் அதிகம் திருத்தும்; Accuracy சற்று அதிக நேரம் எடுத்து குறைவாகத் திருத்தும். அமர்ந்து மொழிபெயர்ப்பு வசனங்களைப் படிக்கும் பார்வையாளர் கூடுதல் ஒரு வினாடியை அரிதாகவே கவனிப்பார்; ஆனால் தொடர்ந்து மாறும் சொற்களைக் கவனிப்பார். அதனால் தாமத வரைபடம் தட்டையாக இருக்கும் வரை Accuracy பெரும்பாலும் கனிவான அமைப்பு. Auto தன் நிலையைக் காட்டுகிறது: இடைவெளியை மூட வேகப்படுத்திய வரிக்கு ஹோஸ்டின் படியெடுப்பில் FAST MODE பேட்ஜ் இருக்கும்; அங்கே துல்லியம் குறைவாக இருக்கலாம் என்ற குறிப்பும் இருக்கும்.
முறை எதுவாக இருந்தாலும், முதல் சொல்லுக்கு முன் டிரான்ஸ்கிரிப்ஷன் தயாராக இருக்க வேண்டும்; அதைத் தயார்செய்வதுதான் சங்கிலி ஒரே ஒரு முறை மட்டும் செலுத்தும் தாமதம்.
சில திட்டங்களில் நேரலை டிரான்ஸ்கிரிப்ஷன் தொடங்க சில வினாடிகள் ஆகும். எவ்வளவு நேரம் என்பது திட்டத்தைப் பொறுத்தது: விலைப் பக்கத்தில் உள்ள தொடக்க வேகம் வரிசை, Pay as you go-வில் 15 வினாடி வரை குளிர் தொடக்கத்திலிருந்து, Enterprise-இல் எப்போதும் சூடாக இருப்பது வரை செல்கிறது.
API வழியாக, தொடக்கத்தின்போது காத்திருப்பு session.loading சட்டங்களாகத் தெரியும்; பின்னர் session.ready வரும்; அதுவரை கிளையண்ட் ஆடியோ அனுப்பாது. அதற்குள் இணைப்பைத் திறக்கும் கேட்பவர் "நேரலை. முதல் வரி சிறிது நேரத்தில் தோன்றும்" என்பதைப் பார்க்கிறார். டிரான்ஸ்கிரிப்ஷன் இயங்கத் தொடங்கியதும், இந்தத் தாமதம் பின்னால் போய்விடும்; மீதமுள்ள தாமதத்தில் எவ்வளவு சுமக்கிறீர்கள் என்பதே மீதக் கேள்வி.
நேரலை டிரான்ஸ்கிரிப்ஷன் ஓடும்போது, ஹோஸ்டின் Speed தாவல் இவை அனைத்தும் சேர்ந்து என்ன ஆகின்றன என்பதைக் காட்டுகிறது: பேச்சாளருக்கும் உரைக்கும் இடையிலான தற்போதைய இடைவெளி, அருகில் முறைச் சிப்புடன்; பதிவு முழுவதும் அந்த இடைவெளியின் வரைபடம், அதன் சராசரி மற்றும் உச்சத்துடன். டிரான்ஸ்கிரிப்டிலேயே, கேட்பவர்களை தாமதமாகச் சென்றடைந்த வரியில், அது பேசப்பட்டதற்கும் வந்ததற்கும் இடையே எத்தனை வினாடி என்பதைக் காட்டும் பேட்ஜ் இருக்கும்.
வரைபடம் தாழ்வாகவும் தட்டையாகவும் இருந்தால் முறை ஒலிக்கு ஏற்றது. மேலேறும் வரைபடம் பைப்லைன் பின்தங்குவதைக் குறிக்கிறது. Accuracy-இல் அது ஏற்படும்போது, இடைவெளி மூடும் வரை சிறிது துல்லியத்தைப் பகரமாகக் கொடுத்து வேகத்தை அதிகரிக்கும் Auto-வுக்கு மாறும் நேரம் இதுவாக இருக்கலாம்.
டெவலப்பர்களுக்கு அதற்குப் பதிலாக ஒரே எண் கிடைக்கும். நேரலை அமர்வு முடியும்போது, session.done stats.realtimeFactor கொண்டிருக்கும்: படியெடுத்த ஆடியோவின் நேரத்தை, அதைப் படியெடுக்கச் செலவழித்த நேரத்தால் வகுத்தது. ஒரு மாநாட்டு எச்சரிக்கை: பேச்சு அறிதல் இலக்கியத்தில் real-time factor பொதுவாக அதன் தலைகீழைக் குறிக்கும், அதாவது செயலாக்க நேரம் ஆடியோ நேரத்தால் வகுக்கப்பட்டது, அங்கே குறைவாக இருப்பதே நல்லது. VocalStack அதை எதிர்மறையாகக் காட்டுகிறது, அதனால் இங்கே அதிகமாக இருப்பதே நல்லது: நேரலை அமர்வு 1-ஐ ஒட்டி இருக்கும், 1-க்குக் கீழே இருந்தால் ஆடியோ படியெடுக்கக்கூடியதை விட வேகமாக வந்துவிட்டது என்று பொருள்.
இந்த வினாடிகள் எதுவும் மர்மமானவை அல்ல. சில ஸ்ட்ரீமுக்குச் சொந்தமானவை, சில தனக்குப் பின் வரும் சொல்லுக்காகக் காத்திருக்கும் ஒரு சொல்லுக்கு, சில மொழிபெயர்ப்புக்குத் தேவையான வாக்கியத்துக்கு, மீதமுள்ளவை நீங்கள் தேர்ந்தெடுத்த தாமத முறைக்கு. API குறிப்பு சட்டம்-சட்டமான விவரங்களைத் தருகிறது; முகப்புப் பக்கத்தில் உள்ள டெமோ இந்தச் சங்கிலி இயங்குவதைக் காட்டுகிறது.