சியோலில் உள்ள ஒரு விநியோகஸ்தருடனோ அல்லது சாவோ பாலோவில் உள்ள ஒரு வாடிக்கையாளருடனோ வீடியோ அழைப்பில் இணைவதையும், உங்கள் அடுத்த அறையில் இருக்கும் ஒரு சக ஊழியரிடம் பேசுவது போலவே பேசுவதையும் கற்பனை செய்து பாருங்கள். மியூட் (mute) செய்யப்பட்ட நிலையில் காத்திருக்கும் மொழிபெயர்ப்பாளர் தேவையில்லை. சாட் பாக்ஸில் தட்டச்சு செய்ய கீபோர்டு முன்னால் குனிந்து அமர்ந்திருக்க வேண்டிய அவசியமில்லை. நிகழ்நேர AI குரல் மொழிபெயர்ப்பு (Real-time AI voice translation) இப்போது இதைச் சாத்தியமாக்குகிறது. இது மனிதத் தொடர்பை மாற்றுவதற்குப் பதிலாக, மனிதர்களைப் பிரித்து வைக்கும் தடைகளை நீக்குகிறது. ஆனால், ஒரு இயல்பான உரையாடல் போன்ற உணர்வைத் தரும் அமைப்பை உருவாக்குவது உண்மையிலேயே கடினமானது. நீங்கள் வெறும் வார்த்தைகளை மட்டும் மாற்றவில்லை; மென்பொருளுக்குள் மனிதப் பேச்சின் ஓட்டத்தை நீங்கள் மறுசீரமைக்கிறீர்கள்.
பைப்லைனின் ஐந்து அடுக்குகள் (The Five Layers of the Pipeline)
ஒரு செயல்படும் அமைப்பு ஐந்து தனித்துவமான பகுதிகளாகப் பிரிக்கப்பட்டுள்ளது. இதில் ஒன்றை நீங்கள் தவிர்த்தாலோ அல்லது பலவீனப்படுத்தினாலோ, அந்த முழு மாயையும் உடைந்துவிடும்.
Voice Communication Layer என்பது அடித்தளம். இது மைக்ரோஃபோன் கேப்சர், இரைச்சல் ஒடுக்கம் (noise suppression), எதிரொலி நீக்கம் (echo cancellation) மற்றும் இணையம் வழியாகத் தரவுப் பரிமாற்றம் (packet transmission) ஆகியவற்றைச் கையாள்கிறது. இதை ஒரு டிஜிட்டல் தொலைபேசி இணைப்பாகக் கருதலாம். இந்த அடுக்கு தரவுகளைத் தவறவிடுவதோ அல்லது தடையை (jitter) ஏற்படுத்துவதோ இருந்தால், மீதமுள்ள பைப்லைன் பயனற்றதாகிவிடும். பெரும்பாலான குழுக்கள் இங்கு WebRTC-ஐப் பயன்படுத்துகிறார்கள், ஏனெனில் இது பிணைய-டு-பிணைய (peer-to-peer) இணைப்புகளைக் கையாள்கிறது மற்றும் இதில் உள்ளமைக்கப்பட்ட ஒலிப் பாதுகாப்பு அம்சங்கள் உள்ளன.
அடுத்து Speech-to-Text (STT) வருகிறது. வரும் ஒலியை எவ்வளவு விரைவாக முடியுமோ அவ்வளவு விரைவாக எழுத்துக்களாக மாற்ற வேண்டும். Streaming STT என்ஜின்கள் அமைதிக்காகக் காத்திருப்பதில்லை. அவை ஒலிகள் வரும்போதே பகுதித் தொகுப்புகளை (partial transcripts) வெளியிடுகின்றன. இந்தச் செயல்பாடு மிகவும் அவசியமானது. உங்கள் STT மாட்யூல் ஒரு இடைவெளிக்காகக் காத்திருந்தால், நீங்கள் ஏற்கனவே விலைமதிப்பற்ற மில்லி விநாடிகளை இழந்துவிட்டீர்கள் என்று அர்த்தம். நவீன ஸ்ட்ரீமிங் முறைகள் வரும் ஆடியோவைத் தொடர்ச்சியாகச் செயலாக்கி, கூடுதல் சூழல் (context) கிடைக்கும்போது அவற்றின் கணிப்புகளைத் திருத்தி அமைக்கின்றன.
Machine Translation (MT) நடுவில் அமைகிறது. இது மூல உரையை எடுத்து இலக்கு மொழியில் மாற்றியமைக்கிறது. ஆரம்பகால அமைப்புகள் சொற்றொடர்களை மாற்றுவதைத் தவிர வேறொன்றும் செய்யவில்லை. தற்போதைய transformer-அடிப்படையிலான மாதிரிகள் தொடரியல் (syntax) மற்றும் நீண்ட தூரத் தொடர்புகளை (long-range dependencies) சிறப்பாகக் கையாள்கின்றன, ஆனால் அவை இன்னும் கவனமான ஒருங்கிணைப்பு தேவைப்படுகின்றன. பேசுபவர் தனது கருத்தை முடிப்பதற்கு முன்பே வாக்கியத் துண்டுகளை மொழிபெயர்க்கத் தொடங்குவதற்கு ஏதுவாக, ஸ்ட்ரீமிங் உள்ளீட்டை ஏற்கும் ஒரு MT மாட்யூல் உங்களுக்குத் தேவை.
பிறகு Text-to-Speech (TTS) உள்ளது. இங்கேயே உங்கள் அமைப்பு தனது குரலைக் கண்டறிகிறது. பழைய concatenative TTS முறைகள் ஒரு ஜிபிஎஸ் (GPS) அறிவிப்பைப் போலக் கேட்டன. Neural TTS மாதிரிகள் ஸ்பெக்ட்ரோகிராம்களை (spectrograms) அல்லது நேரடி அலைவடிவங்களை (raw waveforms) கணிப்பதன் மூலம் இந்த விளையாட்டை மாற்றின. அவை ஏறி இறங்கும் மற்றும் மூச்சுவிடும் உணர்வைத் தரும் குரல்களை உருவாக்குகின்றன. அவை உணர்ச்சிகரமான தன்மையையும் (emotional coloring) தக்கவைக்க முடியும், ஏனெனில் ஒரு ரோபோ போன்ற உணர்ச்சியற்ற குரலில் சொல்லப்படும் மன்னிப்பு, அறியாமல் கேலி செய்வது போலத் தோன்றலாம்.
இறுதியாக, Audio Streaming அடுக்கு மொழிபெயர்க்கப்பட்ட பேச்சைத் திரும்பக் கேட்பவருக்கு அனுப்புகிறது. இங்கும் நேர மேலாண்மை (timing) முக்கியமானது. தொகுக்கப்பட்ட ஆடியோ (synthesized audio) நெட்வொர்க் நேரத்துடன் ஒத்துப்போக வேண்டும்; இல்லையெனில் அது முன்னதாகவே வந்து எதிரொலியை உருவாக்கலாம் அல்லது தாமதமாக வந்து கேட்பவரை அமைதியில் தவிக்க விடலாம்.
தாமதப் பிரச்சினை (The Latency Problem)
தாமதம் (Latency) உங்கள் மிகப்பெரிய எதிரி. மனித உரையாடல்கள் மிகக் குறுகிய இடைவெளிகளை மட்டுமே தாங்கும். ஒரு பயனர் முழு வாக்கியத்தையும் முடிக்கும் வரை அமைப்பு மொழிபெயர்க்கத் தொடங்கவில்லை என்றால், அந்த உரையாடல் மெதுவாகவும் துண்டிக்கப்பட்டும் இருக்கும். மக்கள் ஒருவருக்கொருவர் குறுக்கிட்டுப் பேசத் தொடங்குவார்கள், அல்லது மோசமாகச் சொன்னால், வாக்-டீ-டாக் (walkie-talkie) பேச்சைப் போலத் திக்கித் திக்கிப் பேசுவார்கள். உங்கள் இலக்கு, ஒட்டுமொத்தத் தாமதம் ஒரு வினாடிக்கும் குறைவாக இருக்க வேண்டும்.
அந்த இலக்கை அடைய, நீங்கள் ஆடியோவைச் சிறிய துண்டுகளாக (small chunks) செயலாக்க வேண்டும். துண்டுகளின் அளவை 20 மில்லி விநாடிகள் முதல் 100 மில்லி விநாடிகள் வரை வைத்திருக்கவும். இருபது மில்லி விநாடிகள் என்பது தோராயமாக ஒரு மெய்யெழுத்தின் (consonant) கால அளவாகும். நூறு மில்லி விநாடிகள் என்பது ஒரு சொல்லின் பாதியளவு மற்றும் அரைச் சொல்லாகும். இந்தத் துண்டுகளை ஒரு ஸ்ட்ரீமிங் பைப்லைனுக்குள் செலுத்துவதன் மூலம் STT, மொழிபெயர்ப்பு மற்றும் TTS ஆகிய அனைத்தும் பகுதித் தகவல்களைக் கொண்டு செயல்படும். எந்தவொரு விஷயமும் ஒரு வாக்கியத்தின் முடிவிற்காகக் காத்திருக்கக் கூடாது.
ஒவ்வொரு நிலையிலும் ஸ்ட்ரீமிங் ஆடியோ செயலாக்கத்தைப் பயன்படுத்தவும். அதாவது, STT என்ஜின் தொடர்ச்சியாகப் பகுதித் தொகுப்புகளை வெளியிடுகிறது, MT என்ஜின் ஒரு தெளிவான வாக்கியத்தை உருவாக்கத் தேவையான வார்த்தைகளைப் பெற்றவுடன் துண்டுகளை மொழிபெயர்க்கிறது, மேலும் TTS என்ஜின் வாக்கியத்தின் இரண்டாம் பாதியைக் குறியீடாக்கும் (decoding) போதே முதல் பாதியைத் பேசத் தொடங்குகிறது.
ஒரு வினாடிக்கும் குறைவான தாமதத்தைப் பெறுவதற்கு ஒவ்வொரு நிலையிலும் (capture, encode, transmit, queue, process, synthesize, and playback) ஒழுக்கம் தேவை. ஒவ்வொரு நிலையிலும் தேவையற்ற பஃபரிங் (buffering) முறைகளை நீக்கவும். உதாரணமாக, மிகவும் அவசியமென்றால் ஒழிய, அரை விநாடி முன்னரே தரவுகளைக் கணிக்கத் தேவைப்படும் இரைச்சல் நீக்க அல்காரிதம்களை (noise-removal algorithms)த் தவிர்க்கவும். நேரடி PCM-க்கு பதிலாக Opus போன்ற திறமையான கம்ப்ரஷன் புரோட்டோகால்களைப் பயன்படுத்தவும். நெட்வொர்க் பயணங்கள் குறுகியதாக இருக்க, அழைப்பாளர்கள் இருவருக்கும் புவியியல் ரீதியாக அருகாமையில் உள்ள எட்ஜ் சர்வர்களில் (edge servers) இன்ஃபரன்ஸை (inference) இயக்கவும்.
AI மாதிரிகள் இன்னும் எங்கே சிரமப்படுகின்றன
நகலெடுத்து ஒட்டும் (clipboard) மொழிபெயர்ப்பாளர்கள் எதிர்கொள்ள வேண்டிய அவசியம் இல்லாத சில குறிப்பிட்ட சவால்களை AI கொண்டுவருகிறது.
சூழல் (Context) என்பது உண்மையிலேயே கடினமானது. ஆங்கிலத்தில், 'duck' என்ற சொல் ஒரு விலங்காகவோ, தலையைத் தாழ்த்திச் செயல்படும் ஒரு வினைச்சொல்லாகவோ அல்லது சில வட்டார வழக்குகளில் அன்பாக அழைக்கப்படும் சொல்லாகவோ இருக்கலாம். ஒரு வார்த்தையைத் தனித்து மட்டும் பார்க்கும் ஒரு இயந்திரம் தவறாகக் கணிக்கக்கூடும். ஸ்ட்ரீமிங் பெருக்கம் (Streaming amplification) இதை இன்னும் கடினமாக்குகிறது, ஏனெனில் முழு வாக்கியமும் அதன் பொருளைத் தெளிவுபடுத்துவதற்கு முன்பே சிஸ்டம் ஒரு வார்த்தையைத் தீர்மானிக்க வேண்டும். சில குழுக்கள் STT இயந்திரத்தில் சிறிய rollback windows-களை உருவாக்குவதன் மூலம் இதைச் சரிசெய்கிறார்கள், இதன் மூலம் பிந்தைய ஆடியோ விளக்கத்தை மாற்றினால் டிரான்ஸ்கிரிப்டை (transcript) திருத்த அனுமதிக்கலாம்.
குரலின் இயல்புத்தன்மை (Voice naturalness) பெரும்பாலான பொறியாளர்கள் எதிர்பார்ப்பதை விட முக்கியமானது. மக்களுக்கு ரோபோ போன்ற ஒலிகள் பிடிக்காது. மனித பேச்சிலிருந்து prosody முறைகளை நகலெடுப்பதன் மூலம், நரம்பியல் TTS (Neural TTS) மாதிரிகள் குரலில் உணர்ச்சிகளைத் தக்கவைக்கின்றன. மூலப் பேச்சாளர் உற்சாகமாகவோ அல்லது கவலையாகவோ இருந்தால், மொழிபெயர்க்கப்பட்ட வெளியீடு வானிலை அறிக்கையைப் போல ஒவ்வொரு வரியையும் சொல்லாமல், அந்த ஆற்றலையும் கொண்டு இருக்க வேண்டும். மூல ஆடியோவிலிருந்து நிறுத்தற்குறி குறிப்புகள் (punctuation cues) அல்லது தொனி குறிகளை (intonation markers) TTS தொகுப்பிற்கு (module) அனுப்புவது அந்த மனிதத் தன்மையைப் பாதுகாக்க உதவுகிறது.
உரையாடல்கள் குழப்பமானவை. மக்கள் ஒருவரை ஒருவர் குறுக்கிடுகிறார்கள், பின்வாங்குகிறார்கள், "uh" என்று சொல்கிறார்கள் மற்றும் முடிக்காத வாக்கியங்களைத் தொடங்குகிறார்கள். இத்தகைய இடைவெளிகளைத் புத்திசாலித்தனமாக கையாள உங்கள் சிஸ்டத்திற்கு Voice Activity Detection (VAD) தேவை. ஒரு நல்ல VAD, உண்மையான பேச்சிற்கும் பின்னணி இரைச்சலுக்கும் இடையிலான வேறுபாட்டைப் பிரித்தறியும், அதேபோல் ஒரு பேச்சின் இடையில் வரும் சிறிய இடைவெடிக்கும், பேச்சின் உண்மையான முடிவிற்கும் இடையிலான வேறுபாத்தையும் பிரித்தறியும். VAD மிகவும் விரைவாகச் செயல்பட்டால் (too trigger-happy), அது பதில்களின் தொடக்கத்தை வெட்டிவிடும். அது மிகவும் எச்சரிக்கையாக இருந்தால், அது அமைதியை மொழிபெயர்ப்பு இயந்திரத்திற்கு அனுப்பி, கணினித் திறனை (compute) வீணாக்குவதோடு உரையாடலில் விசித்திரமான இடைவெளிகளையும் ஏற்படுத்தும்.
அளவிடுதல் மற்றும் பாதுகாப்பு (Scale and Security)
ஆரம்பக் கட்டக் கட்டமைப்பிலிருந்தே (architectural sketch) அளவிடுதலுக்காக (scale) உருவாக்குங்கள். ஒரே அழைப்பைத் தடையின்றி மொழிபெயர்க்கும் ஒரு monolith அமைப்பு, ஆயிரக்கணக்கான ஒரே நேரத்தில் நடக்கும் உரையாடல்களின் சுமையால் சரிந்துவிடும். ஒவ்வொரு நிலையையும் தனித்தனியாக அளவிட நீங்கள் மைக்ரோசர்வீஸ்களை (microservices) பயன்படுத்தலாம். ஒரு மொழி மற்றொன்றை விட அதிக ஒலிப்புச் சிக்கலைக் (phonetic complexity) கொண்டிருப்பதால் உங்கள் TTS வரிசை (queue) தேங்கினால், STT கிளஸ்டரைத் தொடாமல் நீங்கள் கூடுதல் TTS பணியாளர்களை (workers) உருவாக்கலாம். உங்கள் MT சேவை ஒரு குறிப்பிட்ட மொழி ஜோடிக்குச் சிக்கலை ஏற்படுத்தினால், அந்தத் தனிப் பகுதியை மட்டும் தனிமைப்படுத்தி அளவிடலாம்.
பாதுகாப்பு என்பது சமரசத்திற்கு அப்பாற்பட்டது. குரல் தரவு என்பது உயிரியல் அடையாளத் தரவு (biometric) மற்றும் மிகவும் தனிப்பட்ட ஒன்று. பரிமாற்றத்தின் போது மூல ஆடியோவைப் பாதுகாக்க end-to-end encryption-ஐப் பயன்படுத்தவும். மாதிரி மேம்பாட்டிற்காக (model improvement) பயனரின் தெளிவான சம்மதம் போன்ற ஒரு குறிப்பிட்ட, வெளிப்படையான காரணம் இல்லையென்றால், மூல குரல் தரவைச் சேமிக்க வேண்டாம். அப்படியிருந்தாலும், பதிவுகளை என்க்ரிப்ட் செய்து சேமித்து, ஒரு கடுமையான கால அட்டவணையின்படி அவற்றை நீக்கிவிடவும். அழைப்பின் உள்ளடக்கத்தை கசியவிடும் அல்லது ரகசியமாக உரையாடல்களைச் சேமித்து வைக்கும் ஒரு குரல் மொழிபெயர்ப்பு அமைப்பு, பயனரின் நம்பிக்கையை நிரந்தரமாகச் சிதைத்துவிடும்.
உருவாக்கத் தொடங்குங்கள்
டெவலப்பர்கள் இப்போது திறந்த மூல (open-source) STT மாதிரிகள், கிளவுட் சார்ந்த MT API-கள் மற்றும் சில ஆண்டுகளுக்கு முன்பு கண்டறிய முடியாத முன் பயிற்சி பெற்ற நரம்பியல் TTS செக்பாயிண்ட்கள் (pretrained neural TTS checkpoints) ஆகியவற்றைப் பெற முடியும். தேவையான பாகங்கள் உள்ளன. கட்டமைப்பு புரிந்து கொள்ளப்பட்டுள்ளது.
சிறிய அளவில் தொடங்குங்கள். மைக்ரோஃபோன் ஆடியோவின் இரண்டு வினாடிகளை ஒரு ஸ்ட்ரீமிங் STT இயந்திரத்தின் வழியாக அனுப்பவும்.
