Android uchun Telegram 13.0.3 beta versiyasida (7179-yigʻin) yozilgan ovozli xabarni matn sifatida yuborish mumkin edi: pauza tugmasi yonidagi «Aa» tugmasi yozuvni yuborishdan oldin transkripsiya qilgan, va foydalanuvchi suhbatdoshiga nima yuborilishini tanlagan — matn yoki ovozning oʻzi. Bu funksiya faqat Premium bilan mavjud ekanligi qayd etilgan. Keyinchalik, beta versiyasidagi transkripsiya olib tashlandi, chunki u ishlab chiquvchilardan birining vaqtinchalik tajribasi edi; xuddi shu yigʻinning ikkinchi yangiligi qoldi — RNNoise neyrotarmogʻida shovqinni bostirish bilan ovozli xabarlarni eksperimental yozish. Bu beta versiyasini oʻrnatganlarga tegishli: stabil 13.0.2 versiyasida ikkalasi ham yoʻq.
Beta versiyasida bu qanday koʻrinishda edi
«Aa» tugmasi qulflangan yozish rejimida paydo boʻlgan — yaʼni yozish paytida barmoq mikrofon belgisidan yuqoriga surilganda va yozish ushlab turmasdan davom etganda. «Aa» tugmasini bosish transkripsiyani koʻrsatgan, keyin nima yuborishni tanlash qolgan. Agar ovozli xabar qoʻshimcha yozilgan yoki kesilgan boʻlsa, beta uni qayta transkripsiya qilishni taklif qilgan.
Shovqinni bostirish bilan yozish beta versiyasining eksperimental sozlamalarida yoqiladi. Shovqin ovozdan u Opus formatiga siqilishidan oldin olib tashlanadi — Telegram ovozli xabarlarni saqlaydigan va uzatadigan format. Xuddi shu yigʻindagi ogohlantirish: shovqinni bostirish musiqa va juda past ovozli nutq yozuvini buzishi mumkin. Bu rejimda ovozli xabarda kuy kuylash yomon fikr: tarmoq uchun musiqa shovqin boʻlib koʻrinadi, sababi quyida.
Nima uchun yuborishdan oldin transkripsiya — yangi mexanika
Telegramda ovozli xabarlarni transkripsiya qilish ancha vaqtdan beri mavjud, ammo faqat chatda allaqachon mavjud boʻlgan xabarlar uchun. Uni server amalga oshiradi: mijoz messages.transcribeAudio metodini chaqiradi, va bu metodning ikkita parametri bor — chat va undagi xabar raqami. Javob transkripsiya identifikatori va matn bilan keladi; uzun yozuv «ishda» belgisi bilan qaytishi mumkin, va keyin matn alohida updateTranscribedAudio yangilanishlari bilan toʻldiriladi.
Yuborilmagan yozuvda xabar raqami yoʻq, shuning uchun bu metod unga qoʻllanilmaydi. Faylning oʻzini qabul qiladigan metod na ommaviy API sxemasida (TDLib 8-oktabr holatiga koʻra), na 231-qavatli 13.0.2 Android manba kodlarida mavjud emas. Androidning tizim nutqni aniqlash vositasi (android.speech) 13.0.2 kodida ham ishlatilmaydi.
Beta bu cheklovni qanday chetlab oʻtgani ochiq artefaktlarda koʻrinmaydi: 13.0.3 yigʻinining manba kodlari eʼlon qilinmagan, repozitoriy 13-oktabrda chiqarilgan 13.0.2 (7175) bilan tugaydi. Yangi tugmaning satrlari tarjima platformasida ham yoʻq — bu shaxsiy tajriba versiyasi bilan mos keladi, u lokalizatsiyaga yetib bormagan. Koddan olingan fakt emas, balki gipoteza: aniqlash yo server metodi orqali amalga oshirilgan, u hali ommaviy sxemada yoʻq, yoki qurilmaning oʻzida.
Hozir kimga transkripsiya mavjud
Qabul qilingan ovozli xabarlar uchun qoidalar mijoz kodida koʻrinadi. Cheklovlarsiz transkripsiya Premiumga kiradi — obuna tavsifida bu har qanday kiruvchi ovozli xabarni transkripsiya qilish haqidagi satrdir. Premium boʻlmagan holda server sinov transkripsiyalarini beradi: ularning haftalik soni va yozuvning maksimal uzunligini mijoz server konfiguratsiyasidan oʻqiydi, transcribe_audio_trial_weekly_number va transcribe_audio_trial_duration_max kalitlari orqali. Oktabr konfiguratsiya suratlarida uzunlik chegarasi — 300 soniya, haftalik sinovlar soni 0 dan 2 gacha oʻzgargan. Sinovlar tugaganda, mijoz kutish kerak boʻlgan sanani koʻrsatadi yoki Premiumni taklif qiladi.
RNNoise qanday ishlaydi
RNNoise — Xiph.Org tomonidan BSD litsenziyasi ostida chiqarilgan ochiq shovqinni bostirish kutubxonasi. Muallif — Jean-Marc Valin, Opus kodekining yaratuvchilaridan biri; qurilma uning 2017-yildagi maqolasida tasvirlangan.
Yondashuv gibrid. Klassik signalni qayta ishlash ovozni 10 ms (48 kHz da 480 namunalar) kadrlariga boʻladi va har bir kadrning spektrini 22 chastota polosiga ajratadi, bu polosalarning kengligi quloq chastotalarni qanday ajratishiga yaqin. Oldingi kadrlar eslab qoladigan kichik rekurrent tarmoq polosalarning xususiyatlariga qaraydi va har biri uchun 0 dan 1 gacha koeffitsiyent beradi: bu polosada qancha energiya qoldirish kerak. Alohida ton balandligi filtri ovoz garmoniklari orasidagi shovqinni tozalaydi. Shu bilan birga, tarmoq kadrda umuman nutq borligi ehtimolini beradi.
Tarmoq yuzlab chastota namunalarini emas, balki 22 koeffitsiyentni boshqaradi, shuning uchun u kichik va telefon protsessorida real vaqtda ishlaydi. Boshqa tomoni — u nutqni shovqindan ajratishga oʻrgatilgan, va nutqqa oʻxshamaydigan hamma narsani shovqin deb hisoblaydi. Musiqa haqidagi ogohlantirish shundan kelib chiqadi; past ovoz ham xuddi shu sababga koʻra yoʻqoladi — uning polosalardagi xususiyatlari fonnikiga yaqin.
RNNoise ilovada allaqachon mavjud edi
Kutubxonani qoʻshish shart emas edi. Manba kodlari Android-mijozining repozitoriysida jni/voip/rnnoise joylashgan, statik kutubxonaga yigʻiladi va ilovaning asosiy mahalliy kutubxonasiga oʻrnatiladi. U shu paytgacha videochatlarda ishlagan: qoʻngʻiroq moduli mikrofondan har bir kadrni RNNoise orqali oʻtkazadi, soʻzlovchi indikatori uchun nutq bahosini oladi va videochat sozlamalarida «Shovqinni bostirish» yoqilgan boʻlsa, ovozni tozalanganiga almashtiradi.
Mijoz ovozli xabarlarni mikrofondan 48 kHz chastotada monoda yozadi va Opus kodeki bilan ovoz rejimi uchun siqadi. Yozish chastotasi RNNoise ishlaydigan chastota bilan mos keladi, shuning uchun beta tajribasi mikrofon va kodek oʻrtasidagi bitta boʻgʻinga — videochatlarda ancha vaqtdan beri mavjud boʻlgan boʻgʻinga — qisqaradi.




