Hebu wazia unajiunga na simu ya video na msambazaji aliye Seoul au mteja aliye São Paulo na unazungumza vilevile unavyozungumza na mfanyakazi mwenzako aliye chumba cha jirani. Hakuna mkalimani anayesubiri akiwa amewekwa 'mute'. Hakuna mtu aliyepinda juu ya kibodi akibofya kwenye sanduku la mazungumzo. Tafsiri ya sauti ya AI ya wakati halisi (real-time) inafanya jambo hili liwezekane sasa hivi. Badala ya kuchukua nafasi ya mawasiliano ya kibinadamu, inaondoa vikwazo vinavyowatenganisha watu. Lakini kujenga mfumo unaohisi kama mazungumzo ya kawaida ni kazi ngumu kweli. Haufanyi ubadilishaji wa maneno tu. Unajenga upya mtiririko wa mazungumzo ya binadamu ndani ya programu.

Tabaka Tano za Mtiririko (Pipeline)

Mfumo unaofanya kazi umegawanyika katika sehemu tano tofauti. Ukiruka au kudhoofisha moja, dhana nzima inaporomoka.

Tabaka la Mawasiliano ya Sauti ndilo msingi. Linashughulikia upokeaji wa maikrofoni, upunguzaji wa kelele, uondoaji wa mwangwi (echo cancellation), na utumaji wa paketi kupitia mtandao. Ifikirie kama laini ya simu ya kidijitali. Ikiwa tabaka hili litapoteza paketi au kuleta mtikisiko (jitter), sehemu nyingine za mtiririko zitafanya kazi na takwimu zisizoeleweka. Timu nyingi hutumia WebRTC hapa kwa sababu inashughulikia miunganisho ya peer-to-peer na inajumuisha ulinzi wa sauti uliomo ndani.

Kufuatia hilo ni Speech-to-Text (STT). Unahitaji kubadilisha sauti inayokuja kuwa maneno ya maandishi haraka iwezekanavyo. Injini za STT za mtiririko (streaming) hazisubiri kimya. Hutuma nakala za sehemu ya maandishi wakati silabi zinapofika. Tabia hii ni muhimu sana. Ikiwa moduli yako ya STT itahifadhi data (buffer) mpaka isikie pumziko, tayari umepoteza milisekunde za thamani. Utekelezaji wa kisasa wa mtiririko huchakata sauti inayokuja mfululizo na kurekebisha makadirio yao kadiri muktadha unavyoongezeka.

Machine Translation (MT) inakaa katikati. Inachukua maandishi ghafi na kuyaandika upya katika lugha inayolengwa. Mifumo ya awali ilifanya zaidi ya kubadilisha sentensi chache. Mifano ya sasa inayotegemea 'transformer' inashughulikia sarufi na uhusiano wa maneno ya mbali vizuri zaidi, lakini bado inahitaji ushirikishaji makini. Unahitaji moduli ya MT inayokubali ingizo la mtiririko ili iweze kuanza kutafsiri vipande vya sentensi kabla mzungumzaji hajaimaliza fikra yake.

Kisha kuna Text-to-Speech (TTS). Hapa ndipo mfumo wako unapopata sauti yake. TTS za zamani za 'concatenative' zilikuwa zinatamka kama GPS inayotangaza njia ya kutoka barabarani. Mifano ya Neural TTS ilibadilisha mchezo kwa kutabiri 'spectrograms' au mawimbi ghafi (raw waveforms) moja kwa moja. Hutoa sauti zinazopanda, kushuka, na kupumua. Pia zinaweza kuhifadhi rangi fulani ya kihisia, jambo ambalo ni muhimu kwa sababu ombi la radhi lisilo na hisia lililotolewa kwa sauti ya roboti linaweza kusikika kama kejeli bila kukusudia.

Mwishowe, tabaka la Audio Streaming hutuma sauti iliyotafsiriwa kwa msikilizaji. Wakati pia ni muhimu hapa. Sauti iliyotengenezwa lazima iendane na wakati wa mtandao ili isifike mapema na kutengeneza mwangwi, au kuchelewa na kumwacha msikilizaji akisubiri kwa kimya.

Tatizo la Latency (Ucheleweshaji)

Latency ndiye adui yako mkubwa. Mazungumzo ya kibinadamu yanavumilia tu mapengo mafupi. Ikiwa mfumo utasubiri mtumiaji amalize sentensi nzima kabla ya kuanza kutafsiri, mwingiliano utahisi kuwa wa polepole na uliovunjika. Watu huanza kuzungumza kwa wakati mmoja, au mbaya zaidi, wanaingia katika mdundo wa mazungumzo ya walkie-talkie. Lengo lako linapaswa kuwa latency ya jumla chini ya sekunde moja kuanzia mwanzo hadi mwisho.

Ili kufikia lengo hilo, lazima uchakate saudio katika vipande vidogo (chunks). Weka ukubwa wa vipande kati ya milisekunde 20 na milisekunde 100. Milisekunde ishirini inakamata takriban muda wa sauti ya konsonanti moja. Milisekunde mia moja inahusu takriban silabi moja na nusu. Ingiza vipande hivi kwenye mtiririko wa streaming ili STT, tafsiri, na TTS vyote vifanye kazi kwa kutumia taarifa za sehemu. Hakuna kinachopaswa kusubiri mwisho wa sentensi.

Tumia uchakataji wa sauti wa mtiririko (streaming) katika kila hatua. Hiyo inamaanisha injini ya STT hutuma nakala za sehemu mfululizo, injini ya MT hutafsiri vipande mara tu inapopokea maneno ya kutosha kuunda kishazi chenye mantiki, na injini ya TTS huanza kuzungumza nusu ya kwanza ya sentensi wakati nusu ya pili bado inatafsiriwa.

Kufikia latency ya chini ya sekunde moja kunahitaji nidhamu katika kila hatua: upokeaji, uwekaji nambari (encode), utumaji, foleni, uchakataji, utengenezaji, na uchezaji. Ondoa uwekaji kwenye 'buffer' usio wa lazima katika kila hatua. Kwa mfano, epuka kuendesha algoriti za kuondoa kelele zinazohitaji nusu sekunde ya kuangalia mbele (lookahead) isipokuwa kama ni lazima kabisa. Tumia itifaki za ukomizationi bora kama Opus badala ya PCM ghafi. Endesha uchambuzi (inference) kwenye seva za 'edge' zilizo karibu kijiografia na wapiga simu wote wawili ili safari za mtandao (round trips) ziwe fupi.

Mahali Ambapo Mifano ya AI Bado Inapata Ugumu

AI inaleta vikwazo maalum ambavyo watafsiri wa kawaida wa 'clipboard' hawakuwahi kukabiliana navyo.

Muktadha ni mgumu kweli. Katika Kiingereza, neno 'duck' linaweza kuwa mnyama, kitenzi kinachomaanisha kuinama, au hata neno la mahaba katika lahaja fulani. Injini inayoliona neno hilo peke yake itakisia vibaya. Kuongezeka kwa mtiririko (streaming amplification) kunaifanya hali hii kuwa ngumu zaidi kwa sababu mfumo lazima uamue neno kabla ya sentensi nzima kueleza maana yake. Baadhi ya timu hushughulikia hili kwa kuweka madirisha madogo ya kurudisha nyuma (rollback windows) kwenye injini ya STT, hali inayoiwezesha kurekebisha nakala ya maandishi (transcript) ikiwa sauti inayofuata itabadilisha tafsiri.

Asili ya sauti ni muhimu zaidi kuliko wahandisi wengi wanavyotarajia. Watu wanachukia sauti za roboti. Mifano ya Neural TTS huweka hisia katika sauti kwa kunakili mifumo ya mdundo (prosody patterns) kutoka kwenye mazungumzo ya binadamu. Ikiwa mzungumzaji wa awali anaonekana mwenye msisimko au wasiwasi, matokeo yaliyotafsiriwa yanapaswa kubeba baadhi ya nishati hiyo badala ya kusoma kila mstari kama ripoti ya hali ya hewa. Kupitisha ishara za alama za uandishi au alama za mabadiliko ya sauti (intonation markers) kutoka kwenye sauti ya chanzo kwenda kwenye moduli ya TTS husaidia kuhifadhi ule uhalisia wa kibinadamu.

Mazungumzo mara nyingi si nadhifu. Watu hujikatisha maneno, hurudi nyuma, husema "uh," na kuanza sentensi ambazo hawazimalizi. Mfumo wako unahitaji Voice Activity Detection (VAD) ili kushughulikia mivurugiko hii kwa akili. VAD nzuri hutofautisha kati ya mazungumzo halisi na kelele za nyuma, lakini pia kati ya pumzi fupi ndani ya mzunguko wa mazungumzo na mwisho halisi wa mzunguko huo. Ikiwa VAD itachochea haraka sana, itakata mwanzo wa majibu. Ikiwa itakuwa tahadhari sana, itatuma ukimya kupitia injini ya tafsiri, ikipoteza uwezo wa kompyuta (compute) na kuingiza mapengo ya ajabu katika mtiririko.

Ukubwa na Usalama

Jenga kwa ajili ya uwezo wa kutanuka (scale) tangu mchoro wa kwanza wa usanifu. Mfumo mmoja mkubwa (monolith) unaotafsiri simu moja kwa ufasaha utaporomoka chini ya mzigo wa mazungumzo elfu yanayoendelea kwa wakati mmoja. Tumia microservices ili uweze kukuza kila hatua kwa kujitegemea. Ikiwa foleni yako ya TTS itajaa kwa sababu lugha moja inahitaji ugumu zaidi wa kifonitiki kuliko nyingine, unaweza kuongeza watendaji (workers) zaidi wa TTS bila kugusa kikundi cha STT. Ikiwa huduma yako ya MT itapata shida kwenye jozi fulani ya lugha, unaweza kuitenga na kukuza sehemu hiyo pekee.

Usalama ni jambo lisiloweza kujadiliwa. Data ya sauti ni ya kibayometriki na ni ya kibinafsi sana. Tumia ufungaji wa siri wa mwisho hadi mwisho (end-to-end encryption) kulinda sauti ghafi wakati inasafirishwa. Usihifadhi data ghafi ya sauti isipokuwa uwe na sababu maalum iliyoelezwa, kama vile ridhaa ya wazi ya mtumiaji kwa ajili ya uboreshaji wa modeli. Hata hivyo, hifadhi rekodi zikiwa zimefungwa kwa siri na uzifute kwa ratiba kali. Mfumo wa tafsiri ya sauti unaovuja maudhui ya simu au unaohifadhi mazungumzo kwa siri unaharibu uaminifu wa mtumiaji moja kwa moja.

Anza Kujenga

Watengenezaji sasa wana ufikiaji wa mifano ya STT ya chanzo huria (open-source), API za MT zinazotegemea wingu, na vituo vya neural TTS vilivyofundishwa tayari (pretrained neural TTS checkpoints) ambavyo vilikuwa vigumu kupata hata miaka michache iliyopita. Vipande vipo. Usanifu umeeleweka.

Anza kidogo. Pitisha sekunde mbili za sauti ya maikrofoni kupitia injini ya streaming STT